summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Sandler <dsandler@android.com>2012-08-15 00:09:26 -0400
committerDaniel Sandler <dsandler@android.com>2012-08-15 09:52:43 -0400
commit8e72c9e19cfb0b6c1463fa841f1dd02be8f3b4e1 (patch)
treee96bfb75bf13ec2fa65c8cf2c5af5518d16fa33b
parentf8d9e2fccdd9f2addeda852ad168eeb67a5f6626 (diff)
downloadframeworks_base-8e72c9e19cfb0b6c1463fa841f1dd02be8f3b4e1.zip
frameworks_base-8e72c9e19cfb0b6c1463fa841f1dd02be8f3b4e1.tar.gz
frameworks_base-8e72c9e19cfb0b6c1463fa841f1dd02be8f3b4e1.tar.bz2
Quick settings come to all Android devices.
I mean, real soon now. Change-Id: I9a15b49f271e7ae06eb48a402f58270d8adccbf4
-rw-r--r--packages/SystemUI/res/drawable-nodpi/qs_coming_soon.pngbin0 -> 29933 bytes
-rw-r--r--packages/SystemUI/res/layout-sw600dp/super_status_bar.xml8
-rw-r--r--packages/SystemUI/res/layout/quick_settings.xml45
-rw-r--r--packages/SystemUI/res/layout/super_status_bar.xml5
-rw-r--r--packages/SystemUI/res/values-sw600dp-land/dimens.xml4
-rw-r--r--packages/SystemUI/res/values-sw600dp/dimens.xml9
-rw-r--r--packages/SystemUI/res/values/dimens.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java31
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java13
10 files changed, 108 insertions, 23 deletions
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 0000000..47c89b1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-nodpi/qs_coming_soon.png
Binary files differ
diff --git a/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml b/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml
index 47c511c..b68632a 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"
>
<include layout="@layout/status_bar_expanded"
android:layout_width="@dimen/notification_panel_width"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|top"
+ android:layout_gravity="left|top"
+ />
+ <include layout="@layout/quick_settings"
+ android:layout_width="@dimen/notification_panel_width"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right|top"
/>
</com.android.systemui.statusbar.phone.PanelHolder>
</com.android.systemui.statusbar.phone.StatusBarWindowView>
diff --git a/packages/SystemUI/res/layout/quick_settings.xml b/packages/SystemUI/res/layout/quick_settings.xml
new file mode 100644
index 0000000..a62a470
--- /dev/null
+++ b/packages/SystemUI/res/layout/quick_settings.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<com.android.systemui.statusbar.phone.PanelView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/settings_panel"
+ >
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:scaleType="centerInside"
+ android:src="@drawable/qs_coming_soon"
+ android:padding="4dp"
+ android:background="#80000080"
+ />
+ <LinearLayout android:id="@+id/handle"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/close_handle_height"
+ android:layout_gravity="bottom"
+ android:orientation="vertical"
+ >
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/close_handle_height"
+ android:layout_gravity="bottom"
+ android:scaleType="fitXY"
+ android:src="@drawable/status_bar_close"
+ />
+ </LinearLayout>
+</com.android.systemui.statusbar.phone.PanelView> \ 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 ad905bd..ad6b8f4 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"
>
<include layout="@layout/status_bar_expanded"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
+ <include layout="@layout/quick_settings"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ />
</com.android.systemui.statusbar.phone.PanelHolder>
</com.android.systemui.statusbar.phone.StatusBarWindowView>
diff --git a/packages/SystemUI/res/values-sw600dp-land/dimens.xml b/packages/SystemUI/res/values-sw600dp-land/dimens.xml
index afa0b20..c6c0719 100644
--- a/packages/SystemUI/res/values-sw600dp-land/dimens.xml
+++ b/packages/SystemUI/res/values-sw600dp-land/dimens.xml
@@ -19,8 +19,4 @@
<!-- Layout parameters for the notification panel -->
<dimen name="notification_panel_margin_bottom">0dp</dimen>
<dimen name="notification_panel_margin_left">32dp</dimen>
-
- <!-- Gravity for the notification panel -->
- <!-- 0x33 = left|top -->
- <integer name="notification_panel_layout_gravity">0x33</integer>
</resources>
diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml
index 2b5248f..b6faff3 100644
--- a/packages/SystemUI/res/values-sw600dp/dimens.xml
+++ b/packages/SystemUI/res/values-sw600dp/dimens.xml
@@ -21,11 +21,12 @@
<!-- Layout parameters for the notification panel -->
<dimen name="notification_panel_margin_bottom">192dp</dimen>
- <dimen name="notification_panel_margin_left">0dp</dimen>
+ <dimen name="notification_panel_margin_left">16dp</dimen>
- <!-- Gravity for the notification panel -->
- <!-- 0x33 = center_horizontal|top -->
- <integer name="notification_panel_layout_gravity">0x31</integer>
+ <!-- Gravity for the notification & quick settings panels -->
+ <!-- 0x33 = left|top ; 0x35 = right|top -->
+ <integer name="notification_panel_layout_gravity">0x33</integer>
+ <integer name="settings_panel_layout_gravity">0x35</integer>
<!-- Diameter of outer shape drawable shown in navbar search-->
<dimen name="navbar_search_outerring_diameter">430dip</dimen>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 8204e95..9539373 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -158,9 +158,10 @@
<dimen name="notification_panel_margin_bottom">0dp</dimen>
<dimen name="notification_panel_margin_left">0dp</dimen>
- <!-- Gravity for the notification panel -->
+ <!-- Gravity for the notification & quick settings panels -->
<!-- 0x37 = fill_horizontal|top -->
<integer name="notification_panel_layout_gravity">0x37</integer>
+ <integer name="settings_panel_layout_gravity">0x37</integer>
<!-- Height of the carrier/wifi name label -->
<dimen name="carrier_label_height">24dp</dimen>
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 b2c72e8..1ea5b3e 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<PanelView> mPanels = new ArrayList<PanelView>();
- 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 0f84c2f..4d4adcb 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 6de0153..25ff9aa 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