QS: Back button closes detail (if showing)

Bug:16649931
Change-Id: I9748a0793e6a71d833f7c7f884c189e16cccb8f9
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 4901f40..d216069 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -95,7 +95,7 @@
         mDetailDoneButton.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
-                showDetail(false, mDetailRecord);
+                closeDetail();
             }
         });
     }
@@ -134,7 +134,7 @@
         if (mExpanded == expanded) return;
         mExpanded = expanded;
         if (!mExpanded) {
-            showDetail(false /*show*/, mDetailRecord);
+            closeDetail();
         }
     }
 
@@ -226,6 +226,14 @@
         addView(r.tileView);
     }
 
+    public boolean isShowingDetail() {
+        return mDetailRecord != null;
+    }
+
+    public void closeDetail() {
+        showDetail(false, mDetailRecord);
+    }
+
     private void handleShowDetail(Record r, boolean show) {
         if (r instanceof TileRecord) {
             handleShowDetailTile((TileRecord) r, show);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index c46f77a..4f9d4a3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -1424,6 +1424,14 @@
         return mQsExpanded;
     }
 
+    public boolean isQsDetailShowing() {
+        return mQsPanel.isShowingDetail();
+    }
+
+    public void closeQsDetail() {
+        mQsPanel.closeDetail();
+    }
+
     @Override
     public boolean shouldDelayChildPressedState() {
         return true;
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 ee29ad4..06c7be2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -3458,7 +3458,11 @@
             return true;
         }
         if (mNotificationPanel.isQsExpanded()) {
-            mNotificationPanel.animateCloseQs();
+            if (mNotificationPanel.isQsDetailShowing()) {
+                mNotificationPanel.closeQsDetail();
+            } else {
+                mNotificationPanel.animateCloseQs();
+            }
             return true;
         }
         if (mState != StatusBarState.KEYGUARD && mState != StatusBarState.SHADE_LOCKED) {