Reorder Settings Battery main page index (1/2)

- Reorder battery page index
 - Remove option menu
 - Add battery usage preference
 - Remove last full charge and screen usage preference
 Screenshots:
 https://screenshot.googleplex.com/7VMeSVKHGViZyRv.png
 https://screenshot.googleplex.com/7v6wNL4qamfMAgM.png

Bug: 177407113
Test: make SettingsGoogleRoboTests -j40
Change-Id: I8a1fb30cdd3774840bf28d9c84017d946a4244df
This commit is contained in:
Wesley.CW Wang
2021-01-25 17:57:41 +08:00
committed by Wesley Wang
parent 6b603fc5e2
commit 0457af5347
4 changed files with 16 additions and 151 deletions

View File

@@ -5680,6 +5680,8 @@
<string name="advanced_battery_title">Battery usage</string>
<!-- Activity title for battery usage history details [CHAR LIMIT=60] -->
<string name="history_details_title">History details</string>
<!-- Preference title for advanced battery usage [CHAR LIMIT=40] -->
<string name="advanced_battery_preference_title">View battery usage</string>
<!-- Activity title for battery usage details for an app. or power consumer -->
<string name="battery_details_title">Battery usage</string>

View File

@@ -28,6 +28,13 @@
android:layout="@layout/battery_header"
settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" />
<Preference
android:fragment="com.android.settings.fuelgauge.PowerUsageAdvanced"
android:key="battery_usage_summary"
android:title="@string/advanced_battery_preference_title"
android:icon="@drawable/ic_chevron_right_24dp"
settings:searchable="false" />
<com.android.settings.widget.CardPreference
android:key="battery_tip"
android:title="@string/summary_placeholder"
@@ -39,33 +46,22 @@
android:title="@string/battery_saver"
settings:controller="com.android.settings.fuelgauge.BatterySaverController" />
<Preference
android:fragment="com.android.settings.fuelgauge.SmartBatterySettings"
android:key="smart_battery_manager"
android:title="@string/smart_battery_manager_title"
settings:controller="com.android.settings.fuelgauge.batterytip.BatteryManagerPreferenceController" />
<SwitchPreference
android:key="battery_percentage"
android:title="@string/battery_percentage"
android:summary="@string/battery_percentage_description"
settings:controller="com.android.settings.display.BatteryPercentagePreferenceController" />
<com.android.settings.fuelgauge.PowerGaugePreference
android:key="last_full_charge"
android:title="@string/battery_last_full_charge"
android:selectable="false"
settings:allowDividerAbove="true" />
<com.android.settings.fuelgauge.PowerGaugePreference
android:key="screen_usage"
android:title="@string/device_screen_usage"
android:selectable="false" />
<Preference
android:fragment="com.android.settings.fuelgauge.SmartBatterySettings"
android:key="smart_battery_manager"
android:title="@string/smart_battery_manager_title"
settings:controller="com.android.settings.fuelgauge.batterytip.BatteryManagerPreferenceController" />
<com.android.settingslib.widget.FooterPreference
android:key="power_usage_footer"
android:title="@string/battery_footer_summary"
android:selectable="false"
settings:searchable="false"/>
settings:searchable="false"
settings:allowDividerAbove="true" />
</PreferenceScreen>

View File

