Merge "Restore the style of the screen saver widget from switch style to button style." into sc-v2-dev am: bfd37d65b0 am: 0bac54a0ee
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16512667
Change-Id: I6403aec4c28473abd027bf11f977051f008bb414
diff --git a/res/layout/dream_start_button.xml b/res/layout/dream_start_button.xml
new file mode 100644
index 0000000..17ba78d
--- /dev/null
+++ b/res/layout/dream_start_button.xml
@@ -0,0 +1,36 @@
+<?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.
+ -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:gravity="bottom"
+ android:paddingStart="72dp"
+ android:paddingEnd="72dp"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <Button
+ android:id="@+id/dream_start_now_button"
+ style="@style/ActionPrimaryButton"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:text="@string/screensaver_settings_dream_start"/>
+
+</LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7681674..c6c0599 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3249,6 +3249,8 @@
<string name="screensaver_settings_when_to_dream">When to start</string>
<!-- Dream settings screen, action label, current selected screen saver -->
<string name="screensaver_settings_current">Current screen saver</string>
+ <!-- Dream settings screen, button label to start dreaming [CHAR LIMIT=30] -->
+ <string name="screensaver_settings_dream_start">Start now</string>
<!-- Dream settings screen, button label for settings for a specific screensaver -->
<string name="screensaver_settings_button">Settings</string>
<!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions -->
@@ -13607,8 +13609,6 @@
<string name="adaptive_brightness_main_switch_title">Use adaptive brightness</string>
<!-- Title for wifi calling main switch preferences. [CHAR LIMIT=50] -->
<string name="wifi_calling_main_switch_title">Use Wi‑Fi calling</string>
- <!-- Title for Screen saver main switch preferences. [CHAR LIMIT=50] -->
- <string name="screen_saver_main_switch_title">Use screen saver</string>
<!-- Default preference title for showing all apps on device [CHAR_LIMIT=50]-->
<string name="default_see_all_apps_title">See all apps</string>
diff --git a/res/xml/dream_fragment_overview.xml b/res/xml/dream_fragment_overview.xml
index 6e18a97..42b0334 100644
--- a/res/xml/dream_fragment_overview.xml
+++ b/res/xml/dream_fragment_overview.xml
@@ -19,11 +19,6 @@
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/screensaver_settings_title">
- <com.android.settingslib.widget.MainSwitchPreference
- android:key="dream_start_now_button_container"
- android:title="@string/screen_saver_main_switch_title"
- settings:controller="com.android.settings.dream.StartNowPreferenceController"/>
-
<com.android.settings.widget.GearPreference
android:key="current_screensaver"
android:title="@string/screensaver_settings_current"
@@ -35,4 +30,12 @@
android:title="@string/screensaver_settings_when_to_dream"
android:fragment="com.android.settings.dream.WhenToDreamPicker" />
+ <PreferenceCategory>
+ <com.android.settingslib.widget.LayoutPreference
+ android:key="dream_start_now_button_container"
+ android:layout="@layout/dream_start_button"
+ android:selectable="false"
+ settings:controller="com.android.settings.dream.StartNowPreferenceController" />
+ </PreferenceCategory>
+
</PreferenceScreen>
diff --git a/src/com/android/settings/dream/StartNowPreferenceController.java b/src/com/android/settings/dream/StartNowPreferenceController.java
index add1b58f..f270496 100644
--- a/src/com/android/settings/dream/StartNowPreferenceController.java
+++ b/src/com/android/settings/dream/StartNowPreferenceController.java
@@ -17,20 +17,23 @@
package com.android.settings.dream;
import android.content.Context;
+import android.widget.Button;
import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.SettingsMainSwitchPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.dream.DreamBackend;
+import com.android.settingslib.widget.LayoutPreference;
/**
* Controller that used to enable screen saver
*/
-public class StartNowPreferenceController extends SettingsMainSwitchPreferenceController {
+public class StartNowPreferenceController extends BasePreferenceController {
private final DreamBackend mBackend;
private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -47,30 +50,23 @@
}
@Override
- public void updateState(Preference preference) {
- mSwitchPreference.setChecked(false);
- mSwitchPreference.setEnabled(mBackend.getWhenToDreamSetting() != DreamBackend.NEVER);
- }
+ public void displayPreference(PreferenceScreen screen) {
+ super.displayPreference(screen);
- @Override
- public boolean isChecked() {
- return false;
- }
-
- @Override
- public boolean setChecked(boolean isChecked) {
- if (isChecked) {
- if (mSwitchPreference != null) {
- mMetricsFeatureProvider.logClickedPreference(mSwitchPreference,
- mSwitchPreference.getExtras().getInt(DashboardFragment.CATEGORY));
- }
+ final LayoutPreference pref = screen.findPreference(getPreferenceKey());
+ final Button startButton = pref.findViewById(R.id.dream_start_now_button);
+ startButton.setOnClickListener(v -> {
+ mMetricsFeatureProvider.logClickedPreference(pref,
+ pref.getExtras().getInt(DashboardFragment.CATEGORY));
mBackend.startDreaming();
- }
- return true;
+ });
}
@Override
- public int getSliceHighlightMenuRes() {
- return R.string.menu_key_display;
+ public void updateState(Preference preference) {
+ super.updateState(preference);
+ final Button startButton = ((LayoutPreference) preference)
+ .findViewById(R.id.dream_start_now_button);
+ startButton.setEnabled(mBackend.getWhenToDreamSetting() != DreamBackend.NEVER);
}
}
diff --git a/tests/robotests/src/com/android/settings/dream/StartNowPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/dream/StartNowPreferenceControllerTest.java
index 6c8a8f6..98ba1ce 100644
--- a/tests/robotests/src/com/android/settings/dream/StartNowPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/dream/StartNowPreferenceControllerTest.java
@@ -16,17 +16,18 @@
package com.android.settings.dream;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.widget.Button;
import androidx.preference.PreferenceScreen;
+import com.android.settings.R;
import com.android.settingslib.dream.DreamBackend;
-import com.android.settingslib.widget.MainSwitchPreference;
+import com.android.settingslib.widget.LayoutPreference;
import org.junit.Before;
import org.junit.Test;
@@ -46,7 +47,9 @@
@Mock
private PreferenceScreen mScreen;
@Mock
- private MainSwitchPreference mPref;
+ private LayoutPreference mLayoutPref;
+ @Mock
+ private Button mButton;
@Mock
private DreamBackend mBackend;
@@ -56,36 +59,29 @@
mContext = spy(RuntimeEnvironment.application);
mController = new StartNowPreferenceController(mContext, "key");
- mPref = mock(MainSwitchPreference.class);
- when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPref);
+ when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mLayoutPref);
+ when(mLayoutPref.findViewById(R.id.dream_start_now_button)).thenReturn(mButton);
ReflectionHelpers.setField(mController, "mBackend", mBackend);
}
@Test
- public void displayPreference_shouldAddOnSwitchChangeListener() {
- mController.displayPreference(mScreen);
-
- verify(mPref).addOnSwitchChangeListener(mController);
- }
-
- @Test
- public void updateState_neverDreaming_preferenceShouldDidabled() {
+ public void updateState_neverDreaming_buttonShouldDidabled() {
when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.NEVER);
mController.displayPreference(mScreen);
- mController.updateState(mPref);
+ mController.updateState(mLayoutPref);
- verify(mPref).setEnabled(false);
+ verify(mButton).setEnabled(false);
}
@Test
- public void updateState_dreamIsAvailable_preferenceShouldEnabled() {
+ public void updateState_dreamIsAvailable_buttonShouldEnabled() {
when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.EITHER);
mController.displayPreference(mScreen);
- mController.updateState(mPref);
+ mController.updateState(mLayoutPref);
- verify(mPref).setEnabled(true);
+ verify(mButton).setEnabled(true);
}
}