Support dnd condition in Settings
- Add way to open QS detail panels directly
- Add internal broadcast that can launch apps when dnd mode changes
Change-Id: If2b6350dc31623f3bf2f64c7eb141cff5d3d4e89
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index ae8542a..16fd9eb 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 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 10d4a96..deedae0 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 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 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 @@
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 76b8223..8f7c95e 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 @@
animateExpandNotificationsPanel();
break;
case MSG_OPEN_SETTINGS_PANEL:
- animateExpandSettingsPanel();
+ animateExpandSettingsPanel((String) m.obj);
break;
case MSG_CLOSE_PANELS:
animateCollapsePanels();
@@ -2305,7 +2305,7 @@
}
@Override
- public void animateExpandSettingsPanel() {
+ public void animateExpandSettingsPanel(String subPanel) {
if (SPEW) Log.d(TAG, "animateExpand: mExpandedVisible=" + mExpandedVisible);
if (!panelsEnabled()) {
return;
@@ -2314,6 +2314,10 @@
// 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 856a774..44b41c5 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 @@
}
@Override
- public void animateExpandSettingsPanel() {
+ public void animateExpandSettingsPanel(String subPanel) {
}
@Override