@@ -26,9 +26,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.provider.Settings.Global;
import android.text.format.Formatter;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.TextView;
@@ -41,16 +38,13 @@ import androidx.loader.content.Loader;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.fuelgauge.EstimateKt;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.utils.PowerUtil;
import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.LayoutPreference;
import java.util.List;
@@ -67,21 +61,12 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
private static final String KEY_BATTERY_HEADER = "battery_header";
private static final String KEY_SCREEN_USAGE = "screen_usage";
private static final String KEY_TIME_SINCE_LAST_FULL_CHARGE = "last_full_charge";
@VisibleForTesting
static final int BATTERY_INFO_LOADER = 1;
@VisibleForTesting
static final int BATTERY_TIP_LOADER = 2;
@VisibleForTesting
static final int MENU_ADVANCED_BATTERY = Menu.FIRST + 1;
public static final int DEBUG_INFO_LOADER = 3;
@VisibleForTesting
PowerGaugePreference mScreenUsagePref;
@VisibleForTesting
PowerGaugePreference mLastFullChargePref;
@VisibleForTesting
PowerUsageFeatureProvider mPowerFeatureProvider;
@VisibleForTesting
@@ -119,7 +104,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo);
mBatteryInfo = batteryInfo;
updateLastFullChargePreference();
}
@Override
@@ -215,9 +199,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
initFeatureProvider();
mBatteryLayoutPref = (LayoutPreference) findPreference(KEY_BATTERY_HEADER);
mScreenUsagePref = (PowerGaugePreference) findPreference(KEY_SCREEN_USAGE);
mLastFullChargePref = (PowerGaugePreference) findPreference(
KEY_TIME_SINCE_LAST_FULL_CHARGE);
mBatteryUtils = BatteryUtils.getInstance(getContext());
if (Utils.isBatteryPresent(getContext())) {
@@ -257,33 +238,11 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
return R.xml.power_usage_summary;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(Menu.NONE, MENU_ADVANCED_BATTERY, Menu.NONE, R.string.advanced_battery_title);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public int getHelpResource() {
return R.string.help_url_battery;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ADVANCED_BATTERY:
new SubSettingLauncher(getContext())
.setDestination(PowerUsageAdvanced.class.getName())
.setSourceMetricsCategory(getMetricsCategory())
.setTitleRes(R.string.advanced_battery_title)
.launch();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
protected void refreshUi(@BatteryUpdateType int refreshType) {
final Context context = getContext();
if (context == null) {
@@ -303,9 +262,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
}
// reload BatteryInfo and updateUI
restartBatteryInfoLoader();
updateLastFullChargePreference();
mScreenUsagePref.setSubtitle(StringUtil.formatElapsedTime(getContext(),
mBatteryUtils.calculateScreenUsageTime(mStatsHelper), false));
}
@VisibleForTesting
@@ -318,24 +274,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
mBatteryLayoutPref = layoutPreference;
}
@VisibleForTesting
void updateLastFullChargePreference() {
if (mBatteryInfo != null && mBatteryInfo.averageTimeToDischarge
!= EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN) {
mLastFullChargePref.setTitle(R.string.battery_full_charge_last);
mLastFullChargePref.setSubtitle(
StringUtil.formatElapsedTime(getContext(), mBatteryInfo.averageTimeToDischarge,
false /* withSeconds */));
} else {
final long lastFullChargeTime = mBatteryUtils.calculateLastFullChargeTime(mStatsHelper,
System.currentTimeMillis());
mLastFullChargePref.setTitle(R.string.battery_last_full_charge);
mLastFullChargePref.setSubtitle(
StringUtil.formatRelativeTime(getContext(), lastFullChargeTime,
false /* withSeconds */));
}
}
@VisibleForTesting
void showBothEstimates() {
final Context context = getContext();

View File

@@ -16,7 +16,6 @@
package com.android.settings.fuelgauge;
import static com.android.settings.fuelgauge.PowerUsageSummary.BATTERY_INFO_LOADER;
import static com.android.settings.fuelgauge.PowerUsageSummary.MENU_ADVANCED_BATTERY;
import static com.google.common.truth.Truth.assertThat;
@@ -39,9 +38,6 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
@@ -117,12 +113,6 @@ public class PowerUsageSummaryTest {
private SettingsActivity mSettingsActivity;
@Mock
private LoaderManager mLoaderManager;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Menu mMenu;
@Mock
private MenuInflater mMenuInflater;
@Mock
private MenuItem mAdvancedPageMenu;
@Mock
private BatteryInfo mBatteryInfo;
@Mock
@@ -139,8 +129,6 @@ public class PowerUsageSummaryTest {
private TestFragment mFragment;
private FakeFeatureFactory mFeatureFactory;
private BatteryMeterView mBatteryMeterView;
private PowerGaugePreference mScreenUsagePref;
private PowerGaugePreference mLastFullChargePref;
private Intent mIntent;
@Before
@@ -149,15 +137,12 @@ public class PowerUsageSummaryTest {
mRealContext = spy(RuntimeEnvironment.application);
mFeatureFactory = FakeFeatureFactory.setupForTest();
mScreenUsagePref = new PowerGaugePreference(mRealContext);
mLastFullChargePref = new PowerGaugePreference(mRealContext);
mFragment = spy(new TestFragment(mRealContext));
mFragment.initFeatureProvider();
mBatteryMeterView = new BatteryMeterView(mRealContext);
mBatteryMeterView.mDrawable = new BatteryMeterView.BatteryMeterDrawable(mRealContext, 0);
doNothing().when(mFragment).restartBatteryStatsLoader(anyInt());
doReturn(mock(LoaderManager.class)).when(mFragment).getLoaderManager();
doReturn(MENU_ADVANCED_BATTERY).when(mAdvancedPageMenu).getItemId();
when(mFragment.getActivity()).thenReturn(mSettingsActivity);
when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent())
@@ -189,8 +174,6 @@ public class PowerUsageSummaryTest {
mFragment.mStatsHelper = mBatteryHelper;
when(mBatteryHelper.getUsageList()).thenReturn(mUsageList);
mFragment.mScreenUsagePref = mScreenUsagePref;
mFragment.mLastFullChargePref = mLastFullChargePref;
mFragment.mBatteryUtils = spy(new BatteryUtils(mRealContext));
ReflectionHelpers.setField(mFragment, "mVisibilityLoggerMixin", mVisibilityLoggerMixin);
ReflectionHelpers.setField(mFragment, "mBatteryBroadcastReceiver",
@@ -199,31 +182,6 @@ public class PowerUsageSummaryTest {
when(mFragment.getContentResolver()).thenReturn(mContentResolver);
}
@Test
public void updateLastFullChargePreference_noAverageTime_showLastFullChargeSummary() {
mFragment.mBatteryInfo = null;
when(mFragment.getContext()).thenReturn(mRealContext);
doReturn(TIME_SINCE_LAST_FULL_CHARGE_MS).when(
mFragment.mBatteryUtils).calculateLastFullChargeTime(any(), anyLong());
mFragment.updateLastFullChargePreference();
assertThat(mLastFullChargePref.getTitle()).isEqualTo("Last full charge");
assertThat(mLastFullChargePref.getSubtitle()).isEqualTo("2 hours ago");
}
@Test
public void updateLastFullChargePreference_hasAverageTime_showFullChargeLastSummary() {
mFragment.mBatteryInfo = mBatteryInfo;
mBatteryInfo.averageTimeToDischarge = TIME_SINCE_LAST_FULL_CHARGE_MS;
when(mFragment.getContext()).thenReturn(mRealContext);
mFragment.updateLastFullChargePreference();
assertThat(mLastFullChargePref.getTitle()).isEqualTo("Full charge lasts about");
assertThat(mLastFullChargePref.getSubtitle().toString()).isEqualTo("2 hr");
}
@Test
@Config(shadows = ShadowUtils.class)
public void nonIndexableKeys_MatchPreferenceKeys() {
@@ -293,35 +251,6 @@ public class PowerUsageSummaryTest {
verify(mSummary1, times(2)).setOnLongClickListener(any(View.OnLongClickListener.class));
}
@Test
public void optionsMenu_advancedPageEnabled() {
when(mFeatureFactory.powerUsageFeatureProvider.isPowerAccountingToggleEnabled())
.thenReturn(true);
mFragment.onCreateOptionsMenu(mMenu, mMenuInflater);
verify(mMenu).add(Menu.NONE, MENU_ADVANCED_BATTERY, Menu.NONE,
R.string.advanced_battery_title);
}
@Test
public void optionsMenu_clickAdvancedPage_fireIntent() {
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
doAnswer(invocation -> {
// Get the intent in which it has the app info bundle
mIntent = captor.getValue();
return true;
}).when(mRealContext).startActivity(captor.capture());
mFragment.onOptionsItemSelected(mAdvancedPageMenu);
assertThat(mIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
PowerUsageAdvanced.class.getName());
assertThat(
mIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0)).isEqualTo(
R.string.advanced_battery_title);
}
@Test
public void refreshUi_deviceRotate_doNotUpdateBatteryTip() {
mFragment.mBatteryTipPreferenceController = mock(BatteryTipPreferenceController.class);