Merge "Fix race condition btwn row and shelf icon init" into rvc-dev am: c9ca670cf2

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11959993

Change-Id: I6bfed6217ed6b765a16fc58df4e5fdc2d555be6e
This commit is contained in:
TreeHugger Robot
2020-06-23 02:26:51 +00:00
committed by Automerger Merge Worker
2 changed files with 16 additions and 4 deletions

View File

@@ -178,6 +178,7 @@ public final class NotificationEntry extends ListEntry {
private int mBucket = BUCKET_ALERTING;
@Nullable private Long mPendingAnimationDuration;
private boolean mIsMarkedForUserTriggeredMovement;
private boolean mShelfIconVisible;
/**
* @param sbn the StatusBarNotification from system server
@@ -431,6 +432,7 @@ public final class NotificationEntry extends ListEntry {
//TODO: This will go away when we have a way to bind an entry to a row
public void setRow(ExpandableNotificationRow row) {
this.row = row;
updateShelfIconVisibility();
}
public ExpandableNotificationRowController getRowController() {
@@ -951,6 +953,18 @@ public final class NotificationEntry extends ListEntry {
return mIsMarkedForUserTriggeredMovement;
}
/** Whether or not the icon for this notification is visible in the shelf. */
public void setShelfIconVisible(boolean shelfIconVisible) {
mShelfIconVisible = shelfIconVisible;
updateShelfIconVisibility();
}
private void updateShelfIconVisibility() {
if (row != null) {
row.setShelfIconVisible(mShelfIconVisible);
}
}
/**
* Mark this entry for movement triggered by a user action (ex: changing the priorirty of a
* conversation). This can then be used for custom animations.

View File

@@ -96,13 +96,11 @@ class IconManager @Inject constructor(
val shelfIcon = iconBuilder.createIconView(entry)
shelfIcon.scaleType = ImageView.ScaleType.CENTER_INSIDE
shelfIcon.visibility = View.INVISIBLE
// TODO: This doesn't belong here
shelfIcon.setOnVisibilityChangedListener { newVisibility: Int ->
if (entry.row != null) {
entry.row.setShelfIconVisible(newVisibility == View.VISIBLE)
}
entry.setShelfIconVisible(newVisibility == View.VISIBLE)
}
shelfIcon.visibility = View.INVISIBLE
// Construct the aod icon view.
val aodIcon = iconBuilder.createIconView(entry)