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

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

Merge "[Dual Shade] Move the user switcher button to the start of the toolbar." into main

parents d83a2c44 bae5f603
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import androidx.compose.foundation.basicMarquee
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.minimumInteractiveComponentSize
@@ -32,16 +33,18 @@ import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.onLongClick
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import com.android.systemui.communal.ui.compose.extensions.detectLongPressGesture
import com.android.systemui.development.ui.viewmodel.BuildNumberViewModel
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.qs.ui.compose.borderOnFocus
import com.android.systemui.res.R

@Composable
fun BuildNumber(
    viewModelFactory: BuildNumberViewModel.Factory,
    textColor: Color,
    modifier: Modifier = Modifier,
    textColor: Color = MaterialTheme.colorScheme.onSurface,
) {
    val viewModel = rememberViewModel(traceName = "BuildNumber") { viewModelFactory.create() }

@@ -56,6 +59,10 @@ fun BuildNumber(
            style = MaterialTheme.typography.bodySmall,
            modifier =
                modifier
                    .borderOnFocus(
                        color = MaterialTheme.colorScheme.secondary,
                        cornerSize = CornerSize(1.dp),
                    )
                    .focusable()
                    .wrapContentWidth()
                    // Using this instead of combinedClickable because this node should not support
+1 −13
Original line number Diff line number Diff line
@@ -23,12 +23,10 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.requiredHeight
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@@ -58,7 +56,6 @@ import com.android.systemui.qs.panels.ui.compose.toolbar.EditModeButton
import com.android.systemui.qs.panels.ui.viewmodel.PaginatedGridViewModel
import com.android.systemui.qs.panels.ui.viewmodel.TileViewModel
import com.android.systemui.qs.panels.ui.viewmodel.toolbar.EditModeButtonViewModel
import com.android.systemui.qs.ui.compose.borderOnFocus
import com.android.systemui.res.R
import javax.inject.Inject

@@ -190,16 +187,7 @@ private fun FooterBar(
        horizontalArrangement = spacedBy(8.dp),
    ) {
        Row(Modifier.weight(1f)) {
            BuildNumber(
                viewModelFactory = buildNumberViewModelFactory,
                textColor = MaterialTheme.colorScheme.onSurface,
                modifier =
                    Modifier.borderOnFocus(
                            color = MaterialTheme.colorScheme.secondary,
                            cornerSize = CornerSize(1.dp),
                        )
                        .wrapContentSize(),
            )
            BuildNumber(viewModelFactory = buildNumberViewModelFactory)
            Spacer(modifier = Modifier.weight(1f))
        }
        PagerDots(
+41 −38
Original line number Diff line number Diff line
@@ -24,23 +24,20 @@ import androidx.compose.animation.SharedTransitionLayout
import androidx.compose.animation.SharedTransitionScope
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.minimumInteractiveComponentSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.development.ui.compose.BuildNumber
import com.android.systemui.development.ui.viewmodel.BuildNumberViewModel
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.qs.footer.ui.compose.IconButton
import com.android.systemui.qs.panels.ui.compose.toolbar.Toolbar.TransitionKeys.SecurityInfoKey
import com.android.systemui.qs.panels.ui.viewmodel.TextFeedbackContentViewModel
import com.android.systemui.qs.panels.ui.viewmodel.TextFeedbackViewModel
import com.android.systemui.qs.panels.ui.viewmodel.toolbar.ToolbarViewModel
import com.android.systemui.qs.ui.compose.borderOnFocus

@OptIn(ExperimentalSharedTransitionApi::class)
@Composable
@@ -91,24 +88,27 @@ private fun SharedTransitionScope.StandardToolbarLayout(
    modifier: Modifier = Modifier,
) {
    Row(modifier) {
        // User switcher button
        IconButton(
            model = { viewModel.userSwitcherViewModel },
            useModifierBasedExpandable = true,
            Modifier.sysuiResTag("multi_user_switch").minimumInteractiveComponentSize(),
        )

        // Edit mode button
        // TODO(b/410843063): Support the tooltip in DualShade
        val editModeButtonViewModel =
            rememberViewModel("Toolbar") { viewModel.editModeButtonViewModelFactory.create() }
        EditModeButton(editModeButtonViewModel, tooltipEnabled = false)

        // Settings button
        IconButton(
            viewModel.settingsButtonViewModel,
            model = viewModel.settingsButtonViewModel,
            useModifierBasedExpandable = true,
            Modifier.sysuiResTag("settings_button_container").minimumInteractiveComponentSize(),
        )

        viewModel.userSwitcherViewModel?.let {
            IconButton(
                it,
                useModifierBasedExpandable = true,
                Modifier.sysuiResTag("multi_user_switch").minimumInteractiveComponentSize(),
            )
        }
        // Security info button
        SecurityInfo(
            viewModel = viewModel.securityInfoViewModel,
            showCollapsed = true,
@@ -119,15 +119,28 @@ private fun SharedTransitionScope.StandardToolbarLayout(
                ),
        )

        // Text feedback chip / build number
        ToolbarTextFeedback(
            viewModelFactory = viewModel.textFeedbackContentViewModelFactory,
            buildNumberViewModelFactory = viewModel.buildNumberViewModelFactory,
            modifier = Modifier.weight(1f),
        )
    }
}

@Composable
private fun ToolbarTextFeedback(
    viewModelFactory: TextFeedbackContentViewModel.Factory,
    buildNumberViewModelFactory: BuildNumberViewModel.Factory,
    modifier: Modifier,
) {
    Box(modifier = modifier) {
        val context = LocalContext.current
        val textFeedbackViewModel =
        val viewModel =
            rememberViewModel("Toolbar.TextFeedbackViewModel", context) {
                viewModel.textFeedbackContentViewModelFactory.create(context)
                viewModelFactory.create(context)
            }

        Box(modifier = Modifier.weight(1f)) {
            val hasTextFeedback =
                textFeedbackViewModel.textFeedback !is TextFeedbackViewModel.NoFeedback
        val hasTextFeedback = viewModel.textFeedback !is TextFeedbackViewModel.NoFeedback

        Crossfade(
            targetState = hasTextFeedback,
@@ -135,19 +148,9 @@ private fun SharedTransitionScope.StandardToolbarLayout(
            label = "Toolbar.ShowTextFeedback",
        ) { showTextFeedback ->
            if (showTextFeedback) {
                    TextFeedback(textFeedbackViewModel.textFeedback, Modifier.wrapContentSize())
                TextFeedback(model = viewModel.textFeedback)
            } else {
                    BuildNumber(
                        viewModelFactory = viewModel.buildNumberViewModelFactory,
                        textColor = MaterialTheme.colorScheme.onSurface,
                        modifier =
                            Modifier.borderOnFocus(
                                    color = MaterialTheme.colorScheme.secondary,
                                    cornerSize = CornerSize(1.dp),
                                )
                                .wrapContentSize(),
                    )
                }
                BuildNumber(viewModelFactory = buildNumberViewModelFactory)
            }
        }
    }