From 542644e83f72d036c1bd7173e9dc6d12e15b3eaa Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Wed, 14 Dec 2022 18:47:57 +0000 Subject: [PATCH 1/2] Change screensaver ctrlr to base pref ctrlr. This change makes it that the ScreenSaverPreferenceController extends BasePreferenceController so that it can be readily used and pointed to from an xml file. Bug: 261627295 Test: atest ScreenSaverPreferenceControllerTest Change-Id: I95487f2f49a23422fff46f30b0cfa287582a547b --- res/xml/display_settings.xml | 3 +- src/com/android/settings/DisplaySettings.java | 2 -- .../ScreenSaverPreferenceController.java | 28 ++++++++----------- .../ScreenSaverPreferenceControllerTest.java | 4 ++- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index 1b5e6c01cc4..ad5236ecbd3 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -146,7 +146,8 @@ android:key="screensaver" android:title="@string/screensaver_settings_title" android:fragment="com.android.settings.dream.DreamSettings" - settings:keywords="@string/keywords_screensaver"/> + settings:keywords="@string/keywords_screensaver" + settings:controller="com.android.settings.display.ScreenSaverPreferenceController"/> controllers = new ArrayList<>(); controllers.add(new CameraGesturePreferenceController(context)); controllers.add(new LiftToWakePreferenceController(context)); - controllers.add(new ScreenSaverPreferenceController(context)); controllers.add(new TapToWakePreferenceController(context)); controllers.add(new VrDisplayPreferenceController(context)); controllers.add(new ShowOperatorNamePreferenceController(context)); diff --git a/src/com/android/settings/display/ScreenSaverPreferenceController.java b/src/com/android/settings/display/ScreenSaverPreferenceController.java index d6fef11b220..db4bc37054a 100644 --- a/src/com/android/settings/display/ScreenSaverPreferenceController.java +++ b/src/com/android/settings/display/ScreenSaverPreferenceController.java @@ -16,47 +16,41 @@ package com.android.settings.display; import android.content.Context; import android.os.UserManager; -import androidx.preference.Preference; - import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dream.DreamSettings; -import com.android.settingslib.core.AbstractPreferenceController; -public class ScreenSaverPreferenceController extends AbstractPreferenceController implements +public class ScreenSaverPreferenceController extends BasePreferenceController implements PreferenceControllerMixin { - private static final String KEY_SCREEN_SAVER = "screensaver"; private final boolean mDreamsDisabledByAmbientModeSuppression; - public ScreenSaverPreferenceController(Context context) { - super(context); + public ScreenSaverPreferenceController(Context context, String preferenceKey) { + super(context, preferenceKey); + mDreamsDisabledByAmbientModeSuppression = context.getResources().getBoolean( com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig); } @Override - public boolean isAvailable() { + public int getAvailabilityStatus() { final boolean dreamsSupported = mContext.getResources().getBoolean( com.android.internal.R.bool.config_dreamsSupported); final boolean dreamsOnlyEnabledForDockUser = mContext.getResources().getBoolean( com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser); // TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM. - return dreamsSupported && (!dreamsOnlyEnabledForDockUser || isSystemUser()); + return (dreamsSupported && (!dreamsOnlyEnabledForDockUser || isSystemUser())) + ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override - public String getPreferenceKey() { - return KEY_SCREEN_SAVER; - } - - @Override - public void updateState(Preference preference) { + public CharSequence getSummary() { if (mDreamsDisabledByAmbientModeSuppression && AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime(mContext)) { - preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime); + return mContext.getString(R.string.screensaver_settings_when_to_dream_bedtime); } else { - preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext)); + return DreamSettings.getSummaryTextWithDreamName(mContext); } } diff --git a/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java b/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java index 484138e78bf..180ea90925f 100644 --- a/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java @@ -45,11 +45,13 @@ public class ScreenSaverPreferenceControllerTest { private ScreenSaverPreferenceController mController; + private final String mPrefKey = "test_screensaver"; + @Before public void setup() { MockitoAnnotations.initMocks(this); - mController = new ScreenSaverPreferenceController(mContext); + mController = new ScreenSaverPreferenceController(mContext, mPrefKey); when(mContext.getResources()).thenReturn(mResources); when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); From 65836b1e3db74b29250b913f433dd6cb17c3b9c2 Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Wed, 14 Dec 2022 16:46:48 +0000 Subject: [PATCH 2/2] Add top-level Communal settings. This change adds a new top-level setting, of which the availability is controlled by a build time config value. It also registers the new communal category so that prebuilt packages can inject preferences into it. Bug: 261641080 Test: verified on device that communal settings show up on top level Test: atest ScreenSaverPreferenceControllerTest Change-Id: Idf79ae5b89ecc3498373de56a677b4876fb121c3 --- res/drawable/ia_settings_communal.xml | 24 ++++++++++ res/values/config.xml | 3 ++ res/values/menu_keys.xml | 1 + res/values/strings.xml | 6 +++ res/xml/communal_settings.xml | 20 +++++++++ res/xml/top_level_settings.xml | 10 +++++ .../communal/CommunalDashboardFragment.java | 44 +++++++++++++++++++ .../CommunalPreferenceController.java | 37 ++++++++++++++++ .../dashboard/DashboardFragmentRegistry.java | 3 ++ 9 files changed, 148 insertions(+) create mode 100644 res/drawable/ia_settings_communal.xml create mode 100644 res/xml/communal_settings.xml create mode 100644 src/com/android/settings/communal/CommunalDashboardFragment.java create mode 100644 src/com/android/settings/communal/CommunalPreferenceController.java diff --git a/res/drawable/ia_settings_communal.xml b/res/drawable/ia_settings_communal.xml new file mode 100644 index 00000000000..14642c9a168 --- /dev/null +++ b/res/drawable/ia_settings_communal.xml @@ -0,0 +1,24 @@ + + + + + diff --git a/res/values/config.xml b/res/values/config.xml index e3b8618f482..4aa41425ce6 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -622,6 +622,9 @@ false + + false + false diff --git a/res/values/menu_keys.xml b/res/values/menu_keys.xml index 2841b699c97..27e9639122a 100755 --- a/res/values/menu_keys.xml +++ b/res/values/menu_keys.xml @@ -17,6 +17,7 @@ top_level_network + top_level_communal top_level_connected_devices top_level_apps top_level_notifications diff --git a/res/values/strings.xml b/res/values/strings.xml index 62d55fa1337..17a6fcf125d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4019,6 +4019,12 @@ Battery level + + + Communal + + Communal settings + APNs diff --git a/res/xml/communal_settings.xml b/res/xml/communal_settings.xml new file mode 100644 index 00000000000..1a7938f855e --- /dev/null +++ b/res/xml/communal_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml index 5fbc7350b89..8c82b671688 100644 --- a/res/xml/top_level_settings.xml +++ b/res/xml/top_level_settings.xml @@ -30,6 +30,16 @@ settings:highlightableMenuKey="@string/menu_key_network" settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/> + + (PARENT_TO_CATEGORY_KEY_MAP.size());