Loading packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionKeyTutorialScreen.kt +2 −6 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ fun ActionKeyTutorialScreen(onDoneButtonClicked: () -> Unit, onBack: () -> Unit) Modifier.fillMaxSize() .onKeyEvent { keyEvent: KeyEvent -> if (keyEvent.key == Key.MetaLeft && keyEvent.type == KeyEventType.KeyUp) { actionState = Finished actionState = Finished(R.raw.action_key_success) } true } Loading Loading @@ -80,11 +80,7 @@ private fun buildScreenConfig() = titleSuccessResId = R.string.tutorial_action_key_success_title, bodySuccessResId = R.string.tutorial_action_key_success_body, ), animations = TutorialScreenConfig.Animations( educationResId = R.raw.action_key_edu, successResId = R.raw.action_key_success, ), animations = TutorialScreenConfig.Animations(educationResId = R.raw.action_key_edu), ) @Composable Loading packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt +5 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.inputdevice.tutorial.ui.composable import androidx.annotation.RawRes import androidx.annotation.StringRes import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn Loading Loading @@ -48,7 +49,7 @@ sealed interface TutorialActionState { val endMarker: String? = null, ) : TutorialActionState data object Finished : TutorialActionState data class Finished(@RawRes val successAnimation: Int) : TutorialActionState } @Composable Loading @@ -68,11 +69,11 @@ fun ActionTutorialContent( Row(modifier = Modifier.fillMaxWidth().weight(1f)) { TutorialDescription( titleTextId = if (actionState == Finished) config.strings.titleSuccessResId if (actionState is Finished) config.strings.titleSuccessResId else config.strings.titleResId, titleColor = config.colors.title, bodyTextId = if (actionState == Finished) config.strings.bodySuccessResId if (actionState is Finished) config.strings.bodySuccessResId else config.strings.bodyResId, modifier = Modifier.weight(1f), ) Loading @@ -83,7 +84,7 @@ fun ActionTutorialContent( modifier = Modifier.weight(1f).padding(top = 8.dp), ) } AnimatedVisibility(visible = actionState == Finished, enter = fadeIn()) { AnimatedVisibility(visible = actionState is Finished, enter = fadeIn()) { DoneButton(onDoneButtonClicked = onDoneButtonClicked) } } Loading packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialAnimation.kt +6 −3 Original line number Diff line number Diff line Loading @@ -77,7 +77,9 @@ fun TutorialAnimation( config.colors.animationColors, ) Finished::class -> SuccessAnimation(config.animations.successResId, config.colors.animationColors) // Below cast is safe as Finished state is the last state and afterwards we can // only leave the screen so this composable would be no longer displayed SuccessAnimation(actionState as Finished, config.colors.animationColors) } } } Loading @@ -100,10 +102,11 @@ private fun EducationAnimation( @Composable private fun SuccessAnimation( @RawRes successAnimationId: Int, finishedState: Finished, animationProperties: LottieDynamicProperties, ) { val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(successAnimationId)) val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(finishedState.successAnimation)) val progress by animateLottieCompositionAsState(composition, iterations = 1) LottieAnimation( composition = composition, Loading packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt +3 −6 Original line number Diff line number Diff line Loading @@ -24,13 +24,13 @@ import com.airbnb.lottie.compose.LottieDynamicProperties data class TutorialScreenConfig( val colors: Colors, val strings: Strings, val animations: Animations val animations: Animations, ) { data class Colors( val background: Color, val title: Color, val animationColors: LottieDynamicProperties val animationColors: LottieDynamicProperties, ) data class Strings( Loading @@ -40,8 +40,5 @@ data class TutorialScreenConfig( @StringRes val bodySuccessResId: Int, ) data class Animations( @RawRes val educationResId: Int, @RawRes val successResId: Int, ) data class Animations(@RawRes val educationResId: Int) } packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt +1 −5 Original line number Diff line number Diff line Loading @@ -44,11 +44,7 @@ fun BackGestureTutorialScreen(onDoneButtonClicked: () -> Unit, onBack: () -> Uni titleSuccessResId = R.string.touchpad_back_gesture_success_title, bodySuccessResId = R.string.touchpad_back_gesture_success_body, ), animations = TutorialScreenConfig.Animations( educationResId = R.raw.trackpad_back_edu, successResId = R.raw.trackpad_back_success, ), animations = TutorialScreenConfig.Animations(educationResId = R.raw.trackpad_back_edu), ) val recognizer = rememberBackGestureRecognizer(LocalContext.current.resources) val gestureUiState: Flow<GestureUiState> = Loading Loading
packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionKeyTutorialScreen.kt +2 −6 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ fun ActionKeyTutorialScreen(onDoneButtonClicked: () -> Unit, onBack: () -> Unit) Modifier.fillMaxSize() .onKeyEvent { keyEvent: KeyEvent -> if (keyEvent.key == Key.MetaLeft && keyEvent.type == KeyEventType.KeyUp) { actionState = Finished actionState = Finished(R.raw.action_key_success) } true } Loading Loading @@ -80,11 +80,7 @@ private fun buildScreenConfig() = titleSuccessResId = R.string.tutorial_action_key_success_title, bodySuccessResId = R.string.tutorial_action_key_success_body, ), animations = TutorialScreenConfig.Animations( educationResId = R.raw.action_key_edu, successResId = R.raw.action_key_success, ), animations = TutorialScreenConfig.Animations(educationResId = R.raw.action_key_edu), ) @Composable Loading
packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt +5 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.inputdevice.tutorial.ui.composable import androidx.annotation.RawRes import androidx.annotation.StringRes import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn Loading Loading @@ -48,7 +49,7 @@ sealed interface TutorialActionState { val endMarker: String? = null, ) : TutorialActionState data object Finished : TutorialActionState data class Finished(@RawRes val successAnimation: Int) : TutorialActionState } @Composable Loading @@ -68,11 +69,11 @@ fun ActionTutorialContent( Row(modifier = Modifier.fillMaxWidth().weight(1f)) { TutorialDescription( titleTextId = if (actionState == Finished) config.strings.titleSuccessResId if (actionState is Finished) config.strings.titleSuccessResId else config.strings.titleResId, titleColor = config.colors.title, bodyTextId = if (actionState == Finished) config.strings.bodySuccessResId if (actionState is Finished) config.strings.bodySuccessResId else config.strings.bodyResId, modifier = Modifier.weight(1f), ) Loading @@ -83,7 +84,7 @@ fun ActionTutorialContent( modifier = Modifier.weight(1f).padding(top = 8.dp), ) } AnimatedVisibility(visible = actionState == Finished, enter = fadeIn()) { AnimatedVisibility(visible = actionState is Finished, enter = fadeIn()) { DoneButton(onDoneButtonClicked = onDoneButtonClicked) } } Loading
packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialAnimation.kt +6 −3 Original line number Diff line number Diff line Loading @@ -77,7 +77,9 @@ fun TutorialAnimation( config.colors.animationColors, ) Finished::class -> SuccessAnimation(config.animations.successResId, config.colors.animationColors) // Below cast is safe as Finished state is the last state and afterwards we can // only leave the screen so this composable would be no longer displayed SuccessAnimation(actionState as Finished, config.colors.animationColors) } } } Loading @@ -100,10 +102,11 @@ private fun EducationAnimation( @Composable private fun SuccessAnimation( @RawRes successAnimationId: Int, finishedState: Finished, animationProperties: LottieDynamicProperties, ) { val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(successAnimationId)) val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(finishedState.successAnimation)) val progress by animateLottieCompositionAsState(composition, iterations = 1) LottieAnimation( composition = composition, Loading
packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt +3 −6 Original line number Diff line number Diff line Loading @@ -24,13 +24,13 @@ import com.airbnb.lottie.compose.LottieDynamicProperties data class TutorialScreenConfig( val colors: Colors, val strings: Strings, val animations: Animations val animations: Animations, ) { data class Colors( val background: Color, val title: Color, val animationColors: LottieDynamicProperties val animationColors: LottieDynamicProperties, ) data class Strings( Loading @@ -40,8 +40,5 @@ data class TutorialScreenConfig( @StringRes val bodySuccessResId: Int, ) data class Animations( @RawRes val educationResId: Int, @RawRes val successResId: Int, ) data class Animations(@RawRes val educationResId: Int) }
packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt +1 −5 Original line number Diff line number Diff line Loading @@ -44,11 +44,7 @@ fun BackGestureTutorialScreen(onDoneButtonClicked: () -> Unit, onBack: () -> Uni titleSuccessResId = R.string.touchpad_back_gesture_success_title, bodySuccessResId = R.string.touchpad_back_gesture_success_body, ), animations = TutorialScreenConfig.Animations( educationResId = R.raw.trackpad_back_edu, successResId = R.raw.trackpad_back_success, ), animations = TutorialScreenConfig.Animations(educationResId = R.raw.trackpad_back_edu), ) val recognizer = rememberBackGestureRecognizer(LocalContext.current.resources) val gestureUiState: Flow<GestureUiState> = Loading