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

Commit 1ef2de7f authored by Jordan Demeulenaere's avatar Jordan Demeulenaere Committed by Android (Google) Code Review
Browse files

Merge "Use the new modifier based implementation of Expandable in QS" into main

parents 4f527b91 38d0a486
Loading
Loading
Loading
Loading
+42 −8
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ import com.android.systemui.animation.Expandable
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.ui.compose.Icon
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.qs.flags.QSComposeFragment
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsButtonViewModel
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsForegroundServicesButtonViewModel
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsSecurityButtonViewModel
@@ -218,11 +219,24 @@ fun FooterActions(
                Spacer(Modifier.weight(1f))
            }

            security?.let { SecurityButton(it, Modifier.weight(1f)) }
            foregroundServices?.let { ForegroundServicesButton(it) }
            userSwitcher?.let { IconButton(it, Modifier.sysuiResTag("multi_user_switch")) }
            IconButton(viewModel.settings, Modifier.sysuiResTag("settings_button_container"))
            power?.let { IconButton(it, Modifier.sysuiResTag("pm_lite")) }
            val useModifierBasedExpandable = remember { QSComposeFragment.isEnabled }
            security?.let { SecurityButton(it, useModifierBasedExpandable, Modifier.weight(1f)) }
            foregroundServices?.let { ForegroundServicesButton(it, useModifierBasedExpandable) }
            userSwitcher?.let {
                IconButton(
                    it,
                    useModifierBasedExpandable,
                    Modifier.sysuiResTag("multi_user_switch"),
                )
            }
            IconButton(
                viewModel.settings,
                useModifierBasedExpandable,
                Modifier.sysuiResTag("settings_button_container"),
            )
            power?.let {
                IconButton(it, useModifierBasedExpandable, Modifier.sysuiResTag("pm_lite"))
            }
        }
    }
}
@@ -231,6 +245,7 @@ fun FooterActions(
@Composable
private fun SecurityButton(
    model: FooterActionsSecurityButtonViewModel,
    useModifierBasedExpandable: Boolean,
    modifier: Modifier = Modifier,
) {
    val onClick: ((Expandable) -> Unit)? =
@@ -239,13 +254,21 @@ private fun SecurityButton(
            { expandable -> onClick(context, expandable) }
        }

    TextButton(model.icon, model.text, showNewDot = false, onClick = onClick, modifier)
    TextButton(
        model.icon,
        model.text,
        showNewDot = false,
        onClick = onClick,
        useModifierBasedExpandable,
        modifier,
    )
}

/** The foreground services button. */
@Composable
private fun RowScope.ForegroundServicesButton(
    model: FooterActionsForegroundServicesButtonViewModel
    model: FooterActionsForegroundServicesButtonViewModel,
    useModifierBasedExpandable: Boolean,
) {
    if (model.displayText) {
        TextButton(
@@ -253,6 +276,7 @@ private fun RowScope.ForegroundServicesButton(
            model.text,
            showNewDot = model.hasNewChanges,
            onClick = model.onClick,
            useModifierBasedExpandable,
            Modifier.weight(1f),
        )
    } else {
@@ -261,13 +285,18 @@ private fun RowScope.ForegroundServicesButton(
            contentDescription = model.text,
            showNewDot = model.hasNewChanges,
            onClick = model.onClick,
            useModifierBasedExpandable,
        )
    }
}

/** A button with an icon. */
@Composable
fun IconButton(model: FooterActionsButtonViewModel, modifier: Modifier = Modifier) {
fun IconButton(
    model: FooterActionsButtonViewModel,
    useModifierBasedExpandable: Boolean,
    modifier: Modifier = Modifier,
) {
    Expandable(
        color = colorAttr(model.backgroundColor),
        shape = CircleShape,
@@ -277,6 +306,7 @@ fun IconButton(model: FooterActionsButtonViewModel, modifier: Modifier = Modifie
                color = MaterialTheme.colorScheme.secondary,
                CornerSize(percent = 50),
            ),
        useModifierBasedImplementation = useModifierBasedExpandable,
    ) {
        val tint = model.iconTint?.let { Color(it) } ?: Color.Unspecified
        Icon(model.icon, tint = tint, modifier = Modifier.size(20.dp))
@@ -290,6 +320,7 @@ private fun NumberButton(
    contentDescription: String,
    showNewDot: Boolean,
    onClick: (Expandable) -> Unit,
    useModifierBasedExpandable: Boolean,
    modifier: Modifier = Modifier,
) {
    // By default Expandable will show a ripple above its content when clicked, and clip the content
@@ -309,6 +340,7 @@ private fun NumberButton(
                color = MaterialTheme.colorScheme.secondary,
                CornerSize(percent = 50),
            ),
        useModifierBasedImplementation = useModifierBasedExpandable,
    ) {
        Box(Modifier.size(40.dp)) {
            Box(
@@ -355,6 +387,7 @@ private fun TextButton(
    text: String,
    showNewDot: Boolean,
    onClick: ((Expandable) -> Unit)?,
    useModifierBasedExpandable: Boolean,
    modifier: Modifier = Modifier,
) {
    Expandable(
@@ -367,6 +400,7 @@ private fun TextButton(
                .padding(horizontal = 4.dp)
                .borderOnFocus(color = MaterialTheme.colorScheme.secondary, CornerSize(50)),
        onClick = onClick,
        useModifierBasedImplementation = useModifierBasedExpandable,
    ) {
        Row(
            Modifier.padding(horizontal = dimensionResource(R.dimen.qs_footer_padding)),
+1 −0
Original line number Diff line number Diff line
@@ -245,6 +245,7 @@ private fun TileExpandable(
        color = color(),
        shape = shape,
        modifier = modifier.clip(shape).verticalSquish(squishiness),
        useModifierBasedImplementation = true,
    ) {
        content(hapticsViewModel?.createStateAwareExpandable(it) ?: it)
    }
+9 −2
Original line number Diff line number Diff line
@@ -32,18 +32,25 @@ fun Toolbar(toolbarViewModelFactory: ToolbarViewModel.Factory, modifier: Modifie

    Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
        viewModel.userSwitcherViewModel?.let {
            IconButton(it, Modifier.sysuiResTag("multi_user_switch"))
            IconButton(
                it,
                useModifierBasedExpandable = true,
                Modifier.sysuiResTag("multi_user_switch"),
            )
        }

        EditModeButton(viewModel.editModeButtonViewModelFactory)

        IconButton(
            viewModel.settingsButtonViewModel,
            useModifierBasedExpandable = true,
            Modifier.sysuiResTag("settings_button_container"),
        )

        Spacer(modifier = Modifier.weight(1f))

        viewModel.powerButtonViewModel?.let { IconButton(it, Modifier.sysuiResTag("pm_lite")) }
        viewModel.powerButtonViewModel?.let {
            IconButton(it, useModifierBasedExpandable = true, Modifier.sysuiResTag("pm_lite"))
        }
    }
}