Fixed battery tips card UI.
- Add highlight effect after navigate to new page. - Update text format inside button. Screenshot: https://screenshot.googleplex.com/8ib66dWzn6PZmhy Fix: 296001546 Fix: 296339767 Bug: 291689623 Test: manual Change-Id: Ic789e5feb684a109582477c553963a9a3f9936b8
This commit is contained in:
@@ -49,8 +49,7 @@
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/battery_tips_card_dismiss_button"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:attr/colorAccent"
|
||||
android:textStyle="bold" />
|
||||
android:textColor="?android:attr/textColorPrimary" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/main_button"
|
||||
@@ -62,7 +61,6 @@
|
||||
android:text="@string/battery_tips_card_action_button"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textStyle="bold"
|
||||
app:strokeColor="?android:attr/colorAccent"
|
||||
app:strokeWidth="1dp" />
|
||||
</LinearLayout>
|
||||
|
@@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batteryusage;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
@@ -30,6 +31,7 @@ import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
@@ -56,6 +58,8 @@ public class BatteryTipsCardPreference extends Preference implements View.OnClic
|
||||
@VisibleForTesting
|
||||
String mDestinationComponentName;
|
||||
@VisibleForTesting
|
||||
String mPreferenceHighlightKey;
|
||||
@VisibleForTesting
|
||||
Integer mSourceMetricsCategory;
|
||||
|
||||
public BatteryTipsCardPreference(Context context, AttributeSet attrs) {
|
||||
@@ -98,9 +102,10 @@ public class BatteryTipsCardPreference extends Preference implements View.OnClic
|
||||
* Sets the info of target fragment launched by main button.
|
||||
*/
|
||||
public void setMainButtonLauncherInfo(final String destinationClassName,
|
||||
final Integer sourceMetricsCategory) {
|
||||
final Integer sourceMetricsCategory, final String highlightKey) {
|
||||
mDestinationComponentName = destinationClassName;
|
||||
mSourceMetricsCategory = sourceMetricsCategory;
|
||||
mPreferenceHighlightKey = highlightKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -110,9 +115,16 @@ public class BatteryTipsCardPreference extends Preference implements View.OnClic
|
||||
if (TextUtils.isEmpty(mDestinationComponentName)) {
|
||||
return;
|
||||
}
|
||||
Bundle arguments = Bundle.EMPTY;
|
||||
if (!TextUtils.isEmpty(mPreferenceHighlightKey)) {
|
||||
arguments = new Bundle(1);
|
||||
arguments.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY,
|
||||
mPreferenceHighlightKey);
|
||||
}
|
||||
new SubSettingLauncher(getContext())
|
||||
.setDestination(mDestinationComponentName)
|
||||
.setSourceMetricsCategory(mSourceMetricsCategory)
|
||||
.setArguments(arguments)
|
||||
.launch();
|
||||
setVisible(false);
|
||||
mMetricsFeatureProvider.action(
|
||||
|
@@ -69,9 +69,9 @@ public class BatteryTipsController extends BasePreferenceController {
|
||||
private <T> T getInfo(PowerAnomalyEvent powerAnomalyEvent,
|
||||
Function<WarningBannerInfo, T> warningBannerInfoSupplier,
|
||||
Function<WarningItemInfo, T> warningItemInfoSupplier) {
|
||||
if (powerAnomalyEvent.hasWarningBannerInfo() && warningBannerInfoSupplier != null) {
|
||||
if (warningBannerInfoSupplier != null && powerAnomalyEvent.hasWarningBannerInfo()) {
|
||||
return warningBannerInfoSupplier.apply(powerAnomalyEvent.getWarningBannerInfo());
|
||||
} else if (powerAnomalyEvent.hasWarningItemInfo() && warningItemInfoSupplier != null) {
|
||||
} else if (warningItemInfoSupplier != null && powerAnomalyEvent.hasWarningItemInfo()) {
|
||||
return warningItemInfoSupplier.apply(powerAnomalyEvent.getWarningItemInfo());
|
||||
}
|
||||
return null;
|
||||
@@ -125,20 +125,20 @@ public class BatteryTipsController extends BasePreferenceController {
|
||||
WarningBannerInfo::getCancelButtonString, WarningItemInfo::getCancelButtonString,
|
||||
R.array.power_anomaly_dismiss_btn_strings, resourceIndex);
|
||||
|
||||
String destinationClassName = getString(powerAnomalyEvent,
|
||||
WarningBannerInfo::getMainButtonDestination,
|
||||
WarningItemInfo::getMainButtonDestination,
|
||||
-1, -1);
|
||||
String destinationClassName = getInfo(powerAnomalyEvent,
|
||||
WarningBannerInfo::getMainButtonDestination, null);
|
||||
Integer sourceMetricsCategory = getInfo(powerAnomalyEvent,
|
||||
WarningBannerInfo::getMainButtonSourceMetricsCategory,
|
||||
WarningItemInfo::getMainButtonSourceMetricsCategory);
|
||||
WarningBannerInfo::getMainButtonSourceMetricsCategory, null);
|
||||
String preferenceHighlightKey = getInfo(powerAnomalyEvent,
|
||||
WarningBannerInfo::getMainButtonSourceHighlightKey, null);
|
||||
|
||||
// Updated card preference and main button fragment launcher
|
||||
mCardPreference.setAnomalyEventId(powerAnomalyEvent.getEventId());
|
||||
mCardPreference.setTitle(titleString);
|
||||
mCardPreference.setMainButtonLabel(mainBtnString);
|
||||
mCardPreference.setDismissButtonLabel(dismissBtnString);
|
||||
mCardPreference.setMainButtonLauncherInfo(destinationClassName, sourceMetricsCategory);
|
||||
mCardPreference.setMainButtonLauncherInfo(
|
||||
destinationClassName, sourceMetricsCategory, preferenceHighlightKey);
|
||||
mCardPreference.setVisible(true);
|
||||
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
|
@@ -47,7 +47,9 @@ message WarningBannerInfo {
|
||||
optional string main_button_destination = 4;
|
||||
// Used in the SubSettingLauncher.setSourceMetricsCategory().
|
||||
optional int32 main_button_source_metrics_category = 5;
|
||||
optional string cancel_button_string = 6;
|
||||
// Used in the SubSettingLauncher.setArguments().
|
||||
optional string main_button_source_highlight_key = 6;
|
||||
optional string cancel_button_string = 7;
|
||||
}
|
||||
|
||||
message WarningItemInfo {
|
||||
@@ -57,9 +59,5 @@ message WarningItemInfo {
|
||||
optional string title_string = 4;
|
||||
optional string description_string = 5;
|
||||
optional string main_button_string = 6;
|
||||
// Used in the SubSettingLauncher.setDestination().
|
||||
optional string main_button_destination = 7;
|
||||
// Used in the SubSettingLauncher.setSourceMetricsCategory().
|
||||
optional int32 main_button_source_metrics_category = 8;
|
||||
optional string cancel_button_string = 9;
|
||||
optional string cancel_button_string = 7;
|
||||
}
|
||||
|
@@ -33,8 +33,8 @@ import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||
import com.android.settings.core.PreferenceXmlParserUtils;
|
||||
import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
|
||||
import com.android.settingslib.widget.CandidateInfo;
|
||||
@@ -46,7 +46,10 @@ import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFragment implements
|
||||
/**
|
||||
* A fragment to handle general radio button picker
|
||||
*/
|
||||
public abstract class RadioButtonPickerFragment extends SettingsPreferenceFragment implements
|
||||
SelectorWithWidgetPreference.OnClickListener {
|
||||
|
||||
@VisibleForTesting
|
||||
|
@@ -29,9 +29,9 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.settings.DisplaySettings;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.display.AutoBrightnessSettings;
|
||||
import com.android.settings.testutils.BatteryTestUtils;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
@@ -86,9 +86,9 @@ public final class BatteryTipsCardPreferenceTest {
|
||||
verify(mContext).startActivity(any(Intent.class));
|
||||
final Intent intent = captor.getValue();
|
||||
assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
|
||||
.isEqualTo(AutoBrightnessSettings.class.getName());
|
||||
.isEqualTo(DisplaySettings.class.getName());
|
||||
assertThat(intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, -1))
|
||||
.isEqualTo(SettingsEnums.SETTINGS_AUTO_BRIGHTNESS);
|
||||
.isEqualTo(SettingsEnums.DISPLAY);
|
||||
verify(mFeatureFactory.metricsFeatureProvider).action(
|
||||
mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, "BrightnessAnomaly");
|
||||
}
|
||||
|
@@ -87,8 +87,8 @@ public final class BatteryTipsControllerTest {
|
||||
verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it");
|
||||
// Check proto info
|
||||
verify(mBatteryTipsCardPreference).setMainButtonLauncherInfo(
|
||||
"com.android.settings.display.AutoBrightnessSettings",
|
||||
1381);
|
||||
"com.android.settings.DisplaySettings",
|
||||
46, "auto_brightness_entry");
|
||||
verify(mBatteryTipsCardPreference).setVisible(true);
|
||||
verify(mFeatureFactory.metricsFeatureProvider).action(
|
||||
mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "BrightnessAnomaly");
|
||||
@@ -107,11 +107,12 @@ public final class BatteryTipsControllerTest {
|
||||
verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it");
|
||||
verify(mBatteryTipsCardPreference).setMainButtonLauncherInfo(
|
||||
"com.android.settings.display.ScreenTimeoutSettings",
|
||||
1852);
|
||||
1852, "60000");
|
||||
verify(mBatteryTipsCardPreference).setVisible(true);
|
||||
verify(mFeatureFactory.metricsFeatureProvider).action(
|
||||
mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "ScreenTimeoutAnomaly");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleBatteryTipsCardUpdated_screenTimeoutAnomalyHasTitle_showAnomaly() {
|
||||
PowerAnomalyEvent event = BatteryTestUtils.createScreenTimeoutAnomalyEvent();
|
||||
@@ -132,7 +133,7 @@ public final class BatteryTipsControllerTest {
|
||||
verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it");
|
||||
verify(mBatteryTipsCardPreference).setMainButtonLauncherInfo(
|
||||
"com.android.settings.display.ScreenTimeoutSettings",
|
||||
1852);
|
||||
1852, "60000");
|
||||
verify(mBatteryTipsCardPreference).setVisible(true);
|
||||
verify(mFeatureFactory.metricsFeatureProvider).action(
|
||||
mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "ScreenTimeoutAnomaly");
|
||||
|
@@ -29,7 +29,7 @@ import android.os.UserManager;
|
||||
|
||||
import androidx.room.Room;
|
||||
|
||||
import com.android.settings.display.AutoBrightnessSettings;
|
||||
import com.android.settings.DisplaySettings;
|
||||
import com.android.settings.display.ScreenTimeoutSettings;
|
||||
import com.android.settings.fuelgauge.batteryusage.BatteryInformation;
|
||||
import com.android.settings.fuelgauge.batteryusage.ConvertUtils;
|
||||
@@ -215,8 +215,9 @@ public class BatteryTestUtils {
|
||||
.setType(PowerAnomalyType.TYPE_SETTINGS_BANNER)
|
||||
.setKey(PowerAnomalyKey.KEY_BRIGHTNESS)
|
||||
.setWarningBannerInfo(WarningBannerInfo.newBuilder()
|
||||
.setMainButtonDestination(AutoBrightnessSettings.class.getName())
|
||||
.setMainButtonSourceMetricsCategory(SettingsEnums.SETTINGS_AUTO_BRIGHTNESS)
|
||||
.setMainButtonDestination(DisplaySettings.class.getName())
|
||||
.setMainButtonSourceMetricsCategory(SettingsEnums.DISPLAY)
|
||||
.setMainButtonSourceHighlightKey("auto_brightness_entry")
|
||||
.build())
|
||||
.build();
|
||||
}
|
||||
@@ -230,6 +231,7 @@ public class BatteryTestUtils {
|
||||
.setWarningBannerInfo(WarningBannerInfo.newBuilder()
|
||||
.setMainButtonDestination(ScreenTimeoutSettings.class.getName())
|
||||
.setMainButtonSourceMetricsCategory(SettingsEnums.SCREEN_TIMEOUT)
|
||||
.setMainButtonSourceHighlightKey("60000")
|
||||
.build())
|
||||
.build();
|
||||
}
|
||||
|
Reference in New Issue
Block a user