summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Cecilia Hong <xiaotinghong@google.com> 2021-06-04 16:45:34 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-06-04 16:45:34 +0000
commitcb3cf0b9b6debe13b21fa1d7e00ab853ee7b4066 (patch)
tree51ecf08ed79927fc64b72dbade4b2782eb4e928b
parent1428a68f0028beda9b90e7458822ce3a8b432dd3 (diff)
parentca8abecb3bdfeee77781ad542f349036cf637d39 (diff)
Merge "Recreate the media recommendation card after the Display setting is changed." into sc-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt39
1 files changed, 31 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
index 09da9d207f64..18d2c9183bb6 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
@@ -367,7 +367,7 @@ class MediaCarouselController @Inject constructor(
ViewGroup.LayoutParams.WRAP_CONTENT)
newRecs.recommendationViewHolder?.recommendations?.setLayoutParams(lp)
newRecs.bindRecommendation(data.copy(backgroundColor = bgColor))
- MediaPlayerData.addMediaRecommendation(key, newRecs, shouldPrioritize)
+ MediaPlayerData.addMediaRecommendation(key, data, newRecs, shouldPrioritize)
updatePlayerToState(newRecs, noAnimation = true)
reorderAllPlayers()
updatePageIndicator()
@@ -408,9 +408,18 @@ class MediaCarouselController @Inject constructor(
bgColor = getBackgroundColor()
pageIndicator.tintList = ColorStateList.valueOf(getForegroundColor())
- MediaPlayerData.mediaData().forEach { (key, data) ->
- removePlayer(key, dismissMediaData = false, dismissRecommendation = false)
- addOrUpdatePlayer(key = key, oldKey = null, data = data)
+ MediaPlayerData.mediaData().forEach { (key, data, isSsMediaRec) ->
+ if (isSsMediaRec) {
+ val smartspaceMediaData = MediaPlayerData.smartspaceMediaData
+ removePlayer(key, dismissMediaData = false, dismissRecommendation = false)
+ smartspaceMediaData?.let {
+ addSmartspaceMediaRecommendations(
+ it.targetId, it, MediaPlayerData.shouldPrioritizeSs)
+ }
+ } else {
+ removePlayer(key, dismissMediaData = false, dismissRecommendation = false)
+ addOrUpdatePlayer(key = key, oldKey = null, data = data)
+ }
}
}
@@ -697,7 +706,10 @@ internal object MediaPlayerData {
private val EMPTY = MediaData(-1, false, 0, null, null, null, null, null,
emptyList(), emptyList(), "INVALID", null, null, null, true, null)
// Whether should prioritize Smartspace card.
- private var shouldPrioritizeSs: Boolean = false
+ internal var shouldPrioritizeSs: Boolean = false
+ private set
+ internal var smartspaceMediaData: SmartspaceMediaData? = null
+ private set
data class MediaSortKey(
// Whether the item represents a Smartspace media recommendation.
@@ -724,12 +736,18 @@ internal object MediaPlayerData {
mediaPlayers.put(sortKey, player)
}
- fun addMediaRecommendation(key: String, player: MediaControlPanel, shouldPrioritize: Boolean) {
+ fun addMediaRecommendation(
+ key: String,
+ data: SmartspaceMediaData,
+ player: MediaControlPanel,
+ shouldPrioritize: Boolean
+ ) {
shouldPrioritizeSs = shouldPrioritize
removeMediaPlayer(key)
val sortKey = MediaSortKey(isSsMediaRec = true, EMPTY, System.currentTimeMillis())
mediaData.put(key, sortKey)
mediaPlayers.put(sortKey, player)
+ smartspaceMediaData = data
}
fun getMediaPlayer(key: String, oldKey: String?): MediaControlPanel? {
@@ -742,9 +760,14 @@ internal object MediaPlayerData {
return mediaData.get(key)?.let { mediaPlayers.get(it) }
}
- fun removeMediaPlayer(key: String) = mediaData.remove(key)?.let { mediaPlayers.remove(it) }
+ fun removeMediaPlayer(key: String) = mediaData.remove(key)?.let {
+ if (it.isSsMediaRec) {
+ smartspaceMediaData = null
+ }
+ mediaPlayers.remove(it)
+ }
- fun mediaData() = mediaData.entries.map { e -> Pair(e.key, e.value.data) }
+ fun mediaData() = mediaData.entries.map { e -> Triple(e.key, e.value.data, e.value.isSsMediaRec) }
fun players() = mediaPlayers.values