From c4e5ecf703e4648eef9e5cb3065f85d744d8dcb5 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 11 Apr 2018 11:33:32 -0400 Subject: [PATCH] Show onboarding screen from dnd tile Increase the DND version and reset the setting so those who are upgrading P->P see the new flow. Test: manual Change-Id: I9286f022d1fa6520305ff03dbce54c4eec0e371a Fixes: 77658931 --- .../service/notification/ZenModeConfig.java | 5 +- core/res/res/xml/default_zen_mode_config.xml | 2 +- .../providers/settings/SettingsProvider.java | 17 ++++++- .../src/com/android/systemui/qs/tiles/DndTile.java | 55 ++++++++++++++-------- 4 files changed, 55 insertions(+), 24 deletions(-) diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java index daecea71d926..7b01f7a49be4 100644 --- a/core/java/android/service/notification/ZenModeConfig.java +++ b/core/java/android/service/notification/ZenModeConfig.java @@ -83,7 +83,8 @@ public class ZenModeConfig implements Parcelable { private static final int DAY_MINUTES = 24 * 60; private static final int ZERO_VALUE_MS = 10 * SECONDS_MS; - // Default allow categories set in readXml() from default_zen_mode_config.xml, fallback values: + // Default allow categories set in readXml() from default_zen_mode_config.xml, + // fallback/upgrade values: private static final boolean DEFAULT_ALLOW_ALARMS = true; private static final boolean DEFAULT_ALLOW_MEDIA = true; private static final boolean DEFAULT_ALLOW_SYSTEM = false; @@ -97,7 +98,7 @@ public class ZenModeConfig implements Parcelable { private static final int DEFAULT_SUPPRESSED_VISUAL_EFFECTS = Policy.getAllSuppressedVisualEffects(); - public static final int XML_VERSION = 6; + public static final int XML_VERSION = 7; public static final String ZEN_TAG = "zen"; private static final String ZEN_ATT_VERSION = "version"; private static final String ZEN_ATT_USER = "user"; diff --git a/core/res/res/xml/default_zen_mode_config.xml b/core/res/res/xml/default_zen_mode_config.xml index f1b61a7edbd6..dce8a659f983 100644 --- a/core/res/res/xml/default_zen_mode_config.xml +++ b/core/res/res/xml/default_zen_mode_config.xml @@ -18,7 +18,7 @@ --> - + diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index a6d6250df885..022e30692beb 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -2935,7 +2935,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 162; + private static final int SETTINGS_VERSION = 163; private final int mUserId; @@ -3709,6 +3709,21 @@ public class SettingsProvider extends ContentProvider { currentVersion = 162; } + if (currentVersion == 162) { + // Version 162: Add a gesture for silencing phones + final SettingsState settings = getGlobalSettingsLocked(); + final Setting currentSetting = settings.getSettingLocked( + Global.SHOW_ZEN_UPGRADE_NOTIFICATION); + if (!currentSetting.isNull() + && TextUtils.equals("0", currentSetting.getValue())) { + settings.insertSettingLocked( + Global.SHOW_ZEN_UPGRADE_NOTIFICATION, "1", + null, true, SettingsState.SYSTEM_PACKAGE_NAME); + } + + currentVersion = 163; + } + // vXXX: Add new settings above this point. if (currentVersion != newVersion) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java index 4b312f533024..16c2a75fe39f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java @@ -143,26 +143,41 @@ public class DndTile extends QSTileImpl { public void showDetail(boolean show) { int zenDuration = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.ZEN_DURATION, 0); - switch (zenDuration) { - case Settings.Global.ZEN_DURATION_PROMPT: - mUiHandler.post(() -> { - Dialog mDialog = new EnableZenModeDialog(mContext).createDialog(); - mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); - SystemUIDialog.setShowForAllUsers(mDialog, true); - SystemUIDialog.registerDismissListener(mDialog); - SystemUIDialog.setWindowOnTop(mDialog); - mUiHandler.post(() -> mDialog.show()); - mHost.collapsePanels(); - }); - break; - case Settings.Global.ZEN_DURATION_FOREVER: - mController.setZen(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS, null, TAG); - break; - default: - Uri conditionId = ZenModeConfig.toTimeCondition(mContext, zenDuration, - ActivityManager.getCurrentUser(), true).id; - mController.setZen(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS, - conditionId, TAG); + boolean showOnboarding = Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.SHOW_ZEN_UPGRADE_NOTIFICATION, 0) != 0; + if (showOnboarding) { + // don't show on-boarding again or notification ever + Settings.Global.putInt(mContext.getContentResolver(), + Global.SHOW_ZEN_UPGRADE_NOTIFICATION, 0); + // turn on DND + mController.setZen(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS, null, TAG); + // show on-boarding screen + Intent intent = new Intent(Settings.ZEN_MODE_ONBOARDING); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + Dependency.get(ActivityStarter.class).postStartActivityDismissingKeyguard(intent, 0); + } else { + switch (zenDuration) { + case Settings.Global.ZEN_DURATION_PROMPT: + mUiHandler.post(() -> { + Dialog mDialog = new EnableZenModeDialog(mContext).createDialog(); + mDialog.getWindow().setType( + WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); + SystemUIDialog.setShowForAllUsers(mDialog, true); + SystemUIDialog.registerDismissListener(mDialog); + SystemUIDialog.setWindowOnTop(mDialog); + mUiHandler.post(() -> mDialog.show()); + mHost.collapsePanels(); + }); + break; + case Settings.Global.ZEN_DURATION_FOREVER: + mController.setZen(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS, null, TAG); + break; + default: + Uri conditionId = ZenModeConfig.toTimeCondition(mContext, zenDuration, + ActivityManager.getCurrentUser(), true).id; + mController.setZen(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS, + conditionId, TAG); + } } } -- 2.11.0