Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90517fae authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use same Icon and background when media is updated" into main

parents 0ccaa957 e62d1c61
Loading
Loading
Loading
Loading
+25 −3
Original line number Diff line number Diff line
@@ -17,8 +17,12 @@
package com.android.systemui.common.shared.model

import android.annotation.DrawableRes
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import androidx.compose.runtime.Stable
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asImageBitmap
import androidx.core.graphics.drawable.toBitmap
import com.android.systemui.common.shared.model.Icon.Loaded

/**
@@ -88,3 +92,21 @@ fun Drawable.asIcon(
    contentDescription: ContentDescription? = null,
    @DrawableRes res: Int? = null,
): Loaded = Loaded(this, contentDescription, res)

/**
 * Creates [ImageBitmap] for a given [Icon.Loaded]. It avoids IllegalArgumentException by providing
 * 1x1 bitmap if [Drawable.getIntrinsicWidth] or [Drawable.getIntrinsicHeight] is <= 0
 */
fun Loaded.asImageBitmap(): ImageBitmap {
    return with(drawable) {
        if (this is BitmapDrawable) {
            bitmap.asImageBitmap()
        } else {
            toBitmap(
                    width = intrinsicWidth.takeIf { it > 0 } ?: 1,
                    height = intrinsicWidth.takeIf { it > 0 } ?: 1,
                )
                .asImageBitmap()
        }
    }
}
+15 −5
Original line number Diff line number Diff line
@@ -16,12 +16,15 @@

package com.android.systemui.media.controls.data.repository

import android.content.Context
import com.android.internal.logging.InstanceId
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.media.controls.data.model.MediaSortKeyModel
import com.android.systemui.media.controls.shared.model.MediaCommonModel
import com.android.systemui.media.controls.shared.model.MediaData
import com.android.systemui.media.controls.shared.model.MediaDataLoadingModel
import com.android.systemui.media.remedia.data.model.UpdateArtInfoModel
import com.android.systemui.media.remedia.data.repository.MediaPipelineRepository
import com.android.systemui.util.time.SystemClock
import java.util.TreeMap
@@ -31,8 +34,12 @@ import kotlinx.coroutines.flow.asStateFlow

/** A repository that holds the state of filtered media data on the device. */
@SysUISingleton
class MediaFilterRepository @Inject constructor(private val systemClock: SystemClock) :
    MediaPipelineRepository() {
class MediaFilterRepository
@Inject
constructor(
    @Application private val applicationContext: Context,
    private val systemClock: SystemClock,
) : MediaPipelineRepository(applicationContext) {

    private val _currentMedia: MutableStateFlow<List<MediaCommonModel>> =
        MutableStateFlow(mutableListOf())
@@ -40,9 +47,12 @@ class MediaFilterRepository @Inject constructor(private val systemClock: SystemC

    private var sortedMedia = TreeMap<MediaSortKeyModel, MediaCommonModel>(comparator)

    override fun addCurrentUserMediaEntry(data: MediaData): Boolean {
        return super.addCurrentUserMediaEntry(data).also {
            addMediaDataLoadingState(MediaDataLoadingModel.Loaded(data.instanceId), it)
    override fun addCurrentUserMediaEntry(data: MediaData): UpdateArtInfoModel? {
        return super.addCurrentUserMediaEntry(data).also { updateModel ->
            addMediaDataLoadingState(
                MediaDataLoadingModel.Loaded(data.instanceId),
                isUpdate = updateModel != null,
            )
        }
    }

+2 −0
Original line number Diff line number Diff line
@@ -49,6 +49,8 @@ import com.android.systemui.media.controls.domain.pipeline.MediaDataManager.Comp
import com.android.systemui.media.controls.domain.resume.MediaResumeListener
import com.android.systemui.media.controls.domain.resume.ResumeMediaBrowser
import com.android.systemui.media.controls.shared.MediaLogger
import com.android.systemui.media.controls.shared.getActiveTimestamp
import com.android.systemui.media.controls.shared.isSameMediaData
import com.android.systemui.media.controls.shared.model.MediaAction
import com.android.systemui.media.controls.shared.model.MediaButton
import com.android.systemui.media.controls.shared.model.MediaData
+2 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ import com.android.systemui.media.controls.domain.pipeline.MediaDataManager.Comp
import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
import com.android.systemui.media.controls.domain.resume.ResumeMediaBrowser
import com.android.systemui.media.controls.shared.MediaLogger
import com.android.systemui.media.controls.shared.getActiveTimestamp
import com.android.systemui.media.controls.shared.isSameMediaData
import com.android.systemui.media.controls.shared.model.MediaAction
import com.android.systemui.media.controls.shared.model.MediaButton
import com.android.systemui.media.controls.shared.model.MediaData
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.media.NotificationMediaManager.isPlayingState
import com.android.systemui.media.controls.shared.areCustomActionListsEqual
import com.android.systemui.media.controls.shared.model.MediaData
import com.android.systemui.media.controls.util.MediaControllerFactory
import com.android.systemui.plugins.statusbar.StatusBarStateController
Loading