diff --git a/res/layout/dialog_edittext_dropdown.xml b/res/layout/dialog_edittext_dropdown.xml new file mode 100644 index 00000000000..0e77968023a --- /dev/null +++ b/res/layout/dialog_edittext_dropdown.xml @@ -0,0 +1,42 @@ + + + + + + + + + diff --git a/res/layout/tare_homepage.xml b/res/layout/tare_homepage.xml index ddc93337314..4cd649f189e 100644 --- a/res/layout/tare_homepage.xml +++ b/res/layout/tare_homepage.xml @@ -27,7 +27,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" - android:text="On" + android:textOff="@string/tare_off" + android:textOn="@string/tare_on" + android:showText="true" android:background="?android:attr/colorBackground" /> TARE Settings + + On + + Off Revert to Default Settings - Rewards for total event duration + Rewards per second of event duration Maximum Rewards Per Day @@ -14075,6 +14079,13 @@ Confirm + + + ARC + Cake + + Preview diff --git a/src/com/android/settings/development/tare/AlarmManagerFragment.java b/src/com/android/settings/development/tare/AlarmManagerFragment.java index 980954d7bf9..b9de81db62a 100644 --- a/src/com/android/settings/development/tare/AlarmManagerFragment.java +++ b/src/com/android/settings/development/tare/AlarmManagerFragment.java @@ -98,6 +98,7 @@ public class AlarmManagerFragment extends Fragment implements resources.getString(R.string.tare_actions_ctp), resources.getString(R.string.tare_actions_base_price), resources.getString(R.string.tare_rewards_instantaneous), + resources.getString(R.string.tare_rewards_ongoing), resources.getString(R.string.tare_rewards_max) }; @@ -109,6 +110,7 @@ public class AlarmManagerFragment extends Fragment implements resources.getStringArray(R.array.tare_alarm_manager_actions), resources.getStringArray(R.array.tare_alarm_manager_actions), resources.getStringArray(R.array.tare_rewards_subfactors), + {resources.getString(R.string.tare_top_activity)}, resources.getStringArray(R.array.tare_rewards_subfactors) }; @@ -150,12 +152,13 @@ public class AlarmManagerFragment extends Fragment implements EconomyManager.KEY_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE }, { - EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_MAX, - EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_MAX, - EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_MAX, - EconomyManager.KEY_AM_REWARD_WIDGET_INTERACTION_MAX, - EconomyManager.KEY_AM_REWARD_OTHER_USER_INTERACTION_MAX, + EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_INSTANT, + EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_INSTANT, + EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT, + EconomyManager.KEY_AM_REWARD_WIDGET_INTERACTION_INSTANT, + EconomyManager.KEY_AM_REWARD_OTHER_USER_INTERACTION_INSTANT, }, + {EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_ONGOING}, { EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_MAX, EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_MAX, diff --git a/src/com/android/settings/development/tare/JobSchedulerFragment.java b/src/com/android/settings/development/tare/JobSchedulerFragment.java index bffd648c6be..4c5fcc69724 100644 --- a/src/com/android/settings/development/tare/JobSchedulerFragment.java +++ b/src/com/android/settings/development/tare/JobSchedulerFragment.java @@ -99,7 +99,7 @@ public class JobSchedulerFragment extends Fragment implements resources.getString(R.string.tare_actions_ctp), resources.getString(R.string.tare_actions_base_price), resources.getString(R.string.tare_rewards_instantaneous), - // resources.getString(R.string.tare_rewards_ongoing), + resources.getString(R.string.tare_rewards_ongoing), resources.getString(R.string.tare_rewards_max) }; @@ -111,7 +111,7 @@ public class JobSchedulerFragment extends Fragment implements resources.getStringArray(R.array.tare_job_scheduler_actions), resources.getStringArray(R.array.tare_job_scheduler_actions), resources.getStringArray(R.array.tare_rewards_subfactors), - // {resources.getString(R.string.tare_top_activity)}, + {resources.getString(R.string.tare_top_activity)}, resources.getStringArray(R.array.tare_rewards_subfactors) }; @@ -154,13 +154,13 @@ public class JobSchedulerFragment extends Fragment implements EconomyManager.KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE }, { - EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_MAX, - EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_MAX, - EconomyManager.KEY_JS_REWARD_NOTIFICATION_INTERACTION_MAX, - EconomyManager.KEY_JS_REWARD_WIDGET_INTERACTION_MAX, - EconomyManager.KEY_JS_REWARD_OTHER_USER_INTERACTION_MAX, + EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_INSTANT, + EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_INSTANT, + EconomyManager.KEY_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT, + EconomyManager.KEY_JS_REWARD_WIDGET_INTERACTION_INSTANT, + EconomyManager.KEY_JS_REWARD_OTHER_USER_INTERACTION_INSTANT, }, - // {EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_ONGOING}, + {EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_ONGOING}, { EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_MAX, EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_MAX, diff --git a/src/com/android/settings/development/tare/TareFactorController.java b/src/com/android/settings/development/tare/TareFactorController.java index 62fde6d4829..57723927510 100644 --- a/src/com/android/settings/development/tare/TareFactorController.java +++ b/src/com/android/settings/development/tare/TareFactorController.java @@ -16,6 +16,12 @@ package com.android.settings.development.tare; +import static android.app.tare.EconomyManager.CAKE_IN_ARC; +import static android.app.tare.EconomyManager.DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE_CAKES; +import static android.app.tare.EconomyManager.DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE_CAKES; +import static android.app.tare.EconomyManager.DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP_CAKES; +import static android.app.tare.EconomyManager.DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE_CAKES; +import static android.app.tare.EconomyManager.parseCreditValue; import static android.provider.Settings.Global.TARE_ALARM_MANAGER_CONSTANTS; import static android.provider.Settings.Global.TARE_JOB_SCHEDULER_CONSTANTS; @@ -93,182 +99,180 @@ public class TareFactorController { private void initAlarmManagerMap() { mAlarmManagerMap.put(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, new TareFactorData(mResources.getString(R.string.tare_min_balance_exempted), - EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED, + EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP, new TareFactorData(mResources.getString(R.string.tare_min_balance_headless_app), - EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP, + EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, new TareFactorData(mResources.getString(R.string.tare_min_balance_other_app), - EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP, + EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, new TareFactorData(mResources.getString(R.string.tare_max_satiated_balance), - EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE, + EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_INITIAL_CONSUMPTION_LIMIT, new TareFactorData(mResources.getString(R.string.tare_initial_consumption_limit), - EconomyManager.DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT, + EconomyManager.DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_HARD_CONSUMPTION_LIMIT, new TareFactorData(mResources.getString(R.string.tare_hard_consumption_limit), - EconomyManager.DEFAULT_AM_HARD_CONSUMPTION_LIMIT, + EconomyManager.DEFAULT_AM_HARD_CONSUMPTION_LIMIT_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_INSTANT, new TareFactorData(mResources.getString(R.string.tare_top_activity), - EconomyManager.DEFAULT_AM_REWARD_TOP_ACTIVITY_INSTANT, + EconomyManager.DEFAULT_AM_REWARD_TOP_ACTIVITY_INSTANT_CAKES, + POLICY_ALARM_MANAGER)); + mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_ONGOING, + new TareFactorData(mResources.getString(R.string.tare_top_activity), + EconomyManager.DEFAULT_AM_REWARD_TOP_ACTIVITY_ONGOING_CAKES, POLICY_ALARM_MANAGER)); - // TODO: Add support to handle floats - // mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_ONGOING, - // new TareFactorData(mResources.getString(R.string.tare_top_activity), - // EconomyManager.DEFAULT_AM_REWARD_TOP_ACTIVITY_ONGOING)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_TOP_ACTIVITY_MAX, new TareFactorData(mResources.getString(R.string.tare_top_activity), - EconomyManager.DEFAULT_AM_REWARD_TOP_ACTIVITY_MAX, POLICY_ALARM_MANAGER)); + EconomyManager.DEFAULT_AM_REWARD_TOP_ACTIVITY_MAX_CAKES, + POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_INSTANT, new TareFactorData(mResources.getString(R.string.tare_notification_seen), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_INSTANT, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_INSTANT_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_ONGOING, new TareFactorData(mResources.getString(R.string.tare_notification_seen), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_ONGOING, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_ONGOING_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_MAX, new TareFactorData(mResources.getString(R.string.tare_notification_seen), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_MAX, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_MAX_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_INSTANT, new TareFactorData(mResources.getString(R.string.tare_notification_seen_15_min), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_INSTANT, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_INSTANT_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_ONGOING, new TareFactorData(mResources.getString(R.string.tare_notification_seen_15_min), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_ONGOING, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_ONGOING_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_MAX, new TareFactorData(mResources.getString(R.string.tare_notification_seen_15_min), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_MAX, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_SEEN_WITHIN_15_MAX_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT, new TareFactorData(mResources.getString(R.string.tare_notification_interaction), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_ONGOING, new TareFactorData(mResources.getString(R.string.tare_notification_interaction), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_ONGOING, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_ONGOING_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_MAX, new TareFactorData(mResources.getString(R.string.tare_notification_interaction), - EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_MAX, + EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_MAX_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_WIDGET_INTERACTION_INSTANT, new TareFactorData(mResources.getString(R.string.tare_widget_interaction), - EconomyManager.DEFAULT_AM_REWARD_WIDGET_INTERACTION_INSTANT, + EconomyManager.DEFAULT_AM_REWARD_WIDGET_INTERACTION_INSTANT_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_WIDGET_INTERACTION_ONGOING, new TareFactorData(mResources.getString(R.string.tare_widget_interaction), - EconomyManager.DEFAULT_AM_REWARD_WIDGET_INTERACTION_ONGOING, + EconomyManager.DEFAULT_AM_REWARD_WIDGET_INTERACTION_ONGOING_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_WIDGET_INTERACTION_MAX, new TareFactorData(mResources.getString(R.string.tare_widget_interaction), - EconomyManager.DEFAULT_AM_REWARD_WIDGET_INTERACTION_MAX, + EconomyManager.DEFAULT_AM_REWARD_WIDGET_INTERACTION_MAX_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_OTHER_USER_INTERACTION_INSTANT, new TareFactorData(mResources.getString(R.string.tare_other_interaction), - EconomyManager.DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_INSTANT, + EconomyManager.DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_INSTANT_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_OTHER_USER_INTERACTION_ONGOING, new TareFactorData(mResources.getString(R.string.tare_other_interaction), - EconomyManager.DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_ONGOING, + EconomyManager.DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_ONGOING_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_REWARD_OTHER_USER_INTERACTION_MAX, new TareFactorData(mResources.getString(R.string.tare_other_interaction), - EconomyManager.DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_MAX, + EconomyManager.DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_MAX_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_CTP, new TareFactorData(mResources.getString(R.string.tare_wakeup_exact_idle), - EconomyManager.DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_CTP, + EconomyManager + .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_CTP, new TareFactorData(mResources.getString(R.string.tare_wakeup_inexact_idle), EconomyManager - .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_CTP, + .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_EXACT_WAKEUP_CTP, new TareFactorData(mResources.getString(R.string.tare_wakeup_exact), - EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_CTP, + EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP, new TareFactorData(mResources.getString(R.string.tare_wakeup_inexact), - EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP, + EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put( EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_CTP, new TareFactorData(mResources.getString(R.string.tare_nonwakeup_exact_idle), EconomyManager - .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_CTP, + .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_EXACT_NONWAKEUP_CTP, new TareFactorData(mResources.getString(R.string.tare_nonwakeup_exact), - EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_NONWAKEUP_CTP, + EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_NONWAKEUP_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put( EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP, new TareFactorData(mResources.getString(R.string.tare_nonwakeup_inexact_idle), - EconomyManager - .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP, + DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP, new TareFactorData(mResources.getString(R.string.tare_nonwakeup_inexact), - EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP, + EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_ALARMCLOCK_CTP, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager.DEFAULT_AM_ACTION_ALARM_ALARMCLOCK_CTP, + EconomyManager.DEFAULT_AM_ACTION_ALARM_ALARMCLOCK_CTP_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put( EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager - .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE, + DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put( EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager - .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE, + DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE, + EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE, + EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put( EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE, + EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_EXACT_NONWAKEUP_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE, + EconomyManager.DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put( EconomyManager.KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager - .DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE, + DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_BASE_PRICE, + EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); mAlarmManagerMap.put(EconomyManager.KEY_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_alarm_clock), - EconomyManager.DEFAULT_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE, + EconomyManager.DEFAULT_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE_CAKES, POLICY_ALARM_MANAGER)); } @@ -279,180 +283,181 @@ public class TareFactorController { private void initJobSchedulerMap() { mJobSchedulerMap.put(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, new TareFactorData(mResources.getString(R.string.tare_min_balance_exempted), - EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED, + EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP, new TareFactorData(mResources.getString(R.string.tare_min_balance_headless_app), - EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP, + EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, new TareFactorData(mResources.getString(R.string.tare_min_balance_other_app), - EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP, + EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, new TareFactorData(mResources.getString(R.string.tare_max_satiated_balance), - EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE, + EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_INITIAL_CONSUMPTION_LIMIT, new TareFactorData(mResources.getString(R.string.tare_initial_consumption_limit), - EconomyManager.DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT, + EconomyManager.DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_HARD_CONSUMPTION_LIMIT, new TareFactorData(mResources.getString(R.string.tare_hard_consumption_limit), - EconomyManager.DEFAULT_JS_HARD_CONSUMPTION_LIMIT, + EconomyManager.DEFAULT_JS_HARD_CONSUMPTION_LIMIT_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_INSTANT, new TareFactorData(mResources.getString(R.string.tare_top_activity), - EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_INSTANT, + EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_INSTANT_CAKES, + POLICY_JOB_SCHEDULER)); + mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_ONGOING, + new TareFactorData(mResources.getString(R.string.tare_top_activity), + EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_ONGOING_CAKES, POLICY_JOB_SCHEDULER)); - // TODO: Add support to handle floats - // mAlarmManagerMap.put(EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_ONGOING, - // new TareFactorData(mResources.getString(R.string.tare_top_activity), - // EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_ONGOING)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_MAX, new TareFactorData(mResources.getString(R.string.tare_top_activity), - EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_MAX, POLICY_JOB_SCHEDULER)); + EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_MAX_CAKES, + POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_INSTANT, new TareFactorData(mResources.getString(R.string.tare_notification_seen), - EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_INSTANT, + EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_INSTANT_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_ONGOING, new TareFactorData(mResources.getString(R.string.tare_notification_seen), - EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_ONGOING, + EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_ONGOING_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_MAX, new TareFactorData(mResources.getString(R.string.tare_notification_seen), - EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_MAX, + EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_MAX_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT, new TareFactorData(mResources.getString(R.string.tare_notification_interaction), - EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT, + EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING, new TareFactorData(mResources.getString(R.string.tare_notification_interaction), - EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING, + EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_INTERACTION_MAX, new TareFactorData(mResources.getString(R.string.tare_notification_interaction), - EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_MAX, + EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_MAX_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_WIDGET_INTERACTION_INSTANT, new TareFactorData(mResources.getString(R.string.tare_widget_interaction), - EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_INSTANT, + EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_INSTANT_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_WIDGET_INTERACTION_ONGOING, new TareFactorData(mResources.getString(R.string.tare_widget_interaction), - EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_ONGOING, + EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_ONGOING_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_WIDGET_INTERACTION_MAX, new TareFactorData(mResources.getString(R.string.tare_widget_interaction), - EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_MAX, + EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_MAX_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_OTHER_USER_INTERACTION_INSTANT, new TareFactorData(mResources.getString(R.string.tare_other_interaction), - EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_INSTANT, + EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_INSTANT_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_OTHER_USER_INTERACTION_ONGOING, new TareFactorData(mResources.getString(R.string.tare_other_interaction), - EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_ONGOING, + EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_ONGOING_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_OTHER_USER_INTERACTION_MAX, new TareFactorData(mResources.getString(R.string.tare_other_interaction), - EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_MAX, + EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_MAX_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MAX_START_CTP, new TareFactorData(mResources.getString(R.string.tare_job_max_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_START_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_START_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MAX_RUNNING_CTP, new TareFactorData(mResources.getString(R.string.tare_job_max_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_RUNNING_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_RUNNING_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_HIGH_START_CTP, new TareFactorData(mResources.getString(R.string.tare_job_high_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_START_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_START_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_HIGH_RUNNING_CTP, new TareFactorData(mResources.getString(R.string.tare_job_high_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_START_CTP, new TareFactorData(mResources.getString(R.string.tare_job_default_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_START_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_START_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_RUNNING_CTP, new TareFactorData(mResources.getString(R.string.tare_job_default_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_LOW_START_CTP, new TareFactorData(mResources.getString(R.string.tare_job_low_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_START_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_START_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put( EconomyManager.KEY_JS_ACTION_JOB_LOW_RUNNING_CTP, new TareFactorData(mResources.getString(R.string.tare_job_low_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_RUNNING_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_RUNNING_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MIN_START_CTP, new TareFactorData(mResources.getString(R.string.tare_job_min_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_START_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_START_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put( EconomyManager.KEY_JS_ACTION_JOB_MIN_RUNNING_CTP, new TareFactorData(mResources.getString(R.string.tare_job_min_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_RUNNING_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_RUNNING_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP, new TareFactorData(mResources.getString(R.string.tare_job_timeout_penalty), - EconomyManager.DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP, + EconomyManager.DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MAX_START_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_max_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_START_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_START_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put( EconomyManager.KEY_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_max_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put( EconomyManager.KEY_JS_ACTION_JOB_HIGH_START_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_high_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_START_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_START_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_high_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_default_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put( EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_default_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_LOW_START_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_low_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_START_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_START_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put( EconomyManager.KEY_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_low_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MIN_START_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_min_start), - EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_START_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_START_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_min_running), - EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE, new TareFactorData(mResources.getString(R.string.tare_job_timeout_penalty), - EconomyManager.DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE, + EconomyManager.DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE_CAKES, POLICY_JOB_SCHEDULER)); } @@ -480,7 +485,7 @@ public class TareFactorController { for (int i = map.size() - 1; i >= 0; --i) { final String key = map.keyAt(i); final TareFactorData data = map.valueAt(i); - data.currentValue = mParser.getInt(key, data.defaultValue); + data.currentValue = parseCreditValue(mParser.getString(key, null), data.defaultValue); } } @@ -513,7 +518,7 @@ public class TareFactorController { * @param key the key of the factor you want to get the default value of * @param factorPolicy the policy you want the current value of */ - private int getCurrentValue(String key, int factorPolicy) { + private long getCurrentValue(String key, int factorPolicy) { final ArrayMap currentMap = getMap(factorPolicy); return currentMap.get(key).currentValue; } @@ -535,7 +540,7 @@ public class TareFactorController { return currentMap.get(key).factorPolicy; } - int getValue(String key) { + long getValue(String key) { final int policy = getFactorType(key); return getCurrentValue(key, policy); } @@ -548,7 +553,7 @@ public class TareFactorController { * @param editedValue the value entered by the user in the dialog * @param factorPolicy policy being updated */ - public void updateValue(String key, int editedValue, int factorPolicy) { + public void updateValue(String key, long editedValue, int factorPolicy) { final ArrayMap map = getMap(factorPolicy); final TareFactorData data = map.get(key); @@ -592,8 +597,16 @@ public class TareFactorController { constantsStringBuilder .append(factorMap.keyAt(i)) - .append("=") - .append(factor.currentValue); + .append("="); + if (factor.currentValue % CAKE_IN_ARC == 0) { + constantsStringBuilder + .append(factor.currentValue / CAKE_IN_ARC) + .append("A"); + } else { + constantsStringBuilder + .append(factor.currentValue) + .append("ck"); + } } Settings.Global.putString(mContentResolver, settingsKey, constantsStringBuilder.toString()); @@ -615,11 +628,11 @@ public class TareFactorController { */ private static class TareFactorData { public final String title; - public final int defaultValue; + public final long defaultValue; public final int factorPolicy; - public int currentValue; + public long currentValue; - TareFactorData(String title, int defaultValue, int factorPolicy) { + TareFactorData(String title, long defaultValue, int factorPolicy) { this.title = title; this.defaultValue = defaultValue; this.factorPolicy = factorPolicy; diff --git a/src/com/android/settings/development/tare/TareFactorDialogFragment.java b/src/com/android/settings/development/tare/TareFactorDialogFragment.java index 8d2f3415651..6d2f5ca3713 100644 --- a/src/com/android/settings/development/tare/TareFactorDialogFragment.java +++ b/src/com/android/settings/development/tare/TareFactorDialogFragment.java @@ -16,6 +16,8 @@ package com.android.settings.development.tare; +import static android.app.tare.EconomyManager.CAKE_IN_ARC; + import android.annotation.NonNull; import android.app.AlertDialog; import android.app.Dialog; @@ -26,7 +28,10 @@ import android.text.InputType; import android.util.Log; import android.view.LayoutInflater; import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.EditText; +import android.widget.Spinner; import com.android.settings.R; import com.android.settings.Utils; @@ -35,39 +40,35 @@ import com.android.settings.Utils; * Dialog Fragment for changing tare factor values */ public class TareFactorDialogFragment extends DialogFragment { - private static final String TAG = "TareDialogFragment"; + // This follows the order in strings.xml:tare_units array. + private static final int UNIT_IDX_ARC = 0; + private static final int UNIT_IDX_CAKE = 1; + private final String mFactorKey; private final String mFactorTitle; - private final int mFactorValue; + private final long mFactorValue; private final int mFactorPolicy; - private int mFactorEditedValue; + private final TareFactorController mTareFactorController; private EditText mFactorValueView; - private TareFactorController mTareFactorController; + private Spinner mUnitSpinner; /** * @param title the title that will show at the top of the Dialog for the Factor * @param key the key of the Factor being initialized. - * @param defaultValue the initial value set for the Factor before any changes + * @param currentValue the current value set for the Factor */ - public TareFactorDialogFragment(@NonNull String title, @NonNull String key, int defaultValue, + public TareFactorDialogFragment(@NonNull String title, @NonNull String key, long currentValue, int factorPolicy, TareFactorController tareFactorController) { mFactorTitle = title; mFactorKey = key; - mFactorValue = defaultValue; + mFactorValue = currentValue; mFactorPolicy = factorPolicy; mTareFactorController = tareFactorController; } - /** - * Gets the current value of the Factor - */ - private String getFactorValue() { - return Integer.toString(mFactorValue); - } - @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -78,15 +79,18 @@ public class TareFactorDialogFragment extends DialogFragment { .setPositiveButton(R.string.tare_dialog_confirm_button_title, (dialog, which) -> { final String stringValue = mFactorValueView.getText().toString(); - mFactorEditedValue = mFactorValue; + long newVal = mFactorValue; try { - mFactorEditedValue = Integer.parseInt(stringValue); + newVal = Long.parseLong(stringValue); + if (mUnitSpinner.getSelectedItemPosition() == UNIT_IDX_ARC) { + // Convert ARC to cake + newVal *= CAKE_IN_ARC; + } } catch (NumberFormatException e) { - Log.e(TAG, "Error converting '" + stringValue + "' to integer. Using " + Log.e(TAG, "Error parsing '" + stringValue + "'. Using " + mFactorValue + " instead", e); } - mTareFactorController.updateValue(mFactorKey, mFactorEditedValue, - mFactorPolicy); + mTareFactorController.updateValue(mFactorKey, newVal, mFactorPolicy); }) .setNegativeButton(android.R.string.cancel, (dialog, which) -> { // When the negative button is clicked do nothing @@ -102,12 +106,58 @@ public class TareFactorDialogFragment extends DialogFragment { private View createDialogView() { final LayoutInflater layoutInflater = (LayoutInflater) getActivity() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View layout = layoutInflater.inflate(R.layout.dialog_edittext, null); + View layout = layoutInflater.inflate(R.layout.dialog_edittext_dropdown, null); mFactorValueView = layout.findViewById(R.id.edittext); mFactorValueView.setInputType(InputType.TYPE_CLASS_NUMBER); - mFactorValueView.setText(getFactorValue()); - Utils.setEditTextCursorPosition(mFactorValueView); + mUnitSpinner = layout.findViewById(R.id.spinner); + final String[] units = getResources().getStringArray(R.array.tare_units); + ArrayAdapter spinnerArrayAdapter = new ArrayAdapter<>( + getActivity(), android.R.layout.simple_spinner_item, units); + mUnitSpinner.setAdapter(spinnerArrayAdapter); + + final int unitIdx; + if (mFactorValue % CAKE_IN_ARC == 0) { + mFactorValueView.setText(String.format("%d", mFactorValue / CAKE_IN_ARC)); + unitIdx = UNIT_IDX_ARC; + } else { + mFactorValueView.setText(String.format("%d", mFactorValue)); + unitIdx = UNIT_IDX_CAKE; + } + mUnitSpinner.setSelection(unitIdx); + mUnitSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + private int mSelectedPosition = unitIdx; + + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + if (mSelectedPosition == position) { + return; + } + mSelectedPosition = position; + final String stringValue = mFactorValueView.getText().toString(); + + try { + long newVal = Long.parseLong(stringValue); + if (mUnitSpinner.getSelectedItemPosition() == UNIT_IDX_ARC) { + // Convert cake to ARC + newVal /= CAKE_IN_ARC; + } else { + // Convert ARC to cake + newVal *= CAKE_IN_ARC; + } + mFactorValueView.setText(String.format("%d", newVal)); + } catch (NumberFormatException e) { + Log.e(TAG, "Error parsing '" + stringValue + "'", e); + } + } + + @Override + public void onNothingSelected(AdapterView parent) { + + } + }); + + Utils.setEditTextCursorPosition(mFactorValueView); return layout; } } diff --git a/src/com/android/settings/development/tare/TareFactorExpandableListAdapter.java b/src/com/android/settings/development/tare/TareFactorExpandableListAdapter.java index 8fe4c058207..79b7d41f9ec 100644 --- a/src/com/android/settings/development/tare/TareFactorExpandableListAdapter.java +++ b/src/com/android/settings/development/tare/TareFactorExpandableListAdapter.java @@ -16,6 +16,8 @@ package com.android.settings.development.tare; +import static android.app.tare.EconomyManager.CAKE_IN_ARC; + import android.annotation.NonNull; import android.annotation.SuppressLint; import android.view.LayoutInflater; @@ -130,12 +132,32 @@ public class TareFactorExpandableListAdapter extends BaseExpandableListAdapter { TextView value = convertView.findViewById(R.id.factor_number); factor.setText(getChild(groupPosition, childPosition).toString()); - value.setText(String.valueOf( + value.setText(cakeToString( mFactorController.getValue(getKey(groupPosition, childPosition)))); return convertView; } + @NonNull + private static String cakeToString(long cakes) { + // Resources.getQuantityString doesn't handle floating point numbers, so doing this manually + if (cakes == 0) { + return "0"; + } + final long sub = cakes % CAKE_IN_ARC; + final long arcs = (int) (cakes / CAKE_IN_ARC); + if (arcs == 0) { + return sub + " c"; + } + StringBuilder sb = new StringBuilder(); + sb.append(arcs); + if (sub > 0) { + sb.append(".").append(String.format("%03d", sub / (CAKE_IN_ARC / 1000))); + } + sb.append(" A"); + return sb.toString(); + } + @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true;