• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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 package com.android.settings.development.tare;
17 
18 import android.annotation.Nullable;
19 import android.app.Fragment;
20 import android.app.tare.EconomyManager;
21 import android.content.res.Resources;
22 import android.os.Bundle;
23 import android.view.LayoutInflater;
24 import android.view.View;
25 import android.view.ViewGroup;
26 import android.widget.ExpandableListView;
27 import android.widget.ExpandableListView.OnChildClickListener;
28 
29 import com.android.settings.R;
30 
31 /**
32  * Creates the AlarmManager fragment to display all the AlarmManager factors
33  * when the AlarmManager policy is chosen in the dropdown TARE menu.
34  */
35 public class AlarmManagerFragment extends Fragment implements
36         TareFactorController.DataChangeListener {
37 
38     private TareFactorController mFactorController;
39 
40     private TareFactorExpandableListAdapter mExpandableListAdapter;
41 
42     private String[] mGroups;
43     private String[][] mChildren;
44     private String[][] mKeys;
45 
46     @Override
onCreate(@ullable Bundle savedInstanceState)47     public void onCreate(@Nullable Bundle savedInstanceState) {
48         super.onCreate(savedInstanceState);
49 
50         mFactorController = TareFactorController.getInstance(getContext());
51         populateArrays();
52     }
53 
54     @Override
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)55     public View onCreateView(LayoutInflater inflater, ViewGroup container,
56             Bundle savedInstanceState) {
57         View v = inflater.inflate(R.layout.tare_policy_fragment, null);
58         ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.factor_list);
59         mExpandableListAdapter = new TareFactorExpandableListAdapter(
60                 mFactorController, LayoutInflater.from(getActivity()), mGroups, mChildren, mKeys);
61         elv.setGroupIndicator(null);
62         elv.setAdapter(mExpandableListAdapter);
63         elv.setOnChildClickListener(new OnChildClickListener() {
64             public boolean onChildClick(ExpandableListView parent, View v,
65                     int groupPosition, int childPosition, long id) {
66                 final String key = mExpandableListAdapter.getKey(groupPosition, childPosition);
67                 mFactorController.createDialog(key).show(getFragmentManager(), key);
68                 return true;
69             }
70         });
71         return v;
72     }
73 
74     @Override
onStart()75     public void onStart() {
76         super.onStart();
77         mFactorController.registerListener(this);
78     }
79 
80     @Override
onStop()81     public void onStop() {
82         mFactorController.unregisterListener(this);
83         super.onStop();
84     }
85 
86     @Override
onDataChanged()87     public void onDataChanged() {
88         mExpandableListAdapter.notifyDataSetChanged();
89     }
90 
populateArrays()91     private void populateArrays() {
92         final Resources resources = getResources();
93 
94         mGroups = new String[]{
95                 resources.getString(R.string.tare_consumption_limits),
96                 resources.getString(R.string.tare_balances),
97                 // resources.getString(R.string.tare_modifiers),
98                 resources.getString(R.string.tare_actions_ctp),
99                 resources.getString(R.string.tare_actions_base_price),
100                 resources.getString(R.string.tare_rewards_instantaneous),
101                 resources.getString(R.string.tare_rewards_ongoing),
102                 resources.getString(R.string.tare_rewards_max)
103         };
104 
105         mChildren = new String[][]{
106                 resources.getStringArray(R.array.tare_consumption_limit_subfactors),
107                 resources.getStringArray(R.array.tare_app_balance_subfactors),
108                 // TODO: support
109                 // resources.getStringArray(R.array.tare_modifiers_subfactors),
110                 resources.getStringArray(R.array.tare_alarm_manager_actions),
111                 resources.getStringArray(R.array.tare_alarm_manager_actions),
112                 resources.getStringArray(R.array.tare_rewards_subfactors),
113                 {resources.getString(R.string.tare_top_activity)},
114                 resources.getStringArray(R.array.tare_rewards_subfactors)
115         };
116 
117         mKeys = new String[][]{
118                 {
119                         EconomyManager.KEY_AM_INITIAL_CONSUMPTION_LIMIT,
120                         EconomyManager.KEY_AM_MIN_CONSUMPTION_LIMIT,
121                         EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT,
122                 },
123                 {
124                         EconomyManager.KEY_AM_MAX_SATIATED_BALANCE,
125                         EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED,
126                         EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
127                         EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP
128                 },
129                 // {},
130                 {
131                         EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_CTP,
132                         EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_CTP,
133                         EconomyManager.KEY_AM_ACTION_ALARM_EXACT_WAKEUP_CTP,
134                         EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP,
135                         EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_CTP,
136                         EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP,
137                         EconomyManager.KEY_AM_ACTION_ALARM_EXACT_NONWAKEUP_CTP,
138                         EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP,
139                         EconomyManager.KEY_AM_ACTION_ALARM_ALARMCLOCK_CTP
140                 },
141                 {
142                         EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE,
143                         EconomyManager
144                                 .KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE,
145                         EconomyManager.KEY_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE,
146                         EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_BASE_PRICE,
147                         EconomyManager
148                                 .KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_BASE_PRICE,
149                         EconomyManager
150                                 .KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE,
151                         EconomyManager.KEY_AM_ACTION_ALARM_EXACT_NONWAKEUP_BASE_PRICE,
152                         EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_BASE_PRICE,
153                         EconomyManager.KEY_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE
154                 },
155                 {
156                         EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_INSTANT,
157                         EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_INSTANT,
158                         EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT,
159                         EconomyManager.KEY_AM_REWARD_WIDGET_INTERACTION_INSTANT,
160                         EconomyManager.KEY_AM_REWARD_OTHER_USER_INTERACTION_INSTANT,
161                 },
162                 {EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_ONGOING},
163                 {
164                         EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_MAX,
165                         EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_MAX,
166                         EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_MAX,
167                         EconomyManager.KEY_AM_REWARD_WIDGET_INTERACTION_MAX,
168                         EconomyManager.KEY_AM_REWARD_OTHER_USER_INTERACTION_MAX,
169                 }
170         };
171     }
172 }
173