diff options
author | Daniel Sandler <dsandler@android.com> | 2011-08-05 04:46:09 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-05 04:46:09 -0700 |
commit | c803422bed63f24e987294dae974d81342fb5189 (patch) | |
tree | aeb9aafe599e5c8f272b1c2ff034f28b737c5966 | |
parent | 69ecb0a08a4c7d483bdd0c29db533579db404c9c (diff) | |
parent | 06a0d4b5c36b3353a89ec31e097bf0b54b5f2549 (diff) | |
download | frameworks_base-c803422bed63f24e987294dae974d81342fb5189.zip frameworks_base-c803422bed63f24e987294dae974d81342fb5189.tar.gz frameworks_base-c803422bed63f24e987294dae974d81342fb5189.tar.bz2 |
Merge "Clear all notifications on tablet actually works now."
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 55e57ab..a204f17 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 9f11e08..1641c70 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 74dbfef..d9cb4e8 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 c7b6f20..ae19cb1 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()); + } } /** @@ -1779,6 +1762,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 dff1f6a..7d11251 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; |