Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 50c95492 authored by Matías Hernández's avatar Matías Hernández
Browse files

Support (non-editable) display of DND with a filter != PRIORITY

Whenever setInterruptionFilter() is called with NONE or ALARMS, the Do Not Disturb mode now shows the current policy (nothing allowed or alarms/media allowed), instead of the normal PRIORITY policy. This policy is read-only in the UI since it cannot be customized.

This should be, or at least become, pretty rare (with small exceptions, apps targeting V that call setInterruptionFilter() will use an implicit mode instead of changing the global zen mode, plus using these filters is quite nonstandard in itself).

Fixes: 361586248
Test: atest & manual (toggling DND via cmd shell)
Flag: android.app.modes_ui
Change-Id: If2439480235d30aa310ad8925341183b9761784c
parent 2d07418b
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -44,8 +44,8 @@ class InterruptionFilterPreferenceController extends AbstractZenModePreferenceCo

    @Override
    public void updateState(Preference preference, @NonNull ZenMode zenMode) {
        preference.setEnabled(zenMode.isEnabled());
        boolean allowingAll = zenMode.getRule().getInterruptionFilter() == INTERRUPTION_FILTER_ALL;
        preference.setEnabled(zenMode.isEnabled() && zenMode.canEditPolicy());
        boolean allowingAll = zenMode.getInterruptionFilter() == INTERRUPTION_FILTER_ALL;

        ((TwoStatePreference) preference).setChecked(allowingAll);
        preference.setSummary(allowingAll
@@ -57,7 +57,7 @@ class InterruptionFilterPreferenceController extends AbstractZenModePreferenceCo
    public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) {
        final boolean allowAll = ((Boolean) newValue);
        return saveMode(zenMode -> {
            zenMode.getRule().setInterruptionFilter(allowAll
            zenMode.setInterruptionFilter(allowAll
                    ? INTERRUPTION_FILTER_ALL
                    : INTERRUPTION_FILTER_PRIORITY);
            return zenMode;
+1 −1
Original line number Diff line number Diff line
@@ -228,7 +228,7 @@ public class SetupInterstitialActivity extends FragmentActivity {
            return false;
        }

        modeToUpdate.getRule().setEnabled(true);
        modeToUpdate.setEnabled(true);
        mBackend.updateMode(modeToUpdate);
        return true;
    }
+2 −2
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ class ZenModeAppsLinkPreferenceController extends AbstractZenModePreferenceContr

    @Override
    public boolean isAvailable(ZenMode zenMode) {
        return zenMode.getRule().getInterruptionFilter() != INTERRUPTION_FILTER_ALL;
        return zenMode.getInterruptionFilter() != INTERRUPTION_FILTER_ALL;
    }

    @Override
@@ -102,7 +102,7 @@ class ZenModeAppsLinkPreferenceController extends AbstractZenModePreferenceContr
        preference.setIntent(
                ZenSubSettingLauncher.forModeFragment(mContext, ZenModeAppsFragment.class,
                        zenMode.getId(), SettingsEnums.ZEN_PRIORITY_MODE).toIntent());
        preference.setEnabled(zenMode.isEnabled());
        preference.setEnabled(zenMode.isEnabled() && zenMode.canEditPolicy());

        mZenMode = zenMode;
        mPreference = (CircularIconsPreference) preference;
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ class ZenModeDisplayEffectPreferenceController extends AbstractZenModePreference
                    updatedEffects.setShouldUseNightMode(allow);
                    break;
            }
            zenMode.getRule().setDeviceEffects(updatedEffects.build());
            zenMode.setDeviceEffects(updatedEffects.build());
            return zenMode;
        });
    }
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ class ZenModeDisplayLinkPreferenceController extends AbstractZenModePreferenceCo
        preference.setIntent(
                ZenSubSettingLauncher.forModeFragment(mContext, ZenModeDisplayFragment.class,
                        zenMode.getId(), SettingsEnums.ZEN_PRIORITY_MODE).toIntent());
        preference.setEnabled(zenMode.isEnabled());
        preference.setEnabled(zenMode.isEnabled() && zenMode.canEditPolicy());
    }

    @Override
Loading