summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Daniel Sandler <dsandler@android.com> 2011-08-05 00:19:21 -0400
committer Daniel Sandler <dsandler@android.com> 2011-08-05 00:29:58 -0400
commit06a0d4b5c36b3353a89ec31e097bf0b54b5f2549 (patch)
treefa0e652e7b5efe5bf91637af8d039cd54c4ce83b
parent96f3b6f0104aa1a4200c8abe69819c9c452985ab (diff)
Clear all notifications on tablet actually works now.
Also, the panel is no longer buried below the screen edge when there are no notifications. Bug: 5115158 Change-Id: I01bc8a65ceebd64143a4c4c52d63641dc3cd1c77
-rw-r--r--packages/SystemUI/res/layout-sw600dp/status_bar.xml12
-rw-r--r--packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel.xml12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java32
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java5
5 files changed, 53 insertions, 37 deletions
diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar.xml b/packages/SystemUI/res/layout-sw600dp/status_bar.xml
index 55e57ab42d4e..a204f17bc6e0 100644
--- a/packages/SystemUI/res/layout-sw600dp/status_bar.xml
+++ b/packages/SystemUI/res/layout-sw600dp/status_bar.xml
@@ -35,18 +35,6 @@
android:clipChildren="false"
>
- <ImageView android:id="@+id/clear_all_button"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_alignParentRight="true"
- android:layout_marginTop="1dp"
- android:layout_marginRight="20dp"
- android:paddingLeft="15dp"
- android:paddingRight="15dp"
- android:src="@drawable/ic_notify_clear"
- android:visibility="invisible"
- />
-
<!-- notification icons & panel access -->
<include layout="@layout/status_bar_notification_area"
android:layout_width="wrap_content"
diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel.xml b/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel.xml
index 9f11e08b03e5..1641c70ae73b 100644
--- a/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel.xml
+++ b/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel.xml
@@ -24,6 +24,18 @@
android:gravity="right"
>
+ <ImageView android:id="@+id/clear_all_button"
+ android:layout_width="wrap_content"
+ android:layout_height="@*android:dimen/status_bar_height"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentBottom="true"
+ android:layout_marginRight="20dp"
+ android:paddingLeft="15dp"
+ android:paddingRight="15dp"
+ android:src="@drawable/ic_notify_clear"
+ android:visibility="invisible"
+ />
+
<RelativeLayout
android:id="@+id/content_parent"
android:layout_height="wrap_content"
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
index 74dbfef37015..d9cb4e8678b9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
@@ -40,6 +40,7 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
final static int PANEL_FADE_DURATION = 150;
boolean mShowing;
+ boolean mHasClearableNotifications = false;
int mNotificationCount = 0;
NotificationPanelTitle mTitleArea;
View mSettingsButton;
@@ -50,6 +51,7 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
View mSettingsView;
ViewGroup mContentParent;
TabletStatusBar mBar;
+ View mClearButton;
// amount to slide mContentParent down by when mContentFrame is missing
float mContentFrameMissingTranslation;
@@ -84,14 +86,27 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
mNotificationScroller = findViewById(R.id.notification_scroller);
mContentFrame = (ViewGroup)findViewById(R.id.content_frame);
- mContentFrameMissingTranslation =
- mContentFrame.getBackground().getMinimumHeight() + 10;
+ mContentFrameMissingTranslation = 0; // not needed with current assets
+
+ // the "X" that appears in place of the clock when the panel is showing notifications
+ mClearButton = findViewById(R.id.clear_all_button);
+ mClearButton.setOnClickListener(mClearButtonListener);
mShowing = false;
setContentFrameVisible(mNotificationCount > 0, false);
}
+ private View.OnClickListener mClearButtonListener = new View.OnClickListener() {
+ public void onClick(View v) {
+ mBar.clearAll();
+ }
+ };
+
+ public View getClearButton() {
+ return mClearButton;
+ }
+
public void show(boolean show, boolean animate) {
if (show && !mShowing) {
setContentFrameVisible(mSettingsView != null || mNotificationCount > 0, false);
@@ -264,12 +279,16 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
if (mBar != null) {
final boolean showX
= (isShowing()
- && mNotificationScroller.getVisibility() == View.VISIBLE
- && mNotificationCount > 0);
- mBar.getClearButton().setVisibility(showX ? View.VISIBLE : View.INVISIBLE);
+ && mHasClearableNotifications
+ && mNotificationScroller.getVisibility() == View.VISIBLE);
+ getClearButton().setVisibility(showX ? View.VISIBLE : View.INVISIBLE);
}
}
+ public void setClearable(boolean clearable) {
+ mHasClearableNotifications = clearable;
+ }
+
public void updatePanelModeButtons() {
final boolean settingsVisible = (mSettingsView != null);
mSettingsButton.setVisibility(!settingsVisible ? View.VISIBLE : View.INVISIBLE);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index dc7e3137386c..9ad92fe75470 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -122,7 +122,6 @@ public class TabletStatusBar extends StatusBar implements
View mNotificationTrigger;
NotificationIconArea mNotificationIconArea;
ViewGroup mNavigationArea;
- View mClearButton;
boolean mNotificationDNDMode;
NotificationData.Entry mNotificationDNDDummyEntry;
@@ -453,10 +452,6 @@ public class TabletStatusBar extends StatusBar implements
// the more notifications icon
mNotificationIconArea = (NotificationIconArea)sb.findViewById(R.id.notificationIcons);
- // the "X" that appears in place of the clock when the panel is showing notifications
- mClearButton = sb.findViewById(R.id.clear_all_button);
- mClearButton.setOnClickListener(mClearButtonListener);
-
// where the icons go
mIconLayout = (NotificationIconArea.IconLayout) sb.findViewById(R.id.icons);
mIconLayout.setOnTouchListener(new NotificationIconTouchListener());
@@ -587,21 +582,6 @@ public class TabletStatusBar extends StatusBar implements
return sb;
}
- private View.OnClickListener mClearButtonListener = new View.OnClickListener() {
- public void onClick(View v) {
- try {
- mBarService.onClearAllNotifications();
- } catch (RemoteException ex) {
- // system process is dead if we're here.
- }
- animateCollapse();
- }
- };
-
- public View getClearButton() {
- return mClearButton;
- }
-
public int getStatusBarHeight() {
return mHeightReceiver.getHeight();
}
@@ -1204,6 +1184,9 @@ public class TabletStatusBar extends StatusBar implements
}
private void setAreThereNotifications() {
+ if (mNotificationPanel != null) {
+ mNotificationPanel.setClearable(mNotificationData.hasClearableItems());
+ }
}
/**
@@ -1775,6 +1758,15 @@ public class TabletStatusBar extends StatusBar implements
return true;
}
+ public void clearAll() {
+ try {
+ mBarService.onClearAllNotifications();
+ } catch (RemoteException ex) {
+ // system process is dead if we're here.
+ }
+ animateCollapse();
+ }
+
public void userActivity() {
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java
index dff1f6ada0e0..7d112516a9d0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java
@@ -94,6 +94,11 @@ public class TabletStatusBarView extends FrameLayout {
mHandler = h;
}
+ /**
+ * Let the status bar know that if you tap on ignore while panel is showing, don't do anything.
+ *
+ * Debounces taps on, say, a popup's trigger when the popup is already showing.
+ */
public void setIgnoreChildren(int index, View ignore, View panel) {
mIgnoreChildren[index] = ignore;
mPanels[index] = panel;