Make it possible to configure the instant and max values of all supported actions. Ongoing rewards will be enabled later. Bug: 158300259 Bug: 189850067 Bug: 191876714 Bug: 191877052 Test: Manual Change-Id: Ia854f18820f3fe95b3b1448c5fa8411853859052
174 lines
7.7 KiB
Java
174 lines
7.7 KiB
Java
/*
|
|
* Copyright (C) 2021 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package com.android.settings.development.tare;
|
|
|
|
import android.annotation.Nullable;
|
|
import android.app.Fragment;
|
|
import android.app.tare.EconomyManager;
|
|
import android.content.res.Resources;
|
|
import android.os.Bundle;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ExpandableListView;
|
|
import android.widget.ExpandableListView.OnChildClickListener;
|
|
|
|
import com.android.settings.R;
|
|
|
|
/**
|
|
* Creates the JobScheduler fragment to display all the JobScheduler factors
|
|
* when the JobScheduler policy is chosen in the dropdown TARE menu.
|
|
*/
|
|
public class JobSchedulerFragment extends Fragment implements
|
|
TareFactorController.DataChangeListener {
|
|
|
|
private TareFactorController mFactorController;
|
|
|
|
private TareFactorExpandableListAdapter mExpandableListAdapter;
|
|
|
|
private String[] mGroups;
|
|
private String[][] mChildren;
|
|
private String[][] mKeys;
|
|
|
|
@Override
|
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
mFactorController = TareFactorController.getInstance(getContext());
|
|
populateArrays();
|
|
}
|
|
|
|
@Override
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
|
Bundle savedInstanceState) {
|
|
View v = inflater.inflate(R.layout.tare_policy_fragment, null);
|
|
ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.factor_list);
|
|
mExpandableListAdapter = new TareFactorExpandableListAdapter(
|
|
mFactorController, LayoutInflater.from(getActivity()), mGroups, mChildren, mKeys);
|
|
elv.setGroupIndicator(null);
|
|
elv.setAdapter(mExpandableListAdapter);
|
|
elv.setOnChildClickListener(new OnChildClickListener() {
|
|
public boolean onChildClick(ExpandableListView parent, View v,
|
|
int groupPosition, int childPosition, long id) {
|
|
final String key = mExpandableListAdapter.getKey(groupPosition, childPosition);
|
|
mFactorController.createDialog(key).show(getFragmentManager(), key);
|
|
return true;
|
|
}
|
|
});
|
|
|
|
return v;
|
|
}
|
|
|
|
@Override
|
|
public void onStart() {
|
|
super.onStart();
|
|
mFactorController.registerListener(this);
|
|
}
|
|
|
|
@Override
|
|
public void onStop() {
|
|
mFactorController.unregisterListener(this);
|
|
super.onStop();
|
|
}
|
|
|
|
@Override
|
|
public void onDataChanged() {
|
|
mExpandableListAdapter.notifyDataSetChanged();
|
|
}
|
|
|
|
private void populateArrays() {
|
|
final Resources resources = getResources();
|
|
|
|
mGroups = new String[]{
|
|
resources.getString(R.string.tare_consumption_limits),
|
|
resources.getString(R.string.tare_balances),
|
|
// mResources.getString(R.string.tare_modifiers),
|
|
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)
|
|
};
|
|
|
|
mChildren = new String[][]{
|
|
resources.getStringArray(R.array.tare_consumption_limit_subfactors),
|
|
resources.getStringArray(R.array.tare_app_balance_subfactors),
|
|
// TODO: support
|
|
// mResources.getStringArray(R.array.tare_modifiers_subfactors),
|
|
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.getStringArray(R.array.tare_rewards_subfactors)
|
|
};
|
|
|
|
mKeys = new String[][]{
|
|
{
|
|
EconomyManager.KEY_JS_INITIAL_CONSUMPTION_LIMIT,
|
|
EconomyManager.KEY_JS_HARD_CONSUMPTION_LIMIT
|
|
},
|
|
{
|
|
EconomyManager.KEY_JS_MAX_SATIATED_BALANCE,
|
|
EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED,
|
|
EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
|
EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP
|
|
},
|
|
// {},
|
|
{
|
|
EconomyManager.KEY_JS_ACTION_JOB_MAX_START_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_MAX_RUNNING_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_HIGH_START_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_HIGH_RUNNING_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_START_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_RUNNING_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_LOW_START_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_LOW_RUNNING_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_MIN_START_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_MIN_RUNNING_CTP,
|
|
EconomyManager.KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP
|
|
},
|
|
{
|
|
EconomyManager.KEY_JS_ACTION_JOB_MAX_START_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_HIGH_START_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_LOW_START_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_MIN_START_BASE_PRICE,
|
|
EconomyManager.KEY_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE,
|
|
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_ONGOING},
|
|
{
|
|
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,
|
|
}
|
|
};
|
|
}
|
|
}
|