Home | History | Annotate | Download | only in apps
      1 /*
      2  * Copyright (C) 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.tv.settings.device.apps;
     18 
     19 import com.android.tv.settings.ActionBehavior;
     20 import com.android.tv.settings.ActionKey;
     21 import com.android.tv.settings.R;
     22 import com.android.tv.settings.dialog.old.Action;
     23 
     24 import android.content.res.Resources;
     25 
     26 import java.util.ArrayList;
     27 
     28 /**
     29  * The different possible action types (screens).
     30  */
     31 enum ActionType {
     32     OPEN(new ActionBehavior[] { ActionBehavior.INIT },
     33             R.string.device_apps_app_management_open),
     34     FORCE_STOP(new ActionBehavior[] { ActionBehavior.INIT, ActionBehavior.OK,
     35             ActionBehavior.CANCEL },
     36             R.string.device_apps_app_management_force_stop,
     37             R.string.device_apps_app_management_force_stop_desc),
     38     UNINSTALL(new ActionBehavior[] { ActionBehavior.INIT, ActionBehavior.OK,
     39             ActionBehavior.CANCEL },
     40             R.string.device_apps_app_management_uninstall,
     41             R.string.device_apps_app_management_uninstall_desc),
     42     CLEAR_DATA(new ActionBehavior[] { ActionBehavior.INIT, ActionBehavior.OK,
     43             ActionBehavior.CANCEL },
     44             R.string.device_apps_app_management_clear_data,
     45             R.string.device_apps_app_management_clear_data_desc,
     46             R.string.device_apps_app_management_clear_data_what),
     47     CLEAR_DEFAULTS(new ActionBehavior[] { ActionBehavior.INIT, ActionBehavior.OK,
     48             ActionBehavior.CANCEL },
     49             R.string.device_apps_app_management_clear_default),
     50     CLEAR_CACHE(new ActionBehavior[] { ActionBehavior.INIT, ActionBehavior.OK,
     51             ActionBehavior.CANCEL },
     52             R.string.device_apps_app_management_clear_cache),
     53     NOTIFICATIONS(new ActionBehavior[] { ActionBehavior.INIT, ActionBehavior.ON,
     54             ActionBehavior.OFF },
     55             R.string.device_apps_app_management_notifications),
     56     PERMISSIONS(new ActionBehavior[] { ActionBehavior.INIT },
     57             R.string.device_apps_app_management_permissions);
     58 
     59     private final ActionBehavior[] mBehaviors;
     60     private final int mNameResource;
     61     private final int mDescResource;
     62     private final int mDesc2Resource;
     63 
     64     private ActionType(ActionBehavior[] behaviors, int nameResource) {
     65         this(behaviors, nameResource, 0, 0);
     66     }
     67 
     68     private ActionType(ActionBehavior[] behaviors, int nameResource, int descResource) {
     69         this(behaviors, nameResource, descResource, 0);
     70     }
     71 
     72     private ActionType(
     73             ActionBehavior[] behaviors, int nameResource, int descResource, int desc2Resource) {
     74         mBehaviors = behaviors;
     75         mNameResource = nameResource;
     76         mDescResource = descResource;
     77         mDesc2Resource = desc2Resource;
     78     }
     79 
     80     String getDesc(Resources resources) {
     81         return (mDescResource == 0) ? null : resources.getString(mDescResource);
     82     }
     83 
     84     String getDesc2(Resources resources) {
     85         return (mDesc2Resource == 0) ? null : resources.getString(mDesc2Resource);
     86     }
     87 
     88     Action toInitAction(Resources resources) {
     89         return toInitAction(resources, null);
     90     }
     91 
     92     Action toInitAction(Resources resources, String description) {
     93         return toAction(resources, ActionBehavior.INIT, description);
     94     }
     95 
     96     Action toAction(Resources resources, ActionBehavior actionBehavior, String description) {
     97         return new Action.Builder()
     98                 .key(new ActionKey<ActionType, ActionBehavior>(this, actionBehavior).getKey())
     99                 .title(resources.getString(mNameResource))
    100                 .description(description)
    101                 .build();
    102     }
    103 
    104     ArrayList<Action> toActions(Resources resources) {
    105         ArrayList<Action> actions = new ArrayList<Action>();
    106         for (ActionBehavior behavior : mBehaviors) {
    107             if (behavior != ActionBehavior.INIT) {
    108                 actions.add(behavior.toAction(
    109                         new ActionKey<ActionType, ActionBehavior>(this, behavior).getKey(),
    110                         resources));
    111             }
    112         }
    113         return actions;
    114     }
    115 
    116     ArrayList<Action> toSelectableActions(Resources resources, ActionBehavior selectedBehavior) {
    117         ArrayList<Action> actions = new ArrayList<Action>();
    118         for (ActionBehavior behavior : mBehaviors) {
    119             if (behavior != ActionBehavior.INIT) {
    120                 actions.add(behavior.toAction(
    121                         new ActionKey<ActionType, ActionBehavior>(this, behavior).getKey(),
    122                         resources, (selectedBehavior == behavior)));
    123             }
    124         }
    125         return actions;
    126     }
    127 }
    128