diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml index f563643aea4..fbb464ca938 100644 --- a/res/xml/configure_notification_settings.xml +++ b/res/xml/configure_notification_settings.xml @@ -56,6 +56,7 @@ android:title="@string/zen_mode_settings_title" settings:useAdminDisabledSummary="true" android:fragment="com.android.settings.notification.ZenModeSettings" + settings:controller="com.android.settings.notification.ZenModePreferenceController" settings:allowDividerAbove="false" /> diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml index b7b64f54758..d38a8e4dc7c 100644 --- a/res/xml/sound_settings.xml +++ b/res/xml/sound_settings.xml @@ -94,7 +94,8 @@ android:order="-120" settings:useAdminDisabledSummary="true" settings:keywords="@string/keywords_sounds_and_notifications_interruptions" - settings:allowDividerAbove="true"/> + settings:allowDividerAbove="true" + settings:controller="com.android.settings.notification.ZenModePreferenceController" /> - onPreferenceDataChanged(listPreference)); + onPreferenceDataChanged(listPreference)); mHfpOutputControllerKey = use(HandsFreeProfileOutputPreferenceController.class).getPreferenceKey(); @@ -235,7 +234,6 @@ public class SoundSettings extends DashboardFragment { private static List buildPreferenceControllers(Context context, SoundSettings fragment, Lifecycle lifecycle) { final List controllers = new ArrayList<>(); - controllers.add(new ZenModePreferenceController(context, lifecycle, KEY_ZEN_MODE)); // Volumes are added via xml @@ -309,15 +307,6 @@ public class SoundSettings extends DashboardFragment { return buildPreferenceControllers(context, null /* fragment */, null /* lifecycle */); } - - @Override - public List getNonIndexableKeys(Context context) { - List keys = super.getNonIndexableKeys(context); - // Duplicate results - keys.add((new ZenModePreferenceController(context, null, KEY_ZEN_MODE)) - .getPreferenceKey()); - return keys; - } }; // === Work Sound Settings === diff --git a/src/com/android/settings/notification/ZenModePreferenceController.java b/src/com/android/settings/notification/ZenModePreferenceController.java index 0d94029f47c..d70ffe28b8b 100644 --- a/src/com/android/settings/notification/ZenModePreferenceController.java +++ b/src/com/android/settings/notification/ZenModePreferenceController.java @@ -23,38 +23,30 @@ import android.net.Uri; import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; -import android.util.Slog; -import com.android.settings.core.PreferenceControllerMixin; -import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settings.core.BasePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; -public class ZenModePreferenceController extends AbstractPreferenceController - implements LifecycleObserver, OnResume, OnPause, PreferenceControllerMixin { +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; + +public class ZenModePreferenceController extends BasePreferenceController + implements LifecycleObserver, OnResume, OnPause { - private final String mKey; private SettingObserver mSettingObserver; private ZenModeSettings.SummaryBuilder mSummaryBuilder; - public ZenModePreferenceController(Context context, Lifecycle lifecycle, String key) { - super(context); + public ZenModePreferenceController(Context context, String key) { + super(context, key); mSummaryBuilder = new ZenModeSettings.SummaryBuilder(context); - - if (lifecycle != null) { - lifecycle.addObserver(this); - } - mKey = key; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - mSettingObserver = new SettingObserver(screen.findPreference(mKey)); + mSettingObserver = new SettingObserver(screen.findPreference(getPreferenceKey())); } @Override @@ -72,13 +64,8 @@ public class ZenModePreferenceController extends AbstractPreferenceController } @Override - public String getPreferenceKey() { - return mKey; - } - - @Override - public boolean isAvailable() { - return true; + public int getAvailabilityStatus() { + return AVAILABLE_UNSEARCHABLE; } @Override diff --git a/tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java index 3ea4471fadc..ece25e2661b 100644 --- a/tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java @@ -16,6 +16,7 @@ package com.android.settings.notification; +import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; @@ -27,7 +28,6 @@ import static org.mockito.Mockito.when; import android.app.NotificationManager; import android.app.NotificationManager.Policy; import android.content.Context; -import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -40,6 +40,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.shadows.ShadowApplication; import org.robolectric.util.ReflectionHelpers; +import androidx.preference.Preference; + @RunWith(SettingsRobolectricTestRunner.class) public class ZenModePreferenceControllerTest { @@ -61,7 +63,7 @@ public class ZenModePreferenceControllerTest { ShadowApplication shadowApplication = ShadowApplication.getInstance(); shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNotificationManager); mContext = shadowApplication.getApplicationContext(); - mController = new ZenModePreferenceController(mContext, null, KEY_ZEN_MODE); + mController = new ZenModePreferenceController(mContext, KEY_ZEN_MODE); when(mNotificationManager.getNotificationPolicy()).thenReturn(mPolicy); mSummaryBuilder = spy(new ZenModeSettings.SummaryBuilder(mContext)); ReflectionHelpers.setField(mController, "mSummaryBuilder", mSummaryBuilder); @@ -69,8 +71,8 @@ public class ZenModePreferenceControllerTest { } @Test - public void isAlwaysAvailable() { - assertThat(mController.isAvailable()).isTrue(); + public void isAvailable_unsearchable() { + assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE); } @Test