From 604ae091429f3ade44daaed25014ee7fbb35bcff Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Thu, 17 Jul 2014 18:22:45 -0400 Subject: [PATCH] Shade: Hide status icons, take 2. Restore visibility logic (for mirrored view) and remove a bad optimization from the clipping calculation. Bug:16337935 Change-Id: I7eb82ef6c87f30da9d8b70136e05dab3abdbdead --- .../statusbar/phone/StatusBarHeaderView.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java index 574d536f4feb8..3012b1319dfdf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java @@ -285,6 +285,9 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL mDateExpanded.setVisibility(mExpanded && !mOverscrolled ? View.VISIBLE : View.GONE); mSettingsButton.setVisibility(mExpanded && !mOverscrolled ? View.VISIBLE : View.GONE); mQsDetailHeader.setVisibility(mExpanded ? View.VISIBLE : View.GONE); + if (mStatusIcons != null) { + mStatusIcons.setVisibility(!mExpanded || mOverscrolled ? View.VISIBLE : View.GONE); + } if (mSignalCluster != null) { mSignalCluster.setVisibility(!mExpanded || mOverscrolled ? View.VISIBLE : View.GONE); } @@ -437,15 +440,16 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL public void attachSystemIcons(LinearLayout systemIcons) { mSystemIconsContainer.addView(systemIcons); mStatusIcons = systemIcons.findViewById(R.id.statusIcons); - mStatusIcons.addOnLayoutChangeListener(mStatusIconsChanged); mSignalCluster = systemIcons.findViewById(R.id.signal_cluster); + mSignalCluster.addOnLayoutChangeListener(mSignalClusterChanged); } public void onSystemIconsDetached() { if (mStatusIcons != null) { - mStatusIcons.removeOnLayoutChangeListener(mStatusIconsChanged); + mStatusIcons.setVisibility(View.VISIBLE); } if (mSignalCluster != null) { + mSignalCluster.removeOnLayoutChangeListener(mSignalClusterChanged); mSignalCluster.setVisibility(View.VISIBLE); } mStatusIcons = null; @@ -528,7 +532,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL // here. } - private final OnLayoutChangeListener mStatusIconsChanged = new OnLayoutChangeListener() { + private final OnLayoutChangeListener mSignalClusterChanged = new OnLayoutChangeListener() { private final Rect mClipBounds = new Rect(); @Override @@ -536,12 +540,9 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { // Hide the statusIcons in the header by clipping them. Can't touch visibility since // they are mirrored to the real status bar. - final Rect r = mSystemIconsContainer.getClipBounds(); - if (r == null || r.left != right) { - mClipBounds.set(right, 0, mSystemIconsContainer.getWidth(), - mSystemIconsContainer.getHeight()); - mSystemIconsContainer.setClipBounds(mClipBounds); - } + mClipBounds.set(left, 0, mSystemIconsContainer.getWidth(), + mSystemIconsContainer.getHeight()); + mSystemIconsContainer.setClipBounds(mClipBounds); } };