Refine battery settings layout

- Add loading text to progress bar to prevent UI flaky
 - Setup enable/disable state for battery saver switch
 - Remove battery saver page divider

Bug: 177964551
Bug: 177964753
Bug: 184626649
Test: make SettingsRoboTests, visually
Change-Id: I8e05c0c0f02710729e1f59eff23fb3f425770de9
This commit is contained in:
Wesley.CW Wang
2021-04-09 18:26:43 +08:00
committed by Wesley Wang
parent 40319d9d6f
commit f1ca264f69
5 changed files with 28 additions and 13 deletions

View File

@@ -37,26 +37,14 @@
android:key="battery_saver_sticky" android:key="battery_saver_sticky"
android:title="@string/battery_saver_sticky_title_new" android:title="@string/battery_saver_sticky_title_new"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
settings:allowDividerBelow="true"
settings:keywords="@string/keywords_battery_saver_sticky" settings:keywords="@string/keywords_battery_saver_sticky"
settings:controller="com.android.settings.fuelgauge.batterysaver.BatterySaverStickyPreferenceController"/> settings:controller="com.android.settings.fuelgauge.batterysaver.BatterySaverStickyPreferenceController"/>
<!-- <com.android.settings.widget.TwoStateButtonPreference-->
<!-- android:key="battery_saver"-->
<!-- android:title="@string/battery_saver"-->
<!-- android:selectable="false"-->
<!-- android:summary="@string/battery_saver_turn_on_summary"-->
<!-- settings:allowDividerBelow="true"-->
<!-- settings:textOn="@string/battery_saver_button_turn_on"-->
<!-- settings:textOff="@string/battery_saver_button_turn_off"-->
<!-- settings:controller="com.android.settings.fuelgauge.batterysaver.BatterySaverButtonPreferenceController"/>-->
<com.android.settingslib.widget.FooterPreference <com.android.settingslib.widget.FooterPreference
android:order="100" android:order="100"
android:key="battery_saver_footer_preference" android:key="battery_saver_footer_preference"
android:selectable="true" android:selectable="true"
android:title="@*android:string/battery_saver_description" android:title="@*android:string/battery_saver_description"
settings:allowDividerAbove="true"
settings:searchable="false"/> settings:searchable="false"/>
</PreferenceScreen> </PreferenceScreen>

View File

@@ -50,7 +50,6 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
BatteryPreferenceController { BatteryPreferenceController {
@VisibleForTesting @VisibleForTesting
static final String KEY_BATTERY_HEADER = "battery_header"; static final String KEY_BATTERY_HEADER = "battery_header";
private static final String ANNOTATION_URL = "url";
private static final int BATTERY_MAX_LEVEL = 100; private static final int BATTERY_MAX_LEVEL = 100;
@VisibleForTesting @VisibleForTesting
@@ -87,6 +86,9 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
mBatteryUsageProgressBarPref = screen.findPreference(getPreferenceKey()); mBatteryUsageProgressBarPref = screen.findPreference(getPreferenceKey());
//Set up loading text first to prevent layout flaky before info loaded.
mBatteryUsageProgressBarPref.setBottomSummary(
mContext.getString(R.string.settings_license_activity_loading));
if (com.android.settings.Utils.isBatteryPresent(mContext)) { if (com.android.settings.Utils.isBatteryPresent(mContext)) {
quickUpdateHeaderPreference(); quickUpdateHeaderPreference();

View File

@@ -122,5 +122,8 @@ public class BatterySaverButtonPreferenceController extends
@Override @Override
public void onBatteryChanged(boolean pluggedIn) { public void onBatteryChanged(boolean pluggedIn) {
if (mPreference != null) {
mPreference.setEnabled(!pluggedIn);
}
} }
} }

View File

@@ -317,6 +317,14 @@ public class BatteryHeaderPreferenceControllerTest {
assertThat(mBatteryUsageProgressBarPref.isVisible()).isFalse(); assertThat(mBatteryUsageProgressBarPref.isVisible()).isFalse();
} }
@Test
public void displayPreference_init_showLoading() {
mController.displayPreference(mPreferenceScreen);
verify(mBatteryUsageProgressBarPref).setBottomSummary(
mContext.getString(R.string.settings_license_activity_loading));
}
private CharSequence formatBatteryPercentageText() { private CharSequence formatBatteryPercentageText() {
return TextUtils.expandTemplate(mContext.getText(R.string.battery_header_title_alternate), return TextUtils.expandTemplate(mContext.getText(R.string.battery_header_title_alternate),
NumberFormat.getIntegerInstance().format(BATTERY_LEVEL)); NumberFormat.getIntegerInstance().format(BATTERY_LEVEL));

View File

@@ -103,6 +103,20 @@ public class BatterySaverButtonPreferenceControllerTest {
verify(mPowerManager).setPowerSaveModeEnabled(false); verify(mPowerManager).setPowerSaveModeEnabled(false);
} }
@Test
public void onBatteryChanged_pluggedIn_preferenceDisabled() {
mController.onBatteryChanged(/* pluggedIn */ true);
assertThat(mPreference.isEnabled()).isFalse();
}
@Test
public void onBatteryChanged_unplugged_preferenceEnabled() {
mController.onBatteryChanged(/* pluggedIn */ false);
assertThat(mPreference.isEnabled()).isTrue();
}
@Test @Test
public void isPublicSlice_returnsTrue() { public void isPublicSlice_returnsTrue() {
assertThat(mController.isPublicSlice()).isTrue(); assertThat(mController.isPublicSlice()).isTrue();