Loading packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +71 −15 Original line number Diff line number Diff line Loading @@ -956,31 +956,38 @@ public abstract class BaseStatusBar extends SystemUI implements protected View bindVetoButtonClickListener(View row, final StatusBarNotification n) { View vetoButton = row.findViewById(R.id.veto); final String _pkg = n.getPackageName(); final String _tag = n.getTag(); final int _id = n.getId(); final int _userId = n.getUserId(); vetoButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Accessibility feedback v.announceForAccessibility( mContext.getString(R.string.accessibility_notification_dismissed)); performRemoveNotification(n, false /* removeView */); } }); vetoButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); return vetoButton; } private void performRemoveNotification(StatusBarNotification n, boolean removeView) { final String pkg = n.getPackageName(); final String tag = n.getTag(); final int id = n.getId(); final int userId = n.getUserId(); try { mBarService.onNotificationClear(_pkg, _tag, _id, _userId); mBarService.onNotificationClear(pkg, tag, id, userId); if (FORCE_REMOTE_INPUT_HISTORY && mKeysKeptForRemoteInput.contains(n.getKey())) { removeNotification(n.getKey(), null); mKeysKeptForRemoteInput.remove(n.getKey()); removeView = true; } if (removeView) { removeNotification(n.getKey(), null); } } catch (RemoteException ex) { // system process is dead if we're here. } } }); vetoButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); return vetoButton; } protected void applyColorsAndBackgrounds(StatusBarNotification sbn, Loading Loading @@ -1826,6 +1833,13 @@ public abstract class BaseStatusBar extends SystemUI implements }, afterKeyguardGone); } public void addPostCollapseAction(Runnable r) { } public boolean isCollapsing() { return false; } private final class NotificationClicker implements View.OnClickListener { public void onClick(final View v) { if (!(v instanceof ExpandableNotificationRow)) { Loading Loading @@ -1875,6 +1889,15 @@ public abstract class BaseStatusBar extends SystemUI implements HeadsUpManager.setIsClickedNotification(row, true); mHeadsUpManager.releaseImmediately(notificationKey); } StatusBarNotification parentToCancel = null; if (shouldAutoCancel(sbn) && mGroupManager.isOnlyChildInGroup(sbn)) { StatusBarNotification summarySbn = mGroupManager.getLogicalGroupSummary(sbn) .getStatusBarNotification(); if (shouldAutoCancel(summarySbn)) { parentToCancel = summarySbn; } } final StatusBarNotification parentToCancelFinal = parentToCancel; new Thread() { @Override public void run() { Loading Loading @@ -1930,6 +1953,28 @@ public abstract class BaseStatusBar extends SystemUI implements } catch (RemoteException ex) { // system process is dead if we're here. } if (parentToCancelFinal != null) { // We have to post it to the UI thread for synchronization mHandler.post(new Runnable() { @Override public void run() { Runnable removeRunnable = new Runnable() { @Override public void run() { performRemoveNotification(parentToCancelFinal, true); } }; if (isCollapsing()) { // To avoid lags we're only performing the remove // after the shade was collapsed addPostCollapseAction(removeRunnable); } else { removeRunnable.run(); } } }); } } }.start(); Loading @@ -1943,6 +1988,17 @@ public abstract class BaseStatusBar extends SystemUI implements }, afterKeyguardGone); } private boolean shouldAutoCancel(StatusBarNotification sbn) { int flags = sbn.getNotification().flags; if ((flags & Notification.FLAG_AUTO_CANCEL) != Notification.FLAG_AUTO_CANCEL) { return false; } if ((flags & Notification.FLAG_FOREGROUND_SERVICE) != 0) { return false; } return true; } public void register(ExpandableNotificationRow row, StatusBarNotification sbn) { Notification notification = sbn.getNotification(); if (notification.contentIntent != null || notification.fullScreenIntent != null) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java +5 −1 Original line number Diff line number Diff line Loading @@ -215,7 +215,11 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged public boolean isOnlyChildInSuppressedGroup(StatusBarNotification sbn) { return isGroupSuppressed(sbn.getGroupKey()) && !sbn.getNotification().isGroupSummary() && isOnlyChildInGroup(sbn); } public boolean isOnlyChildInGroup(StatusBarNotification sbn) { return !sbn.getNotification().isGroupSummary() && getTotalNumberOfChildren(sbn) == 1; } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +2 −0 Original line number Diff line number Diff line Loading @@ -3828,10 +3828,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, updateMediaMetaData(true /* metaDataChanged */, true); } @Override public boolean isCollapsing() { return mNotificationPanel.isCollapsing(); } @Override public void addPostCollapseAction(Runnable r) { mPostCollapseRunnables.add(r); } Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +71 −15 Original line number Diff line number Diff line Loading @@ -956,31 +956,38 @@ public abstract class BaseStatusBar extends SystemUI implements protected View bindVetoButtonClickListener(View row, final StatusBarNotification n) { View vetoButton = row.findViewById(R.id.veto); final String _pkg = n.getPackageName(); final String _tag = n.getTag(); final int _id = n.getId(); final int _userId = n.getUserId(); vetoButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Accessibility feedback v.announceForAccessibility( mContext.getString(R.string.accessibility_notification_dismissed)); performRemoveNotification(n, false /* removeView */); } }); vetoButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); return vetoButton; } private void performRemoveNotification(StatusBarNotification n, boolean removeView) { final String pkg = n.getPackageName(); final String tag = n.getTag(); final int id = n.getId(); final int userId = n.getUserId(); try { mBarService.onNotificationClear(_pkg, _tag, _id, _userId); mBarService.onNotificationClear(pkg, tag, id, userId); if (FORCE_REMOTE_INPUT_HISTORY && mKeysKeptForRemoteInput.contains(n.getKey())) { removeNotification(n.getKey(), null); mKeysKeptForRemoteInput.remove(n.getKey()); removeView = true; } if (removeView) { removeNotification(n.getKey(), null); } } catch (RemoteException ex) { // system process is dead if we're here. } } }); vetoButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); return vetoButton; } protected void applyColorsAndBackgrounds(StatusBarNotification sbn, Loading Loading @@ -1826,6 +1833,13 @@ public abstract class BaseStatusBar extends SystemUI implements }, afterKeyguardGone); } public void addPostCollapseAction(Runnable r) { } public boolean isCollapsing() { return false; } private final class NotificationClicker implements View.OnClickListener { public void onClick(final View v) { if (!(v instanceof ExpandableNotificationRow)) { Loading Loading @@ -1875,6 +1889,15 @@ public abstract class BaseStatusBar extends SystemUI implements HeadsUpManager.setIsClickedNotification(row, true); mHeadsUpManager.releaseImmediately(notificationKey); } StatusBarNotification parentToCancel = null; if (shouldAutoCancel(sbn) && mGroupManager.isOnlyChildInGroup(sbn)) { StatusBarNotification summarySbn = mGroupManager.getLogicalGroupSummary(sbn) .getStatusBarNotification(); if (shouldAutoCancel(summarySbn)) { parentToCancel = summarySbn; } } final StatusBarNotification parentToCancelFinal = parentToCancel; new Thread() { @Override public void run() { Loading Loading @@ -1930,6 +1953,28 @@ public abstract class BaseStatusBar extends SystemUI implements } catch (RemoteException ex) { // system process is dead if we're here. } if (parentToCancelFinal != null) { // We have to post it to the UI thread for synchronization mHandler.post(new Runnable() { @Override public void run() { Runnable removeRunnable = new Runnable() { @Override public void run() { performRemoveNotification(parentToCancelFinal, true); } }; if (isCollapsing()) { // To avoid lags we're only performing the remove // after the shade was collapsed addPostCollapseAction(removeRunnable); } else { removeRunnable.run(); } } }); } } }.start(); Loading @@ -1943,6 +1988,17 @@ public abstract class BaseStatusBar extends SystemUI implements }, afterKeyguardGone); } private boolean shouldAutoCancel(StatusBarNotification sbn) { int flags = sbn.getNotification().flags; if ((flags & Notification.FLAG_AUTO_CANCEL) != Notification.FLAG_AUTO_CANCEL) { return false; } if ((flags & Notification.FLAG_FOREGROUND_SERVICE) != 0) { return false; } return true; } public void register(ExpandableNotificationRow row, StatusBarNotification sbn) { Notification notification = sbn.getNotification(); if (notification.contentIntent != null || notification.fullScreenIntent != null) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java +5 −1 Original line number Diff line number Diff line Loading @@ -215,7 +215,11 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged public boolean isOnlyChildInSuppressedGroup(StatusBarNotification sbn) { return isGroupSuppressed(sbn.getGroupKey()) && !sbn.getNotification().isGroupSummary() && isOnlyChildInGroup(sbn); } public boolean isOnlyChildInGroup(StatusBarNotification sbn) { return !sbn.getNotification().isGroupSummary() && getTotalNumberOfChildren(sbn) == 1; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +2 −0 Original line number Diff line number Diff line Loading @@ -3828,10 +3828,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, updateMediaMetaData(true /* metaDataChanged */, true); } @Override public boolean isCollapsing() { return mNotificationPanel.isCollapsing(); } @Override public void addPostCollapseAction(Runnable r) { mPostCollapseRunnables.add(r); } Loading