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

Commit 61bd9c33 authored by yyalan's avatar yyalan
Browse files

Fix broken "View Recent Apps" visd

Bug: 381263240
Flag: NONE bug fix
Test: screenshots in comment
Change-Id: Iea4dac76c9a81de427ea8d5f7bd70644cac13e1e
parent 6988e7a4
Loading
Loading
Loading
Loading
+41 −19
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.width
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.Text
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.getValue
@@ -45,11 +46,13 @@ import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.dp
import com.android.compose.windowsizeclass.LocalWindowSizeClass
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.Error
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.Error
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.Finished
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.Finished
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.InProgress
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.InProgress
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.InProgressAfterError
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.InProgressAfterError
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.NotStarted
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.NotStarted
import com.android.systemui.keyboard.shortcut.ui.composable.hasCompactWindowSize


sealed interface TutorialActionState {
sealed interface TutorialActionState {
    data object NotStarted : TutorialActionState
    data object NotStarted : TutorialActionState
@@ -82,18 +85,25 @@ fun ActionTutorialContent(
) {
) {
    Column(
    Column(
        verticalArrangement = Arrangement.Center,
        verticalArrangement = Arrangement.Center,
        modifier =
        modifier = Modifier.fillMaxSize().background(config.colors.background).safeDrawingPadding(),
            Modifier.fillMaxSize()
                .background(config.colors.background)
                .safeDrawingPadding()
                .padding(start = 48.dp, top = 100.dp, end = 48.dp, bottom = 8.dp),
    ) {
    ) {
        val isCompactWindow = hasCompactWindowSize()
        when (LocalConfiguration.current.orientation) {
        when (LocalConfiguration.current.orientation) {
            Configuration.ORIENTATION_LANDSCAPE -> {
            Configuration.ORIENTATION_LANDSCAPE -> {
                HorizontalDescriptionAndAnimation(actionState, config, Modifier.weight(1f))
                HorizontalDescriptionAndAnimation(
                    actionState,
                    config,
                    isCompactWindow,
                    Modifier.weight(1f),
                )
            }
            }
            else -> {
            else -> {
                VerticalDescriptionAndAnimation(actionState, config, Modifier.weight(1f))
                VerticalDescriptionAndAnimation(
                    actionState,
                    config,
                    isCompactWindow,
                    Modifier.weight(1f),
                )
            }
            }
        }
        }
        val buttonAlpha by animateFloatAsState(if (actionState is Finished) 1f else 0f)
        val buttonAlpha by animateFloatAsState(if (actionState is Finished) 1f else 0f)
@@ -109,11 +119,15 @@ fun ActionTutorialContent(
private fun HorizontalDescriptionAndAnimation(
private fun HorizontalDescriptionAndAnimation(
    actionState: TutorialActionState,
    actionState: TutorialActionState,
    config: TutorialScreenConfig,
    config: TutorialScreenConfig,
    isCompactWindow: Boolean,
    modifier: Modifier = Modifier,
    modifier: Modifier = Modifier,
) {
) {
    Row(modifier = modifier.fillMaxWidth()) {
    Row(
        TutorialDescription(actionState, config, modifier = Modifier.weight(1f))
        modifier =
        Spacer(modifier = Modifier.width(70.dp))
            modifier.fillMaxWidth().padding(start = 48.dp, top = 100.dp, end = 48.dp, bottom = 8.dp)
    ) {
        TutorialDescription(actionState, config, isCompactWindow, modifier = Modifier.weight(1f))
        Spacer(modifier = Modifier.width(24.dp))
        TutorialAnimation(actionState, config, modifier = Modifier.weight(1f))
        TutorialAnimation(actionState, config, modifier = Modifier.weight(1f))
    }
    }
}
}
@@ -122,20 +136,25 @@ private fun HorizontalDescriptionAndAnimation(
private fun VerticalDescriptionAndAnimation(
private fun VerticalDescriptionAndAnimation(
    actionState: TutorialActionState,
    actionState: TutorialActionState,
    config: TutorialScreenConfig,
    config: TutorialScreenConfig,
    isCompactWindow: Boolean,
    modifier: Modifier = Modifier,
    modifier: Modifier = Modifier,
) {
) {
    Column(modifier = modifier.fillMaxWidth().padding(horizontal = 40.dp, vertical = 40.dp)) {
    val horizontalPadding = if (isCompactWindow) 24.dp else 96.dp
        Spacer(modifier = Modifier.weight(0.1f))
    // Represents the majority of tablets in portrait - we need extra spacer at the top and bottom
    val isTablet = LocalWindowSizeClass.current.heightSizeClass == WindowHeightSizeClass.Expanded
    Column(
        modifier =
            modifier.fillMaxWidth().padding(start = 0.dp, top = 100.dp, end = 0.dp, bottom = 8.dp)
    ) {
        if (isTablet) Spacer(modifier = Modifier.weight(0.3f))
        TutorialDescription(
        TutorialDescription(
            actionState,
            actionState,
            config,
            config,
            modifier =
            isCompactWindow,
                Modifier.weight(0.2f)
            modifier = Modifier.weight(1f).padding(horizontal = horizontalPadding),
                    // extra padding to better align with animation which has embedded padding
                    .padding(horizontal = 15.dp),
        )
        )
        Spacer(modifier = Modifier.width(70.dp))
        TutorialAnimation(actionState, config, modifier = Modifier.weight(1.8f).fillMaxWidth())
        TutorialAnimation(actionState, config, modifier = Modifier.weight(1f))
        if (isTablet) Spacer(modifier = Modifier.weight(0.3f))
    }
    }
}
}


@@ -143,6 +162,7 @@ private fun VerticalDescriptionAndAnimation(
fun TutorialDescription(
fun TutorialDescription(
    actionState: TutorialActionState,
    actionState: TutorialActionState,
    config: TutorialScreenConfig,
    config: TutorialScreenConfig,
    isCompactWindow: Boolean,
    modifier: Modifier = Modifier,
    modifier: Modifier = Modifier,
) {
) {
    val focusRequester = remember { FocusRequester() }
    val focusRequester = remember { FocusRequester() }
@@ -159,7 +179,9 @@ fun TutorialDescription(
    Column(verticalArrangement = Arrangement.Top, modifier = modifier) {
    Column(verticalArrangement = Arrangement.Top, modifier = modifier) {
        Text(
        Text(
            text = stringResource(id = titleTextId),
            text = stringResource(id = titleTextId),
            style = MaterialTheme.typography.displayLarge,
            style =
                if (isCompactWindow) MaterialTheme.typography.headlineLarge
                else MaterialTheme.typography.displayMedium,
            color = config.colors.title,
            color = config.colors.title,
            modifier = Modifier.focusRequester(focusRequester).focusable(),
            modifier = Modifier.focusRequester(focusRequester).focusable(),
        )
        )