Redirect to new modes page when modes_ui is on.

The new modes page has essentially no content yet, but this is a rough proof of concept for the existing abstract classes and hopefully serves as a building block for future changes. It lists modes and those preferences lead to contentless pages that will be fleshed out later..

Flag: android.app.modes_ui
Bug: 327260745
Test: ZenModePreferenceControllerTest
Test: manual; individual pages only have skeleton functionality and should be unit tested in future CLs
Change-Id: I12f48b48f761e3c9ff1a173445b15f7536d34edb
This commit is contained in:
Yuri Lin
2024-04-11 17:12:24 -04:00
parent 7469ed03de
commit eff863e5a3
9 changed files with 438 additions and 1 deletions

View File

@@ -16,6 +16,7 @@
package com.android.settings.notification.zen;
import android.app.Flags;
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
@@ -27,7 +28,9 @@ import android.provider.Settings;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.notification.modes.ZenModesListFragment;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
@@ -46,7 +49,9 @@ public class ZenModePreferenceController extends BasePreferenceController
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mSettingObserver = new SettingObserver(screen.findPreference(getPreferenceKey()));
Preference preference = screen.findPreference(getPreferenceKey());
mSettingObserver = new SettingObserver(preference);
maybeSetTitleAndDestination(preference);
}
@Override
@@ -71,11 +76,22 @@ public class ZenModePreferenceController extends BasePreferenceController
@Override
public void updateState(Preference preference) {
super.updateState(preference);
maybeSetTitleAndDestination(preference);
if (preference.isEnabled()) {
preference.setSummary(mSummaryBuilder.getSoundSummary());
}
}
// Only when modes_ui is active: change title & target fragment.
private void maybeSetTitleAndDestination(Preference preference) {
if (!Flags.modesUi()) {
return;
}
preference.setTitle(R.string.zen_modes_list_title);
preference.setFragment(ZenModesListFragment.class.getCanonicalName());
}
class SettingObserver extends ContentObserver {
private final Uri ZEN_MODE_URI = Settings.Global.getUriFor(Settings.Global.ZEN_MODE);
private final Uri ZEN_MODE_CONFIG_ETAG_URI = Settings.Global.getUriFor(