diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/notify_panel_notify_bg.9.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/notify_panel_notify_bg.9.png
deleted file mode 100644
index 6cb76649b2847..0000000000000
Binary files a/packages/SystemUI/res/drawable-sw720dp-hdpi/notify_panel_notify_bg.9.png and /dev/null differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/notify_panel_notify_bg.9.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/notify_panel_notify_bg.9.png
deleted file mode 100644
index e4c9dc176c2b4..0000000000000
Binary files a/packages/SystemUI/res/drawable-sw720dp-mdpi/notify_panel_notify_bg.9.png and /dev/null differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/notify_panel_notify_bg.9.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/notify_panel_notify_bg.9.png
deleted file mode 100644
index 1f02714e789ed..0000000000000
Binary files a/packages/SystemUI/res/drawable-sw720dp-xhdpi/notify_panel_notify_bg.9.png and /dev/null differ
diff --git a/packages/SystemUI/res/layout/system_bar_notification_area.xml b/packages/SystemUI/res/layout/system_bar_notification_area.xml
index 739f3aa25fe20..a59dad2a64551 100644
--- a/packages/SystemUI/res/layout/system_bar_notification_area.xml
+++ b/packages/SystemUI/res/layout/system_bar_notification_area.xml
@@ -78,22 +78,16 @@
android:layout_height="match_parent"
android:gravity="center"
>
-
-
-
+ android:layout_height="match_parent"
+ android:singleLine="true"
+ android:paddingLeft="6dip"
+ android:layout_marginRight="8dip"
+ android:gravity="center_vertical|left"
+ />
-
+
-
-
-
-
-
-
-
+
+
+
+
diff --git a/packages/SystemUI/res/layout/system_bar_notification_panel_title.xml b/packages/SystemUI/res/layout/system_bar_notification_panel_title.xml
index b985aaf81ba19..afe3b49aef1a9 100644
--- a/packages/SystemUI/res/layout/system_bar_notification_panel_title.xml
+++ b/packages/SystemUI/res/layout/system_bar_notification_panel_title.xml
@@ -18,11 +18,14 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
android:id="@+id/title_area"
+ android:background="@color/notification_panel_solid_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:orientation="vertical"
- android:background="@drawable/notify_panel_clock_bg"
+ android:paddingLeft="26dp"
+ android:paddingTop="14dp"
+ android:paddingRight="26dp"
>
@@ -176,7 +177,6 @@
android:id="@+id/notification_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:paddingRight="16dp"
android:src="@drawable/ic_notification_open"
android:visibility="invisible"
android:contentDescription="@string/accessibility_notifications_button"
@@ -186,40 +186,46 @@
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/values-sw720dp/styles.xml b/packages/SystemUI/res/values-sw720dp/styles.xml
index f3d4a0f88b920..684258ae633ef 100644
--- a/packages/SystemUI/res/values-sw720dp/styles.xml
+++ b/packages/SystemUI/res/values-sw720dp/styles.xml
@@ -51,4 +51,24 @@
- @android:drawable/divider_horizontal_dark
+
+
+
+
+
+
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HoloClock.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HoloClock.java
deleted file mode 100644
index f98caa2abe78b..0000000000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HoloClock.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2006 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.
- */
-
-package com.android.systemui.statusbar.tablet;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.res.AssetManager;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
-import android.text.Spannable;
-import android.text.SpannableStringBuilder;
-import android.text.format.DateFormat;
-import android.text.style.CharacterStyle;
-import android.text.style.ForegroundColorSpan;
-import android.text.style.RelativeSizeSpan;
-import android.text.style.RelativeSizeSpan;
-import android.text.style.StyleSpan;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.TextView;
-
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.TimeZone;
-
-import com.android.systemui.R;
-
-public class HoloClock extends FrameLayout {
- private boolean mAttached;
- private Calendar mCalendar;
- private String mClockFormatString;
- private SimpleDateFormat mClockFormat;
-
- private static final String FONT_DIR = "/system/fonts/";
- private static final String CLOCK_FONT = FONT_DIR + "AndroidClock_Solid.ttf";
- private static final String CLOCK_FG_FONT = FONT_DIR + "AndroidClock.ttf";
- private static final String CLOCK_BG_FONT = FONT_DIR + "AndroidClock_Highlight.ttf";
-
- private static Typeface sBackgroundType, sForegroundType, sSolidType;
- private TextView mSolidText, mBgText, mFgText;
-
- public HoloClock(Context context) {
- this(context, null);
- }
-
- public HoloClock(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public HoloClock(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
-
- if (sSolidType == null) {
- sSolidType = Typeface.createFromFile(CLOCK_FONT);
- sBackgroundType = Typeface.createFromFile(CLOCK_BG_FONT);
- sForegroundType = Typeface.createFromFile(CLOCK_FG_FONT);
- }
- mBgText = (TextView) findViewById(R.id.time_bg);
- if (mBgText != null) {
- mBgText.setTypeface(sBackgroundType);
- mBgText.setVisibility(View.INVISIBLE);
- }
-
- mFgText = (TextView) findViewById(R.id.time_fg);
- if (mFgText != null) {
- mFgText.setTypeface(sForegroundType);
- }
- mSolidText = (TextView) findViewById(R.id.time_solid);
- if (mSolidText != null) {
- mSolidText.setTypeface(sSolidType);
- }
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
-
- if (!mAttached) {
- mAttached = true;
- IntentFilter filter = new IntentFilter();
-
- filter.addAction(Intent.ACTION_TIME_TICK);
- filter.addAction(Intent.ACTION_TIME_CHANGED);
- filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
- filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
-
- getContext().registerReceiver(mIntentReceiver, filter, null, getHandler());
- }
-
- // NOTE: It's safe to do these after registering the receiver since the receiver always runs
- // in the main thread, therefore the receiver can't run before this method returns.
-
- // The time zone may have changed while the receiver wasn't registered, so update the Time
- mCalendar = Calendar.getInstance(TimeZone.getDefault());
-
- // Make sure we update to the current time
- updateClock();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- super.onDetachedFromWindow();
- if (mAttached) {
- getContext().unregisterReceiver(mIntentReceiver);
- mAttached = false;
- }
- }
-
- private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
- String tz = intent.getStringExtra("time-zone");
- mCalendar = Calendar.getInstance(TimeZone.getTimeZone(tz));
- if (mClockFormat != null) {
- mClockFormat.setTimeZone(mCalendar.getTimeZone());
- }
- }
- updateClock();
- }
- };
-
- final void updateClock() {
- mCalendar.setTimeInMillis(System.currentTimeMillis());
- CharSequence txt = getTimeText();
- if (mBgText != null) mBgText.setText(txt);
- if (mFgText != null) mFgText.setText(txt);
- if (mSolidText != null) mSolidText.setText(txt);
- }
-
- private final CharSequence getTimeText() {
- Context context = getContext();
- int res = DateFormat.is24HourFormat(context)
- ? com.android.internal.R.string.twenty_four_hour_time_format
- : com.android.internal.R.string.twelve_hour_time_format;
-
- SimpleDateFormat sdf;
- String format = context.getString(res);
- if (!format.equals(mClockFormatString)) {
- // we don't want AM/PM showing up in our statusbar, even in 12h mode
- format = format.replaceAll("a", "").trim();
- mClockFormat = sdf = new SimpleDateFormat(format);
- mClockFormatString = format;
- } else {
- sdf = mClockFormat;
- }
- String result = sdf.format(mCalendar.getTime());
- return result;
- }
-}
-
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 b82e1d0a066ff..71657f5238f4d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
@@ -34,10 +34,15 @@ import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
import android.widget.RelativeLayout;
+import com.android.systemui.ExpandHelper;
import com.android.systemui.R;
+import com.android.systemui.statusbar.policy.NotificationRowLayout;
public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
View.OnClickListener {
+ private ExpandHelper mExpandHelper;
+ private NotificationRowLayout latestItems;
+
static final String TAG = "Tablet/NotificationPanel";
static final boolean DEBUG = false;
@@ -103,6 +108,16 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
setContentFrameVisible(mNotificationCount > 0, false);
}
+ @Override
+ protected void onAttachedToWindow () {
+ super.onAttachedToWindow();
+ latestItems = (NotificationRowLayout) findViewById(R.id.content);
+ int minHeight = getResources().getDimensionPixelSize(R.dimen.notification_row_min_height);
+ int maxHeight = getResources().getDimensionPixelSize(R.dimen.notification_row_max_height);
+ mExpandHelper = new ExpandHelper(mContext, latestItems, minHeight, maxHeight);
+ mExpandHelper.setEventSource(this);
+ }
+
private View.OnClickListener mClearButtonListener = new View.OnClickListener() {
public void onClick(View v) {
mBar.clearAll();
@@ -321,14 +336,11 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
}
public boolean isInContentArea(int x, int y) {
- mContentArea.left = mTitleArea.getLeft() + mTitleArea.getPaddingLeft();
- mContentArea.top = mTitleArea.getTop() + mTitleArea.getPaddingTop()
+ mContentArea.left = mContentFrame.getLeft() + mContentFrame.getPaddingLeft();
+ mContentArea.top = mContentFrame.getTop() + mContentFrame.getPaddingTop()
+ (int)mContentParent.getTranslationY(); // account for any adjustment
- mContentArea.right = mTitleArea.getRight() - mTitleArea.getPaddingRight();
-
- View theBottom = (mContentFrame.getVisibility() == View.VISIBLE)
- ? mContentFrame : mTitleArea;
- mContentArea.bottom = theBottom.getBottom() - theBottom.getPaddingBottom();
+ mContentArea.right = mContentFrame.getRight() - mContentFrame.getPaddingRight();
+ mContentArea.bottom = mContentFrame.getBottom() - mContentFrame.getPaddingBottom();
offsetDescendantRectToMyCoords(mContentParent, mContentArea);
return mContentArea.contains(x, y);
@@ -440,5 +452,25 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
public void onAnimationStart(Animator animation) {
}
}
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ MotionEvent cancellation = MotionEvent.obtain(ev);
+ cancellation.setAction(MotionEvent.ACTION_CANCEL);
+
+ boolean intercept = mExpandHelper.onInterceptTouchEvent(ev) ||
+ super.onInterceptTouchEvent(ev);
+ if (intercept) {
+ latestItems.onInterceptTouchEvent(cancellation);
+ }
+ return intercept;
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ boolean handled = mExpandHelper.onTouchEvent(ev) ||
+ super.onTouchEvent(ev);
+ return handled;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanelTitle.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanelTitle.java
index 689bc36a4320f..00cf3c54f4a7c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanelTitle.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanelTitle.java
@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.tablet;
+import java.util.ArrayList;
+
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
@@ -24,11 +26,17 @@ import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.RelativeLayout;
+import com.android.systemui.R;
+
+
public class NotificationPanelTitle extends RelativeLayout implements View.OnClickListener {
private NotificationPanel mPanel;
+ private ArrayList buttons;
+ private View mNotificationsButton;
public NotificationPanelTitle(Context context, AttributeSet attrs) {
super(context, attrs);
+ buttons = new ArrayList();
setOnClickListener(this);
}
@@ -36,6 +44,23 @@ public class NotificationPanelTitle extends RelativeLayout implements View.OnCli
mPanel = p;
}
+ @Override
+ public void onFinishInflate() {
+ super.onFinishInflate();
+ buttons.add(findViewById(R.id.settings_button));
+ buttons.add(findViewById(R.id.notification_button));
+ }
+
+ @Override
+ public void setPressed(boolean pressed) {
+ super.setPressed(pressed);
+ for (View button : buttons) {
+ if (button != null) {
+ button.setPressed(pressed);
+ }
+ }
+ }
+
@Override
public boolean onTouchEvent(MotionEvent e) {
switch (e.getAction()) {