Add button for activating modes manually

Fixes: 308819907
Flag: android.app.modes_ui
Test: ZenModeButtonPreferenceControllerTest
Test: atest com.android.settings.notification.modes
Change-Id: Id018d360c648dd948d2f950ca67cfbea71cc5c68
This commit is contained in:
Julia Reynolds
2024-05-24 16:59:02 -04:00
parent 854227055d
commit 97b462dbf0
9 changed files with 318 additions and 7 deletions

View File

@@ -41,7 +41,7 @@ abstract class AbstractZenModePreferenceController extends AbstractPreferenceCon
@Nullable
protected ZenModesBackend mBackend;
@Nullable // only until updateZenMode() is called
@Nullable // only until setZenMode() is called
private ZenMode mZenMode;
@NonNull
@@ -65,7 +65,22 @@ abstract class AbstractZenModePreferenceController extends AbstractPreferenceCon
@Override
public boolean isAvailable() {
return Flags.modesUi();
if (mZenMode != null) {
return Flags.modesUi() && isAvailable(mZenMode);
} else {
return Flags.modesUi();
}
}
public boolean isAvailable(@NonNull ZenMode zenMode) {
return true;
}
// Called by parent Fragment onAttach, for any methods (such as isAvailable()) that need
// zen mode info before onStart. Most callers should use updateZenMode instead, which will
// do any further necessary propagation.
protected final void setZenMode(@NonNull ZenMode zenMode) {
mZenMode = zenMode;
}
// Called by the parent Fragment onStart, which means it will happen before resume.