diff --git a/packages/SystemUI/res/drawable-nodpi/qs_coming_soon.png b/packages/SystemUI/res/drawable-nodpi/qs_coming_soon.png new file mode 100644 index 0000000000000..47c89b1d6caac Binary files /dev/null and b/packages/SystemUI/res/drawable-nodpi/qs_coming_soon.png differ diff --git a/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml b/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml index 47c511c8661a0..b68632afffd84 100644 --- a/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml +++ b/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml @@ -36,11 +36,17 @@ android:id="@+id/panel_holder" android:layout_width="match_parent" android:layout_height="match_parent" + android:layout_marginTop="@*android:dimen/status_bar_height" > + diff --git a/packages/SystemUI/res/layout/quick_settings.xml b/packages/SystemUI/res/layout/quick_settings.xml new file mode 100644 index 0000000000000..a62a470bbe025 --- /dev/null +++ b/packages/SystemUI/res/layout/quick_settings.xml @@ -0,0 +1,45 @@ + + + + + + + + + \ No newline at end of file diff --git a/packages/SystemUI/res/layout/super_status_bar.xml b/packages/SystemUI/res/layout/super_status_bar.xml index ad905bd12afc2..ad6b8f48e2a40 100644 --- a/packages/SystemUI/res/layout/super_status_bar.xml +++ b/packages/SystemUI/res/layout/super_status_bar.xml @@ -36,11 +36,16 @@ android:id="@+id/panel_holder" android:layout_width="match_parent" android:layout_height="match_parent" + android:layout_marginTop="@*android:dimen/status_bar_height" > + diff --git a/packages/SystemUI/res/values-sw600dp-land/dimens.xml b/packages/SystemUI/res/values-sw600dp-land/dimens.xml index afa0b20785547..c6c07195f9c7a 100644 --- a/packages/SystemUI/res/values-sw600dp-land/dimens.xml +++ b/packages/SystemUI/res/values-sw600dp-land/dimens.xml @@ -19,8 +19,4 @@ 0dp 32dp - - - - 0x33 diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml index 2b5248f9303ad..b6faff316636a 100644 --- a/packages/SystemUI/res/values-sw600dp/dimens.xml +++ b/packages/SystemUI/res/values-sw600dp/dimens.xml @@ -21,11 +21,12 @@ 192dp - 0dp + 16dp - - - 0x31 + + + 0x33 + 0x35 430dip diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 8204e95ef87b8..95393737c254a 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -158,9 +158,10 @@ 0dp 0dp - + 0x37 + 0x37 24dp diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java index b2c72e8671956..1ea5b3e338414 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java @@ -18,7 +18,7 @@ public class PanelBar extends FrameLayout { private PanelHolder mPanelHolder; private ArrayList mPanels = new ArrayList(); - private PanelView mTouchingPanel; + protected PanelView mTouchingPanel; public PanelBar(Context context, AttributeSet attrs) { super(context, attrs); @@ -71,24 +71,25 @@ public class PanelBar extends FrameLayout { public void panelExpansionChanged(PanelView panel, float frac) { boolean fullyClosed = true; - boolean fullyOpened = false; + PanelView fullyOpenedPanel = null; for (PanelView pv : mPanels) { if (pv.getExpandedHeight() > 0f) { fullyClosed = false; final float thisFrac = pv.getExpandedFraction(); LOG("panel %s: f=%.1f", pv, thisFrac); if (panel == pv) { - if (thisFrac == 1f) fullyOpened = true; + if (thisFrac == 1f) fullyOpenedPanel = panel; } else { pv.setExpandedFraction(1f-frac); } } } - if (fullyOpened) onPanelFullyOpened(); + if (fullyOpenedPanel != null) onPanelFullyOpened(fullyOpenedPanel); if (fullyClosed) onAllPanelsCollapsed(); else onPanelPeeked(); - LOG("panelExpansionChanged: [%s%s ]", fullyOpened?" fullyOpened":"", fullyClosed?" fullyClosed":""); + LOG("panelExpansionChanged: [%s%s ]", + (fullyOpenedPanel!=null)?" fullyOpened":"", fullyClosed?" fullyClosed":""); } public void collapseAllPanels(boolean animate) { @@ -109,7 +110,7 @@ public class PanelBar extends FrameLayout { LOG("onAllPanelsCollapsed"); } - public void onPanelFullyOpened() { + public void onPanelFullyOpened(PanelView openPanel) { LOG("onPanelFullyOpened"); } } 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 0f84c2f27367c..4d4adcb85a598 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -169,12 +169,16 @@ public class PhoneStatusBar extends BaseStatusBar { PanelView mNotificationPanel; // the sliding/resizing panel within the notification window ScrollView mScrollView; View mExpandedContents; - int mNotificationPanelMarginBottomPx, mNotificationPanelMarginLeftPx; final Rect mNotificationPanelBackgroundPadding = new Rect(); int mNotificationPanelGravity; + int mNotificationPanelMarginBottomPx, mNotificationPanelMarginPx; int mNotificationPanelMinHeight; boolean mNotificationPanelIsFullScreenWidth; + // settings + PanelView mSettingsPanel; + int mSettingsPanelGravity; + // top bar View mClearButton; View mSettingsButton; @@ -310,22 +314,29 @@ public class PhoneStatusBar extends BaseStatusBar { mNotificationPanel = (PanelView) mStatusBarWindow.findViewById(R.id.notification_panel); // don't allow clicks on the panel to pass through to the background where they will cause the panel to close - mNotificationPanel.setOnTouchListener(new View.OnTouchListener() { + View.OnTouchListener clickStopper = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } - }); + }; + mNotificationPanel.setOnTouchListener(clickStopper); mNotificationPanelIsFullScreenWidth = (mNotificationPanel.getLayoutParams().width == ViewGroup.LayoutParams.MATCH_PARENT); mNotificationPanel.setSystemUiVisibility( View.STATUS_BAR_DISABLE_NOTIFICATION_TICKER | (mNotificationPanelIsFullScreenWidth ? 0 : View.STATUS_BAR_DISABLE_SYSTEM_INFO)); + // quick settings (WIP) + mSettingsPanel = (PanelView) mStatusBarWindow.findViewById(R.id.settings_panel); + mSettingsPanel.setOnTouchListener(clickStopper); + if (!ActivityManager.isHighEndGfx(mDisplay)) { mStatusBarWindow.setBackground(null); mNotificationPanel.setBackground(new FastColorDrawable(context.getResources().getColor( R.color.notification_panel_solid_background))); + mSettingsPanel.setBackground(new FastColorDrawable(context.getResources().getColor( + R.color.notification_panel_solid_background))); } if (ENABLE_INTRUDERS) { mIntruderAlertView = (IntruderAlertView) View.inflate(context, R.layout.intruder_alert, null); @@ -1634,8 +1645,12 @@ public class PhoneStatusBar extends BaseStatusBar { if (DEBUG) Slog.v(TAG, "updateExpandedViewPos"); FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mNotificationPanel.getLayoutParams(); lp.gravity = mNotificationPanelGravity; - lp.leftMargin = mNotificationPanelMarginLeftPx; + lp.leftMargin = mNotificationPanelMarginPx; mNotificationPanel.setLayoutParams(lp); + lp = (FrameLayout.LayoutParams) mSettingsPanel.getLayoutParams(); + lp.gravity = mSettingsPanelGravity; + lp.rightMargin = mNotificationPanelMarginPx; + mSettingsPanel.setLayoutParams(lp); } // called by makeStatusbar and also by PhoneStatusBarView @@ -1872,11 +1887,15 @@ public class PhoneStatusBar extends BaseStatusBar { mNotificationPanelMarginBottomPx = (int) res.getDimension(R.dimen.notification_panel_margin_bottom); - mNotificationPanelMarginLeftPx + mNotificationPanelMarginPx = (int) res.getDimension(R.dimen.notification_panel_margin_left); mNotificationPanelGravity = res.getInteger(R.integer.notification_panel_layout_gravity); if (mNotificationPanelGravity <= 0) { - mNotificationPanelGravity = Gravity.CENTER_VERTICAL | Gravity.TOP; + mNotificationPanelGravity = Gravity.LEFT | Gravity.TOP; + } + mSettingsPanelGravity = res.getInteger(R.integer.settings_panel_layout_gravity); + if (mSettingsPanelGravity <= 0) { + mSettingsPanelGravity = Gravity.RIGHT | Gravity.TOP; } getNinePatchPadding(res.getDrawable(R.drawable.notification_panel_bg), mNotificationPanelBackgroundPadding); final int notificationPanelDecorationHeight = diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java index 6de015349a1c2..25ff9aa4b73fb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java @@ -42,6 +42,7 @@ public class PhoneStatusBarView extends PanelBar { private static final String TAG = "PhoneStatusBarView"; PhoneStatusBar mBar; int mScrimColor; + PanelView mFadingPanel = null; public PhoneStatusBarView(Context context, AttributeSet attrs) { super(context, attrs); @@ -76,12 +77,21 @@ public class PhoneStatusBarView extends PanelBar { public void onPanelPeeked() { super.onPanelPeeked(); mBar.makeExpandedVisible(true); + if (mFadingPanel == null) { + mFadingPanel = mTouchingPanel; + } } @Override public void onAllPanelsCollapsed() { super.onAllPanelsCollapsed(); mBar.makeExpandedInvisible(); + mFadingPanel = null; + } + + @Override + public void onPanelFullyOpened(PanelView openPanel) { + mFadingPanel = openPanel; } @Override @@ -98,7 +108,8 @@ public class PhoneStatusBarView extends PanelBar { public void panelExpansionChanged(PanelView pv, float frac) { super.panelExpansionChanged(pv, frac); - if (mScrimColor != 0 && ActivityManager.isHighEndGfx(mBar.mDisplay)) { + if (mFadingPanel == pv + && mScrimColor != 0 && ActivityManager.isHighEndGfx(mBar.mDisplay)) { // woo, special effects final float k = (float)(1f-0.5f*(1f-Math.cos(3.14159f * Math.pow(1f-frac, 2.2f)))); // attenuate background color alpha by k