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

Commit a1119ca2 authored by Michael Mikhail's avatar Michael Mikhail
Browse files

Add drawable option for media actions

Flag: com.android.systemui.media_controls_in_compose
Bug: 397989775
Test: Build.
Change-Id: Ib58381f3266b44a467849bbafa153d71ebd0d56e
parent 4cabd1d8
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@

package com.android.compose

import android.graphics.drawable.Drawable
import androidx.annotation.DrawableRes
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.PaddingValues
@@ -34,6 +35,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import com.android.compose.ui.graphics.painter.rememberDrawablePainter

@Composable
fun PlatformButton(
@@ -120,6 +122,31 @@ fun PlatformIconButton(
    }
}

@Composable
fun PlatformIconButton(
    onClick: () -> Unit,
    modifier: Modifier = Modifier,
    enabled: Boolean = true,
    colors: IconButtonColors = iconButtonColors(),
    shape: Shape = IconButtonDefaults.standardShape,
    iconDrawable: Drawable,
    contentDescription: String?,
) {
    IconButton(
        modifier = modifier,
        onClick = onClick,
        enabled = enabled,
        colors = colors,
        shape = shape,
    ) {
        Icon(
            painter = rememberDrawablePainter(iconDrawable),
            contentDescription = contentDescription,
            tint = colors.contentColor,
        )
    }
}

private val ButtonPaddings = PaddingValues(horizontal = 16.dp, vertical = 8.dp)

@Composable
+21 −8
Original line number Diff line number Diff line
@@ -1244,14 +1244,27 @@ private fun SecondaryActionContent(
    val sharedModifier = modifier.size(48.dp).padding(13.dp)
    when (viewModel) {
        is MediaSecondaryActionViewModel.Action ->
            when (viewModel.icon) {
                is Icon.Resource ->
                    PlatformIconButton(
                        onClick = viewModel.onClick ?: {},
                iconResource = (viewModel.icon as Icon.Resource).res,
                contentDescription = viewModel.icon.contentDescription?.load(),
                colors = IconButtonDefaults.iconButtonColors(contentColor = iconColor),
                        modifier = sharedModifier,
                        enabled = viewModel.onClick != null,
                        colors = IconButtonDefaults.iconButtonColors(contentColor = iconColor),
                        iconResource = viewModel.icon.res,
                        contentDescription = viewModel.icon.contentDescription?.load(),
                    )

                is Icon.Loaded ->
                    PlatformIconButton(
                        onClick = viewModel.onClick ?: {},
                        modifier = sharedModifier,
                        enabled = viewModel.onClick != null,
                        colors = IconButtonDefaults.iconButtonColors(contentColor = iconColor),
                        iconDrawable = viewModel.icon.drawable,
                        contentDescription = viewModel.icon.contentDescription?.load(),
                    )
            }

        is MediaSecondaryActionViewModel.ReserveSpace -> Spacer(modifier = sharedModifier)