Update QS header to spec

- Move brightness slider down.
- Make clock bigger when expanded.
- Show date in collapsed state.
- Change size of avatar depending on collapsed/expanded.

Bug: 15865202
Bug: 15381387
Change-Id: I7894edae495b5a2d12b4fe4637a9aa3fd2e58963
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 9c1dc8e..36cd388 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -28,9 +28,12 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ImageView;
 
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile.DetailAdapter;
+import com.android.systemui.settings.BrightnessController;
+import com.android.systemui.settings.ToggleSlider;
 
 import java.util.ArrayList;
 
@@ -44,6 +47,7 @@
     private final ViewGroup mDetailContent;
     private final View mDetailSettingsButton;
     private final View mDetailDoneButton;
+    private final View mBrightnessView;
     private final CircularClipper mClipper;
     private final H mHandler = new H();
 
@@ -59,6 +63,7 @@
 
     private TileRecord mDetailRecord;
     private Callback mCallback;
+    private BrightnessController mBrightnessController;
 
     public QSPanel(Context context) {
         this(context, null);
@@ -74,9 +79,16 @@
         mDetailDoneButton = mDetail.findViewById(android.R.id.button1);
         mDetail.setVisibility(GONE);
         mDetail.setClickable(true);
+        mBrightnessView = LayoutInflater.from(context).inflate(
+                R.layout.quick_settings_brightness_dialog, this, false);
         addView(mDetail);
+        addView(mBrightnessView);
         mClipper = new CircularClipper(mDetail);
         updateResources();
+
+        mBrightnessController = new BrightnessController(getContext(),
+                (ImageView) findViewById(R.id.brightness_icon),
+                (ToggleSlider) findViewById(R.id.brightness_slider));
     }
 
     public void setCallback(Callback callback) {
@@ -115,6 +127,11 @@
                 r.tile.refreshState();
             }
         }
+        if (listening) {
+            mBrightnessController.registerCallbacks();
+        } else {
+            mBrightnessController.unregisterCallbacks();
+        }
     }
 
     private void showDetail(boolean show, TileRecord r) {
@@ -211,6 +228,7 @@
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         final int width = MeasureSpec.getSize(widthMeasureSpec);
+        mBrightnessView.measure(exactly(width), MeasureSpec.UNSPECIFIED);
         int r = -1;
         int c = -1;
         int rows = 0;
@@ -238,7 +256,7 @@
             final int ch = record.row == 0 ? mLargeCellHeight : mCellHeight;
             record.tileView.measure(exactly(cw), exactly(ch));
         }
-        int h = rows == 0 ? 0 : (getRowTop(rows) + mPanelPaddingBottom);
+        int h = rows == 0 ? mBrightnessView.getHeight() : (getRowTop(rows) + mPanelPaddingBottom);
         mDetail.measure(exactly(width), exactly(h));
         setMeasuredDimension(width, h);
     }
@@ -250,6 +268,8 @@
     @Override
     protected void onLayout(boolean changed, int l, int t, int r, int b) {
         final int w = getWidth();
+        mBrightnessView.layout(0, 0,
+                mBrightnessView.getMeasuredWidth(), mBrightnessView.getMeasuredHeight());
         for (TileRecord record : mRecords) {
             if (record.tileView.getVisibility() == GONE) continue;
             final int cols = getColumnCount(record.row);
@@ -266,8 +286,9 @@
     }
 
     private int getRowTop(int row) {
-        if (row <= 0) return 0;
-        return mLargeCellHeight - mDualTileUnderlap + (row - 1) * mCellHeight;
+        if (row <= 0) return mBrightnessView.getHeight();
+        return mBrightnessView.getHeight()
+                + mLargeCellHeight - mDualTileUnderlap + (row - 1) * mCellHeight;
     }
 
     private int getColumnCount(int row) {