diff options
| author | 2021-06-04 16:45:34 +0000 | |
|---|---|---|
| committer | 2021-06-04 16:45:34 +0000 | |
| commit | cb3cf0b9b6debe13b21fa1d7e00ab853ee7b4066 (patch) | |
| tree | 51ecf08ed79927fc64b72dbade4b2782eb4e928b | |
| parent | 1428a68f0028beda9b90e7458822ce3a8b432dd3 (diff) | |
| parent | ca8abecb3bdfeee77781ad542f349036cf637d39 (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.kt | 39 |
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 |