Handling a few more border cases with HUNs
Also does sorting correctly now.
The status bar now allows touches below when a
heads-up is on.
Also fixes a few flashes when a heads up was
dismissed or appeared.
Change-Id: I4d90a07333ad2e5ea2a13704cdc9d9184716681a
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
index 824ba94..f2b971f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
@@ -17,11 +17,13 @@
package com.android.systemui.statusbar.stack;
import android.view.View;
+
import com.android.systemui.statusbar.ActivatableNotificationView;
+import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import java.util.ArrayList;
-import java.util.TreeMap;
+import java.util.TreeSet;
/**
* A global state to track all input states for the algorithm.
@@ -37,7 +39,7 @@
private boolean mDark;
private boolean mHideSensitive;
private HeadsUpManager mHeadsUpManager;
- private float mPaddingOffset;
+ private float mStackTranslation;
private int mLayoutHeight;
private int mTopPadding;
private boolean mShadeExpanded;
@@ -128,16 +130,16 @@
mHeadsUpManager = headsUpManager;
}
- public TreeMap<String, HeadsUpManager.HeadsUpEntry> getHeadsUpEntries() {
- return mHeadsUpManager.getEntries();
+ public TreeSet<HeadsUpManager.HeadsUpEntry> getSortedHeadsUpEntries() {
+ return mHeadsUpManager.getSortedEntries();
}
- public float getPaddingOffset() {
- return mPaddingOffset;
+ public float getStackTranslation() {
+ return mStackTranslation;
}
- public void setPaddingOffset(float paddingOffset) {
- mPaddingOffset = paddingOffset;
+ public void setStackTranslation(float stackTranslation) {
+ mStackTranslation = stackTranslation;
}
public int getLayoutHeight() {
@@ -148,7 +150,7 @@
mLayoutHeight = layoutHeight;
}
- public int getTopPadding() {
+ public float getTopPadding() {
return mTopPadding;
}
@@ -157,7 +159,13 @@
}
public int getInnerHeight() {
- return mLayoutHeight - mTopPadding;
+ return mLayoutHeight - mTopPadding - getTopHeadsUpPushIn();
+ }
+
+ private int getTopHeadsUpPushIn() {
+ ExpandableNotificationRow topHeadsUpEntry = getTopHeadsUpEntry();
+ return topHeadsUpEntry != null ? topHeadsUpEntry.getHeadsUpHeight()
+ - topHeadsUpEntry.getMinHeight(): 0;
}
public boolean isShadeExpanded() {
@@ -175,4 +183,9 @@
public float getMaxHeadsUpTranslation() {
return mMaxHeadsUpTranslation;
}
+
+ public ExpandableNotificationRow getTopHeadsUpEntry() {
+ HeadsUpManager.HeadsUpEntry topEntry = mHeadsUpManager.getTopEntry();
+ return topEntry == null ? null : topEntry.entry.row;
+ }
}