Loading packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +7 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.phone.KeyguardBouncer; import com.android.systemui.statusbar.phone.NotificationIconAreaController; import com.android.systemui.statusbar.phone.PhoneStatusBar; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarWindowManager; Loading Loading @@ -75,6 +77,11 @@ public class SystemUIFactory { return new ScrimController(scrimBehind, scrimInFront, headsUpScrim); } public NotificationIconAreaController createNotificationIconAreaController(Context context, PhoneStatusBar phoneStatusBar) { return new NotificationIconAreaController(context, phoneStatusBar); } public <T> T createInstance(Class<T> classType) { return null; } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java +13 −5 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.phone; import android.content.Context; import android.content.res.Resources; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; Loading @@ -27,14 +28,17 @@ public class IconMerger extends LinearLayout { private static final String TAG = "IconMerger"; private static final boolean DEBUG = false; private int mIconSize; private final int mIconSize; private final int mIconHPadding; private View mMoreView; public IconMerger(Context context, AttributeSet attrs) { super(context, attrs); mIconSize = context.getResources().getDimensionPixelSize( R.dimen.status_bar_icon_size); Resources res = context.getResources(); mIconSize = res.getDimensionPixelSize(R.dimen.status_bar_icon_size); mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding); if (DEBUG) { setBackgroundColor(0x800099FF); Loading @@ -45,12 +49,16 @@ public class IconMerger extends LinearLayout { mMoreView = v; } private int getFullIconWidth() { return mIconSize + 2 * mIconHPadding; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // we need to constrain this to an integral multiple of our children int width = getMeasuredWidth(); setMeasuredDimension(width - (width % mIconSize), getMeasuredHeight()); setMeasuredDimension(width - (width % getFullIconWidth()), getMeasuredHeight()); } @Override Loading @@ -70,7 +78,7 @@ public class IconMerger extends LinearLayout { final boolean overflowShown = (mMoreView.getVisibility() == View.VISIBLE); // let's assume we have one more slot if the more icon is already showing if (overflowShown) visibleChildren --; final boolean moreRequired = visibleChildren * mIconSize > width; final boolean moreRequired = visibleChildren * getFullIconWidth() > width; if (moreRequired != overflowShown) { post(new Runnable() { @Override Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +38 −17 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.notification.NotificationUtils; import java.util.ArrayList; import java.util.List; /** * A controller for the space in the status bar to the left of the system icons. This area is Loading @@ -42,6 +43,10 @@ public class NotificationIconAreaController { initializeNotificationAreaViews(context); } protected View inflateIconArea(LayoutInflater inflater) { return inflater.inflate(R.layout.notification_icon_area, null); } /** * Initializes the views that will represent the notification area. */ Loading @@ -51,15 +56,17 @@ public class NotificationIconAreaController { mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding); LayoutInflater layoutInflater = LayoutInflater.from(context); mNotificationIconArea = layoutInflater.inflate(R.layout.notification_icon_area, null); mMoreIcon = (ImageView) mNotificationIconArea.findViewById(R.id.moreIcon); mMoreIcon.setImageTintList(ColorStateList.valueOf(mIconTint)); mNotificationIconArea = inflateIconArea(layoutInflater); mNotificationIcons = (IconMerger) mNotificationIconArea.findViewById(R.id.notificationIcons); mMoreIcon = (ImageView) mNotificationIconArea.findViewById(R.id.moreIcon); if (mMoreIcon != null) { mMoreIcon.setImageTintList(ColorStateList.valueOf(mIconTint)); mNotificationIcons.setOverflowIndicator(mMoreIcon); } } /** * Returns the view that represents the notification area. Loading Loading @@ -88,16 +95,38 @@ public class NotificationIconAreaController { */ public void setIconTint(int iconTint) { mIconTint = iconTint; if (mMoreIcon != null) { mMoreIcon.setImageTintList(ColorStateList.valueOf(mIconTint)); } applyNotificationIconsTint(); } protected int getHeight() { return mPhoneStatusBar.getStatusBarHeight(); } protected boolean shouldShowNotification(NotificationData.Entry entry, NotificationData notificationData) { if (notificationData.isAmbient(entry.key) && !NotificationData.showNotificationEvenIfUnprovisioned(entry.notification)) { return false; } if (!PhoneStatusBar.isTopLevelChild(entry)) { return false; } if (entry.row.getVisibility() == View.GONE) { return false; } return true; } /** * Updates the notifications with the given list of notifications to display. */ public void updateNotificationIcons(NotificationData notificationData) { final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( mIconSize + 2 * mIconHPadding, mPhoneStatusBar.getStatusBarHeight()); mIconSize + 2 * mIconHPadding, getHeight()); ArrayList<NotificationData.Entry> activeNotifications = notificationData.getActiveNotifications(); Loading @@ -107,18 +136,10 @@ public class NotificationIconAreaController { // Filter out ambient notifications and notification children. for (int i = 0; i < size; i++) { NotificationData.Entry ent = activeNotifications.get(i); if (notificationData.isAmbient(ent.key) && !NotificationData.showNotificationEvenIfUnprovisioned(ent.notification)) { continue; } if (!PhoneStatusBar.isTopLevelChild(ent)) { continue; } if (ent.row.getVisibility() == View.GONE) { continue; } if (shouldShowNotification(ent, notificationData)) { toShow.add(ent.icon); } } ArrayList<View> toRemove = new ArrayList<>(); for (int i = 0; i < mNotificationIcons.getChildCount(); i++) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +10 −8 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.hardware.display.DisplayManager; import android.inputmethodservice.InputMethodService; import android.media.AudioAttributes; import android.media.MediaMetadata; Loading Loading @@ -132,7 +131,6 @@ import com.android.systemui.statusbar.DismissView; import com.android.systemui.statusbar.DragDownHelper; import com.android.systemui.statusbar.EmptyShadeView; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.ExpandableView; import com.android.systemui.statusbar.GestureRecorder; import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.NotificationData; Loading Loading @@ -305,7 +303,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, Point mCurrentDisplaySize = new Point(); protected StatusBarWindowView mStatusBarWindow; PhoneStatusBarView mStatusBarView; protected PhoneStatusBarView mStatusBarView; private int mStatusBarWindowState = WINDOW_STATE_SHOWING; protected StatusBarWindowManager mStatusBarWindowManager; private UnlockMethodCache mUnlockMethodCache; Loading @@ -317,7 +315,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, int mPixelFormat; Object mQueueLock = new Object(); StatusBarIconController mIconController; protected StatusBarIconController mIconController; // expanded notifications protected NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window Loading @@ -329,7 +327,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // top bar BaseStatusBarHeader mHeader; KeyguardStatusBarView mKeyguardStatusBar; protected KeyguardStatusBarView mKeyguardStatusBar; View mKeyguardStatusView; KeyguardBottomAreaView mKeyguardBottomArea; boolean mLeaveOpenOnKeyguardHide; Loading Loading @@ -678,6 +676,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mFalsingManager = FalsingManager.getInstance(mContext); } protected void createIconController() { mIconController = new StatusBarIconController( mContext, mStatusBarView, mKeyguardStatusBar, this); } // ================================================================================ // Constructing the view // ================================================================================ Loading Loading @@ -811,8 +814,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // set the initial view visibility setAreThereNotifications(); mIconController = new StatusBarIconController( mContext, mStatusBarView, mKeyguardStatusBar, this); createIconController(); // Background thread for any controllers that need it. mHandlerThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND); Loading Loading @@ -1989,7 +1991,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } } private int adjustDisableFlags(int state) { protected int adjustDisableFlags(int state) { if (!mLaunchTransitionFadingAway && !mKeyguardFadingAway && (mExpandedVisible || mBouncerShowing || mWaitingForKeyguardExit)) { state |= StatusBarManager.DISABLE_NOTIFICATION_ICONS; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +3 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.systemui.BatteryMeterView; import com.android.systemui.FontSizeUtils; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.statusbar.NotificationData; import com.android.systemui.statusbar.SignalClusterView; import com.android.systemui.statusbar.StatusBarIconView; Loading Loading @@ -116,8 +117,8 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl mStatusIcons = (LinearLayout) statusBar.findViewById(R.id.statusIcons); mSignalCluster = (SignalClusterView) statusBar.findViewById(R.id.signal_cluster); mNotificationIconAreaController = new NotificationIconAreaController(context, phoneStatusBar); mNotificationIconAreaController = SystemUIFactory.getInstance() .createNotificationIconAreaController(context, phoneStatusBar); mNotificationIconAreaInner = mNotificationIconAreaController.getNotificationInnerAreaView(); Loading Loading
packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +7 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.phone.KeyguardBouncer; import com.android.systemui.statusbar.phone.NotificationIconAreaController; import com.android.systemui.statusbar.phone.PhoneStatusBar; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarWindowManager; Loading Loading @@ -75,6 +77,11 @@ public class SystemUIFactory { return new ScrimController(scrimBehind, scrimInFront, headsUpScrim); } public NotificationIconAreaController createNotificationIconAreaController(Context context, PhoneStatusBar phoneStatusBar) { return new NotificationIconAreaController(context, phoneStatusBar); } public <T> T createInstance(Class<T> classType) { return null; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java +13 −5 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.phone; import android.content.Context; import android.content.res.Resources; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; Loading @@ -27,14 +28,17 @@ public class IconMerger extends LinearLayout { private static final String TAG = "IconMerger"; private static final boolean DEBUG = false; private int mIconSize; private final int mIconSize; private final int mIconHPadding; private View mMoreView; public IconMerger(Context context, AttributeSet attrs) { super(context, attrs); mIconSize = context.getResources().getDimensionPixelSize( R.dimen.status_bar_icon_size); Resources res = context.getResources(); mIconSize = res.getDimensionPixelSize(R.dimen.status_bar_icon_size); mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding); if (DEBUG) { setBackgroundColor(0x800099FF); Loading @@ -45,12 +49,16 @@ public class IconMerger extends LinearLayout { mMoreView = v; } private int getFullIconWidth() { return mIconSize + 2 * mIconHPadding; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // we need to constrain this to an integral multiple of our children int width = getMeasuredWidth(); setMeasuredDimension(width - (width % mIconSize), getMeasuredHeight()); setMeasuredDimension(width - (width % getFullIconWidth()), getMeasuredHeight()); } @Override Loading @@ -70,7 +78,7 @@ public class IconMerger extends LinearLayout { final boolean overflowShown = (mMoreView.getVisibility() == View.VISIBLE); // let's assume we have one more slot if the more icon is already showing if (overflowShown) visibleChildren --; final boolean moreRequired = visibleChildren * mIconSize > width; final boolean moreRequired = visibleChildren * getFullIconWidth() > width; if (moreRequired != overflowShown) { post(new Runnable() { @Override Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +38 −17 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.notification.NotificationUtils; import java.util.ArrayList; import java.util.List; /** * A controller for the space in the status bar to the left of the system icons. This area is Loading @@ -42,6 +43,10 @@ public class NotificationIconAreaController { initializeNotificationAreaViews(context); } protected View inflateIconArea(LayoutInflater inflater) { return inflater.inflate(R.layout.notification_icon_area, null); } /** * Initializes the views that will represent the notification area. */ Loading @@ -51,15 +56,17 @@ public class NotificationIconAreaController { mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding); LayoutInflater layoutInflater = LayoutInflater.from(context); mNotificationIconArea = layoutInflater.inflate(R.layout.notification_icon_area, null); mMoreIcon = (ImageView) mNotificationIconArea.findViewById(R.id.moreIcon); mMoreIcon.setImageTintList(ColorStateList.valueOf(mIconTint)); mNotificationIconArea = inflateIconArea(layoutInflater); mNotificationIcons = (IconMerger) mNotificationIconArea.findViewById(R.id.notificationIcons); mMoreIcon = (ImageView) mNotificationIconArea.findViewById(R.id.moreIcon); if (mMoreIcon != null) { mMoreIcon.setImageTintList(ColorStateList.valueOf(mIconTint)); mNotificationIcons.setOverflowIndicator(mMoreIcon); } } /** * Returns the view that represents the notification area. Loading Loading @@ -88,16 +95,38 @@ public class NotificationIconAreaController { */ public void setIconTint(int iconTint) { mIconTint = iconTint; if (mMoreIcon != null) { mMoreIcon.setImageTintList(ColorStateList.valueOf(mIconTint)); } applyNotificationIconsTint(); } protected int getHeight() { return mPhoneStatusBar.getStatusBarHeight(); } protected boolean shouldShowNotification(NotificationData.Entry entry, NotificationData notificationData) { if (notificationData.isAmbient(entry.key) && !NotificationData.showNotificationEvenIfUnprovisioned(entry.notification)) { return false; } if (!PhoneStatusBar.isTopLevelChild(entry)) { return false; } if (entry.row.getVisibility() == View.GONE) { return false; } return true; } /** * Updates the notifications with the given list of notifications to display. */ public void updateNotificationIcons(NotificationData notificationData) { final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( mIconSize + 2 * mIconHPadding, mPhoneStatusBar.getStatusBarHeight()); mIconSize + 2 * mIconHPadding, getHeight()); ArrayList<NotificationData.Entry> activeNotifications = notificationData.getActiveNotifications(); Loading @@ -107,18 +136,10 @@ public class NotificationIconAreaController { // Filter out ambient notifications and notification children. for (int i = 0; i < size; i++) { NotificationData.Entry ent = activeNotifications.get(i); if (notificationData.isAmbient(ent.key) && !NotificationData.showNotificationEvenIfUnprovisioned(ent.notification)) { continue; } if (!PhoneStatusBar.isTopLevelChild(ent)) { continue; } if (ent.row.getVisibility() == View.GONE) { continue; } if (shouldShowNotification(ent, notificationData)) { toShow.add(ent.icon); } } ArrayList<View> toRemove = new ArrayList<>(); for (int i = 0; i < mNotificationIcons.getChildCount(); i++) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +10 −8 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.hardware.display.DisplayManager; import android.inputmethodservice.InputMethodService; import android.media.AudioAttributes; import android.media.MediaMetadata; Loading Loading @@ -132,7 +131,6 @@ import com.android.systemui.statusbar.DismissView; import com.android.systemui.statusbar.DragDownHelper; import com.android.systemui.statusbar.EmptyShadeView; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.ExpandableView; import com.android.systemui.statusbar.GestureRecorder; import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.NotificationData; Loading Loading @@ -305,7 +303,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, Point mCurrentDisplaySize = new Point(); protected StatusBarWindowView mStatusBarWindow; PhoneStatusBarView mStatusBarView; protected PhoneStatusBarView mStatusBarView; private int mStatusBarWindowState = WINDOW_STATE_SHOWING; protected StatusBarWindowManager mStatusBarWindowManager; private UnlockMethodCache mUnlockMethodCache; Loading @@ -317,7 +315,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, int mPixelFormat; Object mQueueLock = new Object(); StatusBarIconController mIconController; protected StatusBarIconController mIconController; // expanded notifications protected NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window Loading @@ -329,7 +327,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // top bar BaseStatusBarHeader mHeader; KeyguardStatusBarView mKeyguardStatusBar; protected KeyguardStatusBarView mKeyguardStatusBar; View mKeyguardStatusView; KeyguardBottomAreaView mKeyguardBottomArea; boolean mLeaveOpenOnKeyguardHide; Loading Loading @@ -678,6 +676,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mFalsingManager = FalsingManager.getInstance(mContext); } protected void createIconController() { mIconController = new StatusBarIconController( mContext, mStatusBarView, mKeyguardStatusBar, this); } // ================================================================================ // Constructing the view // ================================================================================ Loading Loading @@ -811,8 +814,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // set the initial view visibility setAreThereNotifications(); mIconController = new StatusBarIconController( mContext, mStatusBarView, mKeyguardStatusBar, this); createIconController(); // Background thread for any controllers that need it. mHandlerThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND); Loading Loading @@ -1989,7 +1991,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } } private int adjustDisableFlags(int state) { protected int adjustDisableFlags(int state) { if (!mLaunchTransitionFadingAway && !mKeyguardFadingAway && (mExpandedVisible || mBouncerShowing || mWaitingForKeyguardExit)) { state |= StatusBarManager.DISABLE_NOTIFICATION_ICONS; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +3 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.systemui.BatteryMeterView; import com.android.systemui.FontSizeUtils; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.statusbar.NotificationData; import com.android.systemui.statusbar.SignalClusterView; import com.android.systemui.statusbar.StatusBarIconView; Loading Loading @@ -116,8 +117,8 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl mStatusIcons = (LinearLayout) statusBar.findViewById(R.id.statusIcons); mSignalCluster = (SignalClusterView) statusBar.findViewById(R.id.signal_cluster); mNotificationIconAreaController = new NotificationIconAreaController(context, phoneStatusBar); mNotificationIconAreaController = SystemUIFactory.getInstance() .createNotificationIconAreaController(context, phoneStatusBar); mNotificationIconAreaInner = mNotificationIconAreaController.getNotificationInnerAreaView(); Loading