diff options
| author | 2015-12-14 15:39:55 +0000 | |
|---|---|---|
| committer | 2015-12-14 15:39:55 +0000 | |
| commit | ded2b105203fbf3645a24f81d9e46960a980baf7 (patch) | |
| tree | 81ae5e66cda92af1c7b6d413fd337b7e0f482f94 | |
| parent | 2b9ef6548be89d36ea7629f4a3d8ba7bba1422ce (diff) | |
| parent | a9927325eda025504d59bb6594fee8e240d95b01 (diff) | |
Merge "Support dnd condition in Settings"
11 files changed, 50 insertions, 13 deletions
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index 89610e99a718..85d9831921ac 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -128,6 +128,14 @@ public class NotificationManager = "android.app.action.INTERRUPTION_FILTER_CHANGED"; /** + * Intent that is broadcast when the state of getCurrentInterruptionFilter() changes. + * @hide + */ + @SdkConstant(SdkConstant.SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_INTERRUPTION_FILTER_CHANGED_INTERNAL + = "android.app.action.INTERRUPTION_FILTER_CHANGED_INTERNAL"; + + /** * {@link #getCurrentInterruptionFilter() Interruption filter} constant - * Normal interruption filter. */ diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java index 5e8ad68957b2..b899116142c8 100644 --- a/core/java/android/app/StatusBarManager.java +++ b/core/java/android/app/StatusBarManager.java @@ -180,10 +180,17 @@ public class StatusBarManager { * Expand the settings panel. */ public void expandSettingsPanel() { + expandSettingsPanel(null); + } + + /** + * Expand the settings panel and open a subPanel, pass null to just open the settings panel. + */ + public void expandSettingsPanel(String subPanel) { try { final IStatusBarService svc = getService(); if (svc != null) { - svc.expandSettingsPanel(); + svc.expandSettingsPanel(subPanel); } } catch (RemoteException ex) { // system process is dead anyway. diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index 11ef18b4d5c0..849d3145bb56 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -28,7 +28,7 @@ oneway interface IStatusBar void removeIcon(int index); void disable(int state1, int state2); void animateExpandNotificationsPanel(); - void animateExpandSettingsPanel(); + void animateExpandSettingsPanel(String subPanel); void animateCollapsePanels(); void setSystemUiVisibility(int vis, int mask); void topAppWindowChanged(boolean menuVisible); diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index 6c957becc5e5..0a4ad0661c64 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -39,7 +39,7 @@ interface IStatusBarService void topAppWindowChanged(boolean menuVisible); void setImeWindowStatus(in IBinder token, int vis, int backDisposition, boolean showImeSwitcher); - void expandSettingsPanel(); + void expandSettingsPanel(String subPanel); void setCurrentUser(int newUserId); // ---- Methods below are for use by the status bar policy services ---- diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index ae8542ad9d88..16fd9ebba7fd 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -154,6 +154,20 @@ public class QSPanel extends FrameLayout implements Tunable { } } + public void openDetails(String subPanel) { + QSTile<?> tile = getTile(subPanel); + showDetailAdapter(true, tile.getDetailAdapter(), new int[] {getWidth() / 2, 0}); + } + + private QSTile<?> getTile(String subPanel) { + for (int i = 0; i < mRecords.size(); i++) { + if (subPanel.equals(mRecords.get(i).tile.getTileSpec())) { + return mRecords.get(i).tile; + } + } + return mHost.createTile(subPanel); + } + protected void createCustomizePanel() { mCustomizePanel = (QSCustomizer) LayoutInflater.from(mContext) .inflate(R.layout.qs_customize_panel, null); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index 10d4a965852f..deedae0f6a80 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -91,7 +91,7 @@ public class CommandQueue extends IStatusBar.Stub { public void disable(int state1, int state2, boolean animate); public void animateExpandNotificationsPanel(); public void animateCollapsePanels(int flags); - public void animateExpandSettingsPanel(); + public void animateExpandSettingsPanel(String obj); public void setSystemUiVisibility(int vis, int mask); public void topAppWindowChanged(boolean visible); public void setImeWindowStatus(IBinder token, int vis, int backDisposition, @@ -157,10 +157,10 @@ public class CommandQueue extends IStatusBar.Stub { } } - public void animateExpandSettingsPanel() { + public void animateExpandSettingsPanel(String subPanel) { synchronized (mList) { mHandler.removeMessages(MSG_EXPAND_SETTINGS); - mHandler.sendEmptyMessage(MSG_EXPAND_SETTINGS); + mHandler.obtainMessage(MSG_EXPAND_SETTINGS, subPanel).sendToTarget(); } } @@ -353,7 +353,7 @@ public class CommandQueue extends IStatusBar.Stub { mCallbacks.animateCollapsePanels(0); break; case MSG_EXPAND_SETTINGS: - mCallbacks.animateExpandSettingsPanel(); + mCallbacks.animateExpandSettingsPanel((String) msg.obj); break; case MSG_SET_SYSTEMUI_VISIBILITY: mCallbacks.setSystemUiVisibility(msg.arg1, msg.arg2); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 76b8223ba778..8f7c95e1b9af 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -2162,7 +2162,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, animateExpandNotificationsPanel(); break; case MSG_OPEN_SETTINGS_PANEL: - animateExpandSettingsPanel(); + animateExpandSettingsPanel((String) m.obj); break; case MSG_CLOSE_PANELS: animateCollapsePanels(); @@ -2305,7 +2305,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } @Override - public void animateExpandSettingsPanel() { + public void animateExpandSettingsPanel(String subPanel) { if (SPEW) Log.d(TAG, "animateExpand: mExpandedVisible=" + mExpandedVisible); if (!panelsEnabled()) { return; @@ -2314,6 +2314,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // Settings are not available in setup if (!mUserSetup) return; + + if (subPanel != null) { + mQSPanel.openDetails(subPanel); + } mNotificationPanel.expandWithQs(); if (false) postStartTracing(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java index 856a774fdcce..44b41c55b4de 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java @@ -135,7 +135,7 @@ public class TvStatusBar extends BaseStatusBar { } @Override - public void animateExpandSettingsPanel() { + public void animateExpandSettingsPanel(String subPanel) { } @Override diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 07343a9fd2f1..1464ea428b31 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -880,6 +880,9 @@ public class NotificationManagerService extends SystemService { @Override void onZenModeChanged() { sendRegisteredOnlyBroadcast(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED); + getContext().sendBroadcastAsUser( + new Intent(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED_INTERNAL), + UserHandle.ALL, android.Manifest.permission.MANAGE_NOTIFICATIONS); synchronized(mNotificationList) { updateInterruptionFilterLocked(); } diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 3c891dff5b1d..6030bab6db64 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -564,6 +564,7 @@ public class ZenModeHelper { private boolean evaluateZenMode(String reason, boolean setRingerMode) { if (DEBUG) Log.d(TAG, "evaluateZenMode"); + final int zenBefore = mZenMode; final int zen = computeZenMode(); ZenLog.traceSetZenMode(zen, reason); mZenMode = zen; @@ -573,7 +574,7 @@ public class ZenModeHelper { applyZenToRingerMode(); } applyRestrictions(); - if (zen != mZenMode) { + if (zen != zenBefore) { mHandler.postDispatchOnZenModeChanged(); } return true; diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index 19b03d5e56cd..fc271704a1ec 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -216,12 +216,12 @@ public class StatusBarManagerService extends IStatusBarService.Stub { } @Override - public void expandSettingsPanel() { + public void expandSettingsPanel(String subPanel) { enforceExpandStatusBar(); if (mBar != null) { try { - mBar.animateExpandSettingsPanel(); + mBar.animateExpandSettingsPanel(subPanel); } catch (RemoteException ex) { } } |