diff options
author | Selim Cinek <cinek@google.com> | 2015-09-21 15:47:20 +0200 |
---|---|---|
committer | Selim Cinek <cinek@google.com> | 2015-10-16 15:58:10 -0700 |
commit | 98713a4fcf1061d3366b333c954fd7b8e9f12841 (patch) | |
tree | 3de761905f9a336d94a1689956f40edfa9e9a925 /packages | |
parent | 70ea857859b78a708fb99ac708ead7bdaddf79a7 (diff) | |
download | frameworks_base-98713a4fcf1061d3366b333c954fd7b8e9f12841.zip frameworks_base-98713a4fcf1061d3366b333c954fd7b8e9f12841.tar.gz frameworks_base-98713a4fcf1061d3366b333c954fd7b8e9f12841.tar.bz2 |
Stopping chronometers now when the shade is closed
Bug: 23978877
Change-Id: I01a9e756d7eeef7aa239ca0c67d4084624aaed12
Diffstat (limited to 'packages')
2 files changed, 55 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index 5f01306..56e9af5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -32,6 +32,7 @@ import android.view.View; import android.view.ViewStub; import android.view.accessibility.AccessibilityEvent; import android.view.animation.LinearInterpolator; +import android.widget.Chronometer; import android.widget.ImageView; import com.android.systemui.R; @@ -88,6 +89,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { private NotificationGuts mGuts; private StatusBarNotification mStatusBarNotification; private boolean mIsHeadsUp; + private boolean mLastChronometerRunning = true; private View mExpandButton; private View mExpandButtonDivider; private ViewStub mExpandButtonStub; @@ -294,6 +296,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { */ public void setPinned(boolean pinned) { mIsPinned = pinned; + setChronometerRunning(mLastChronometerRunning); } public boolean isPinned() { @@ -319,6 +322,41 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { return mJustClicked; } + public void setChronometerRunning(boolean running) { + mLastChronometerRunning = running; + setChronometerRunning(running, mPrivateLayout); + setChronometerRunning(running, mPublicLayout); + if (mChildrenContainer != null) { + List<ExpandableNotificationRow> notificationChildren = + mChildrenContainer.getNotificationChildren(); + for (int i = 0; i < notificationChildren.size(); i++) { + ExpandableNotificationRow child = notificationChildren.get(i); + child.setChronometerRunning(running); + } + } + } + + private void setChronometerRunning(boolean running, NotificationContentView layout) { + if (layout != null) { + running = running || isPinned(); + View contractedChild = layout.getContractedChild(); + View expandedChild = layout.getExpandedChild(); + View headsUpChild = layout.getHeadsUpChild(); + setChronometerRunningForChild(running, contractedChild); + setChronometerRunningForChild(running, expandedChild); + setChronometerRunningForChild(running, headsUpChild); + } + } + + private void setChronometerRunningForChild(boolean running, View child) { + if (child != null) { + View chronometer = child.findViewById(com.android.internal.R.id.chronometer); + if (chronometer instanceof Chronometer) { + ((Chronometer) chronometer).setStarted(running); + } + } + } + public interface ExpansionLogger { public void logNotificationExpansion(String key, boolean userAction, boolean expanded); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index a7fe71e..af38f5f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -1778,6 +1778,7 @@ public class NotificationStackScrollLayout extends ViewGroup ((ExpandableView) child).setOnHeightChangedListener(this); generateAddAnimation(child, false /* fromMoreCard */); updateAnimationState(child); + updateChronometerForChild(child); if (canChildBeDismissed(child)) { // Make sure the dismissButton is visible and not in the animated state. // We need to do this to avoid a race where a clearable notification is added after the @@ -2287,6 +2288,21 @@ public class NotificationStackScrollLayout extends ViewGroup mStackScrollAlgorithm.setIsExpanded(isExpanded); if (changed) { updateNotificationAnimationStates(); + updateChronometers(); + } + } + + private void updateChronometers() { + int childCount = getChildCount(); + for (int i = 0; i < childCount; i++) { + updateChronometerForChild(getChildAt(i)); + } + } + + private void updateChronometerForChild(View child) { + if (child instanceof ExpandableNotificationRow) { + ExpandableNotificationRow row = (ExpandableNotificationRow) child; + row.setChronometerRunning(mIsExpanded); } } @@ -2309,6 +2325,7 @@ public class NotificationStackScrollLayout extends ViewGroup } mStackScrollAlgorithm.onReset(view); updateAnimationState(view); + updateChronometerForChild(view); } private void updateScrollPositionOnExpandInBottom(ExpandableView view) { |