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