Support help message when battery is unavailable(1/2)
- Present help preference when battery is unavailable Bug: 179237551 Test: make SettingsRoboTests Change-Id: If6e82210d831123cb1169d53a18d24cb2c576b10
This commit is contained in:
59
res/layout/preference_battery_error.xml
Normal file
59
res/layout/preference_battery_error.xml
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
<!-- TODO(b/179237551): Refine the layout once the design been lock down. -->
|
||||||
|
<FrameLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:layout_marginEnd="24dp"
|
||||||
|
style="@style/ContextualCardStyle">
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="top|start"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="16dp"
|
||||||
|
android:background="@color/homepage_emergency_background">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/battery_icon"
|
||||||
|
android:src="@drawable/ic_battery_alert_24dp"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/summary_text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/battery_missing_message"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textColor="?android:attr/textColorSecondary" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/link_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:text="@string/battery_missing_link_message"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textColor="?android:attr/colorError" />
|
||||||
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
</FrameLayout>
|
@@ -6051,9 +6051,9 @@
|
|||||||
<string name="battery_header_title_alternate"><xliff:g id="number" example="88">^1</xliff:g><small> <font size="20"><xliff:g id="unit" example="%">%</xliff:g></font></small></string>
|
<string name="battery_header_title_alternate"><xliff:g id="number" example="88">^1</xliff:g><small> <font size="20"><xliff:g id="unit" example="%">%</xliff:g></font></small></string>
|
||||||
|
|
||||||
<!-- Summary for top level battery tile if battery is not present. [CHAR LIMIT=NONE] -->
|
<!-- Summary for top level battery tile if battery is not present. [CHAR LIMIT=NONE] -->
|
||||||
<string name="battery_missing_message">Problem reading your battery meter</string>
|
<string name="battery_missing_message">Can’t update battery info</string>
|
||||||
<!-- Summary to battery page if battery is not present. [CHAR LIMIT=NONE] -->
|
<!-- Help text if battery is not present. [CHAR LIMIT=NONE] -->
|
||||||
<string name="battery_missing_help_message">Problem reading your battery meter. Tap to <annotation id="url">learn more</annotation></string>
|
<string name="battery_missing_link_message"></string>
|
||||||
|
|
||||||
<!-- Title for force stop dialog [CHAR LIMIT=30] -->
|
<!-- Title for force stop dialog [CHAR LIMIT=30] -->
|
||||||
<string name="dialog_stop_title">Stop app?</string>
|
<string name="dialog_stop_title">Stop app?</string>
|
||||||
|
@@ -28,11 +28,10 @@
|
|||||||
android:selectable="false"
|
android:selectable="false"
|
||||||
settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" />
|
settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" />
|
||||||
|
|
||||||
<Preference
|
<com.android.settingslib.widget.LayoutPreference
|
||||||
android:fragment="com.android.settings.fuelgauge.PowerUsageAdvanced"
|
android:key="battery_help_message"
|
||||||
android:key="battery_usage_summary"
|
android:layout="@layout/preference_battery_error"
|
||||||
android:title="@string/advanced_battery_preference_title"
|
android:selectable="false"
|
||||||
app:iconSpaceReserved="false"
|
|
||||||
settings:searchable="false" />
|
settings:searchable="false" />
|
||||||
|
|
||||||
<com.android.settings.widget.CardPreference
|
<com.android.settings.widget.CardPreference
|
||||||
@@ -40,6 +39,13 @@
|
|||||||
android:title="@string/summary_placeholder"
|
android:title="@string/summary_placeholder"
|
||||||
settings:controller="com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController" />
|
settings:controller="com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController" />
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:fragment="com.android.settings.fuelgauge.PowerUsageAdvanced"
|
||||||
|
android:key="battery_usage_summary"
|
||||||
|
android:title="@string/advanced_battery_preference_title"
|
||||||
|
app:iconSpaceReserved="false"
|
||||||
|
settings:searchable="false" />
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings"
|
android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings"
|
||||||
android:key="battery_saver_summary"
|
android:key="battery_saver_summary"
|
||||||
|
@@ -91,7 +91,7 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
|
|||||||
if (com.android.settings.Utils.isBatteryPresent(mContext)) {
|
if (com.android.settings.Utils.isBatteryPresent(mContext)) {
|
||||||
quickUpdateHeaderPreference();
|
quickUpdateHeaderPreference();
|
||||||
} else {
|
} else {
|
||||||
//TODO(b/179237551): Make new progress bar widget support help message
|
mBatteryUsageProgressBarPref.setVisible(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,6 +29,7 @@ import android.provider.Settings.Global;
|
|||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.loader.app.LoaderManager;
|
import androidx.loader.app.LoaderManager;
|
||||||
import androidx.loader.content.Loader;
|
import androidx.loader.content.Loader;
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
@@ -51,6 +52,8 @@ import java.util.List;
|
|||||||
public class PowerUsageSummary extends PowerUsageBase implements
|
public class PowerUsageSummary extends PowerUsageBase implements
|
||||||
BatteryTipPreferenceController.BatteryTipListener {
|
BatteryTipPreferenceController.BatteryTipListener {
|
||||||
|
|
||||||
|
private static final String KEY_BATTERY_ERROR = "battery_help_message";
|
||||||
|
|
||||||
static final String TAG = "PowerUsageSummary";
|
static final String TAG = "PowerUsageSummary";
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -70,9 +73,11 @@ public class PowerUsageSummary extends PowerUsageBase implements
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
|
BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
BatteryTipPreferenceController mBatteryTipPreferenceController;
|
||||||
|
@VisibleForTesting
|
||||||
boolean mNeedUpdateBatteryTip;
|
boolean mNeedUpdateBatteryTip;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
BatteryTipPreferenceController mBatteryTipPreferenceController;
|
Preference mHelpPreference;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) {
|
final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) {
|
||||||
@@ -152,8 +157,14 @@ public class PowerUsageSummary extends PowerUsageBase implements
|
|||||||
|
|
||||||
mBatteryUtils = BatteryUtils.getInstance(getContext());
|
mBatteryUtils = BatteryUtils.getInstance(getContext());
|
||||||
|
|
||||||
|
mHelpPreference = findPreference(KEY_BATTERY_ERROR);
|
||||||
|
mHelpPreference.setVisible(false);
|
||||||
|
|
||||||
if (Utils.isBatteryPresent(getContext())) {
|
if (Utils.isBatteryPresent(getContext())) {
|
||||||
restartBatteryInfoLoader();
|
restartBatteryInfoLoader();
|
||||||
|
} else {
|
||||||
|
// Present help preference when battery is unavailable.
|
||||||
|
mHelpPreference.setVisible(true);
|
||||||
}
|
}
|
||||||
mBatteryTipPreferenceController.restoreInstanceState(icicle);
|
mBatteryTipPreferenceController.restoreInstanceState(icicle);
|
||||||
updateBatteryTipFlag(icicle);
|
updateBatteryTipFlag(icicle);
|
||||||
|
@@ -308,6 +308,15 @@ public class BatteryHeaderPreferenceControllerTest {
|
|||||||
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void displayPreference_batteryNotPresent_isInvisible() {
|
||||||
|
ShadowUtils.setIsBatteryPresent(false);
|
||||||
|
|
||||||
|
mController.displayPreference(mPreferenceScreen);
|
||||||
|
|
||||||
|
assertThat(mBatteryUsageProgressBarPref.isVisible()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
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));
|
||||||
|
Reference in New Issue
Block a user