diff options
| author | Selim Cinek <cinek@google.com> | 2015-10-16 23:28:46 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-16 23:28:46 +0000 |
| commit | b9a73d2ce34b35684a282c8521d65f52fea1197a (patch) | |
| tree | aacfe2e570f9e173ea239552e668196fb262f48a | |
| parent | 1f0ec16b6d5f20ed8b6156eb1b5abf4c73548645 (diff) | |
| parent | 98713a4fcf1061d3366b333c954fd7b8e9f12841 (diff) | |
| download | frameworks_base-b9a73d2ce34b35684a282c8521d65f52fea1197a.zip frameworks_base-b9a73d2ce34b35684a282c8521d65f52fea1197a.tar.gz frameworks_base-b9a73d2ce34b35684a282c8521d65f52fea1197a.tar.bz2 | |
Merge "Stopping chronometers now when the shade is closed" into mnc-dr-dev
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) { |
