Update app usage page with 3 radio button control
- Improve the UX from 2 different preference column to 3 radio button, make the restriction state more easy to control and recognize Screenshot: https://screenshot.googleplex.com/4nCBnF5FzwePqrL.png Bug: 178197718 Test: make SettingsRoboTests Change-Id: Ic354ac91e5496c0e44c5b44142627ac8a090e30f
This commit is contained in:
committed by
Wesley Wang
parent
3db43de758
commit
5083d82df7
@@ -30,6 +30,30 @@
|
||||
android:key="action_buttons"
|
||||
android:order="-9999"/>
|
||||
|
||||
<PreferenceCategory
|
||||
android:title="@string/battery_detail_manage_title"
|
||||
settings:allowDividerAbove="true">
|
||||
|
||||
<com.android.settingslib.widget.RadioButtonPreference
|
||||
android:key="unrestricted_pref"
|
||||
android:summary="@string/manager_battery_usage_unrestricted_summary"
|
||||
android:title="@string/manager_battery_usage_unrestricted_title"
|
||||
settings:controller="com.android.settings.fuelgauge.UnrestrictedPreferenceController"/>
|
||||
|
||||
<com.android.settingslib.widget.RadioButtonPreference
|
||||
android:key="optimized_pref"
|
||||
android:summary="@string/manager_battery_usage_optimized_summary"
|
||||
android:title="@string/manager_battery_usage_optimized_title"
|
||||
settings:controller="com.android.settings.fuelgauge.OptimizedPreferenceController"/>
|
||||
|
||||
<com.android.settingslib.widget.RadioButtonPreference
|
||||
android:key="restricted_pref"
|
||||
android:summary="@string/manager_battery_usage_restricted_summary"
|
||||
android:title="@string/restricted_true_label"
|
||||
settings:controller="com.android.settings.fuelgauge.RestrictedPreferenceController"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:title="@string/battery_detail_manage_title"
|
||||
settings:allowDividerAbove="true">
|
||||
|
@@ -48,6 +48,7 @@ import com.android.settingslib.applications.ApplicationsState;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.utils.StringUtil;
|
||||
import com.android.settingslib.widget.LayoutPreference;
|
||||
import com.android.settingslib.widget.RadioButtonPreference;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -60,7 +61,7 @@ import java.util.List;
|
||||
*/
|
||||
public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
||||
ButtonActionDialogFragment.AppButtonsDialogListener,
|
||||
BatteryTipPreferenceController.BatteryTipListener {
|
||||
BatteryTipPreferenceController.BatteryTipListener, RadioButtonPreference.OnClickListener {
|
||||
|
||||
public static final String TAG = "AdvancedPowerDetail";
|
||||
public static final String EXTRA_UID = "extra_uid";
|
||||
@@ -75,6 +76,9 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
||||
private static final String KEY_PREF_FOREGROUND = "app_usage_foreground";
|
||||
private static final String KEY_PREF_BACKGROUND = "app_usage_background";
|
||||
private static final String KEY_PREF_HEADER = "header_view";
|
||||
private static final String KEY_PREF_UNRESTRICTED = "unrestricted_pref";
|
||||
private static final String KEY_PREF_OPTIMIZED = "optimized_pref";
|
||||
private static final String KEY_PREF_RESTRICTED = "restricted_pref";
|
||||
|
||||
private static final int REQUEST_UNINSTALL = 0;
|
||||
private static final int REQUEST_REMOVE_DEVICE_ADMIN = 1;
|
||||
@@ -92,8 +96,17 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
||||
Preference mForegroundPreference;
|
||||
@VisibleForTesting
|
||||
Preference mBackgroundPreference;
|
||||
@VisibleForTesting
|
||||
RadioButtonPreference mRestrictedPreference;
|
||||
@VisibleForTesting
|
||||
RadioButtonPreference mOptimizePreference;
|
||||
@VisibleForTesting
|
||||
RadioButtonPreference mUnrestrictedPreference;
|
||||
private AppButtonsPreferenceController mAppButtonsPreferenceController;
|
||||
private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController;
|
||||
private UnrestrictedPreferenceController mUnrestrictedPreferenceController;
|
||||
private OptimizedPreferenceController mOptimizedPreferenceController;
|
||||
private RestrictedPreferenceController mRestrictedPreferenceController;
|
||||
|
||||
private String mPackageName;
|
||||
|
||||
@@ -176,6 +189,13 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
||||
mBackgroundPreference = findPreference(KEY_PREF_BACKGROUND);
|
||||
mHeaderPreference = (LayoutPreference) findPreference(KEY_PREF_HEADER);
|
||||
|
||||
mUnrestrictedPreference = findPreference(KEY_PREF_UNRESTRICTED);
|
||||
mOptimizePreference = findPreference(KEY_PREF_OPTIMIZED);
|
||||
mRestrictedPreference = findPreference(KEY_PREF_RESTRICTED);
|
||||
mUnrestrictedPreference.setOnClickListener(this);
|
||||
mOptimizePreference.setOnClickListener(this);
|
||||
mRestrictedPreference.setOnClickListener(this);
|
||||
|
||||
if (mPackageName != null) {
|
||||
mAppEntry = mState.getEntry(mPackageName, UserHandle.myUserId());
|
||||
}
|
||||
@@ -274,6 +294,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
||||
(SettingsActivity) getActivity(), this, getSettingsLifecycle(), packageName, mState,
|
||||
REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
|
||||
controllers.add(mAppButtonsPreferenceController);
|
||||
mUnrestrictedPreferenceController =
|
||||
new UnrestrictedPreferenceController(context, uid, packageName);
|
||||
mOptimizedPreferenceController =
|
||||
new OptimizedPreferenceController(context, uid, packageName);
|
||||
mRestrictedPreferenceController =
|
||||
new RestrictedPreferenceController(context, uid, packageName);
|
||||
controllers.add(mUnrestrictedPreferenceController);
|
||||
controllers.add(mOptimizedPreferenceController);
|
||||
controllers.add(mRestrictedPreferenceController);
|
||||
|
||||
return controllers;
|
||||
}
|
||||
@@ -298,4 +327,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
||||
mBackgroundActivityPreferenceController.updateSummary(
|
||||
findPreference(mBackgroundActivityPreferenceController.getPreferenceKey()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRadioButtonClicked(RadioButtonPreference selected) {
|
||||
updatePreferenceState(mUnrestrictedPreference, selected.getKey());
|
||||
updatePreferenceState(mOptimizePreference, selected.getKey());
|
||||
updatePreferenceState(mRestrictedPreference, selected.getKey());
|
||||
}
|
||||
|
||||
private void updatePreferenceState(RadioButtonPreference preference, String selectedKey) {
|
||||
preference.setChecked(selectedKey.equals(preference.getKey()));
|
||||
}
|
||||
}
|
||||
|
@@ -58,6 +58,7 @@ import com.android.settingslib.applications.ApplicationsState;
|
||||
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.widget.LayoutPreference;
|
||||
import com.android.settingslib.widget.RadioButtonPreference;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@@ -96,6 +97,9 @@ public class AdvancedPowerUsageDetailTest {
|
||||
private static final long PROCSTATE_TOP_TIME_US = PROCSTATE_TOP_TIME_MS * 1000;
|
||||
private static final long PHONE_FOREGROUND_TIME_MS = 250 * 1000;
|
||||
private static final long PHONE_BACKGROUND_TIME_MS = 0;
|
||||
private static final String KEY_PREF_UNRESTRICTED = "unrestricted_pref";
|
||||
private static final String KEY_PREF_OPTIMIZED = "optimized_pref";
|
||||
private static final String KEY_PREF_RESTRICTED = "restricted_pref";
|
||||
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private FragmentActivity mActivity;
|
||||
@@ -124,6 +128,9 @@ public class AdvancedPowerUsageDetailTest {
|
||||
private Context mContext;
|
||||
private Preference mForegroundPreference;
|
||||
private Preference mBackgroundPreference;
|
||||
private RadioButtonPreference mRestrictedPreference;
|
||||
private RadioButtonPreference mOptimizePreference;
|
||||
private RadioButtonPreference mUnrestrictedPreference;
|
||||
private AdvancedPowerUsageDetail mFragment;
|
||||
private SettingsActivity mTestActivity;
|
||||
|
||||
@@ -194,8 +201,14 @@ public class AdvancedPowerUsageDetailTest {
|
||||
|
||||
mForegroundPreference = new Preference(mContext);
|
||||
mBackgroundPreference = new Preference(mContext);
|
||||
mRestrictedPreference = new RadioButtonPreference(mContext);
|
||||
mOptimizePreference = new RadioButtonPreference(mContext);
|
||||
mUnrestrictedPreference = new RadioButtonPreference(mContext);
|
||||
mFragment.mForegroundPreference = mForegroundPreference;
|
||||
mFragment.mBackgroundPreference = mBackgroundPreference;
|
||||
mFragment.mRestrictedPreference = mRestrictedPreference;
|
||||
mFragment.mOptimizePreference = mOptimizePreference;
|
||||
mFragment.mUnrestrictedPreference = mUnrestrictedPreference;
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -352,4 +365,16 @@ public class AdvancedPowerUsageDetailTest {
|
||||
assertThat(mForegroundPreference.getSummary().toString()).isEqualTo("Used for 0 min");
|
||||
assertThat(mBackgroundPreference.getSummary().toString()).isEqualTo("Active for 0 min");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnRadioButtonClicked_clickOptimizePref_optimizePreferenceChecked() {
|
||||
mOptimizePreference.setKey(KEY_PREF_OPTIMIZED);
|
||||
mRestrictedPreference.setKey(KEY_PREF_RESTRICTED);
|
||||
mUnrestrictedPreference.setKey(KEY_PREF_UNRESTRICTED);
|
||||
mFragment.onRadioButtonClicked(mOptimizePreference);
|
||||
|
||||
assertThat(mOptimizePreference.isChecked()).isTrue();
|
||||
assertThat(mRestrictedPreference.isChecked()).isFalse();
|
||||
assertThat(mUnrestrictedPreference.isChecked()).isFalse();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user