diff options
9 files changed, 56 insertions, 10 deletions
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 86292039d93d..b1f92493ccca 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -4001,6 +4001,8 @@ <string name="touchpad_tutorial_switch_apps_gesture_button">Switch apps</string> <!-- Label for button finishing touchpad tutorial [CHAR LIMIT=NONE] --> <string name="touchpad_tutorial_done_button">Done</string> + <!-- Label for button proceeding touchpad tutorial [CHAR LIMIT=NONE] --> + <string name="touchpad_tutorial_next_button">Next</string> <!-- Screen title after gesture was not done correctly [CHAR LIMIT=NONE] --> <string name="gesture_error_title">Try again!</string> <!-- BACK GESTURE --> diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt index bd3e771f40bc..7d2492a41e82 100644 --- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt @@ -20,7 +20,9 @@ import androidx.compose.runtime.Composable interface TouchpadTutorialScreensProvider { - @Composable fun BackGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit) + @Composable + fun BackGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit, isAutoProceed: Boolean) - @Composable fun HomeGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit) + @Composable + fun HomeGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit, isAutoProceed: Boolean) } diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt index 8cbcba2c3b1c..ee875c484ca6 100644 --- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt +++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt @@ -137,6 +137,7 @@ fun ActionTutorialContent( onDoneButtonClicked = onDoneButtonClicked, modifier = Modifier.padding(horizontal = 60.dp).graphicsLayer { alpha = buttonAlpha }, enabled = actionState is Finished, + isNext = config.hasNextButton, ) } } diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialComponents.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialComponents.kt index 202dba357d45..d92e48e18801 100644 --- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialComponents.kt +++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialComponents.kt @@ -32,6 +32,7 @@ fun DoneButton( onDoneButtonClicked: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, + isNext: Boolean = false, ) { Row( horizontalArrangement = Arrangement.End, @@ -39,7 +40,10 @@ fun DoneButton( modifier = modifier.fillMaxWidth(), ) { Button(onClick = onDoneButtonClicked, enabled = enabled) { - Text(stringResource(R.string.touchpad_tutorial_done_button)) + val text = + if (isNext) R.string.touchpad_tutorial_next_button + else R.string.touchpad_tutorial_done_button + Text(stringResource(text)) } } } diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt index eda23a51a1ae..65adc148b6ae 100644 --- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt +++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt @@ -28,6 +28,7 @@ data class TutorialScreenConfig( val colors: Colors, val strings: Strings, val animations: Animations, + val hasNextButton: Boolean = false, ) { data class Colors( diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt index 639e9b1805be..086705fbd7ba 100644 --- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt +++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt @@ -93,17 +93,29 @@ constructor( } } } + val entryPointExtra = intent.getStringExtra(INTENT_TUTORIAL_ENTRY_POINT_KEY) + val isAutoProceed = + if (entryPointExtra == null) true + else entryPointExtra.equals(INTENT_TUTORIAL_ENTRY_POINT_SCHEDULER) + val scopeExtra = intent.getStringExtra(INTENT_TUTORIAL_SCOPE_KEY) + val isScopeAll = INTENT_TUTORIAL_SCOPE_ALL.equals(scopeExtra) setContent { - PlatformTheme { KeyboardTouchpadTutorialContainer(vm, touchpadTutorialScreensProvider) } + PlatformTheme { + KeyboardTouchpadTutorialContainer( + vm, + touchpadTutorialScreensProvider, + isAutoProceed, + isScopeAll, + ) + } } if (savedInstanceState == null) { logger.logOpenTutorial(TutorialContext.KEYBOARD_TOUCHPAD_TUTORIAL) - val entryPointExtra = intent.getStringExtra(INTENT_TUTORIAL_ENTRY_POINT_KEY) val tutorialTypeExtra = intent.getStringExtra(INTENT_TUTORIAL_SCOPE_KEY) metricsLogger.logPeripheralTutorialLaunched(entryPointExtra, tutorialTypeExtra) // We only update launched info when the tutorial is triggered by the scheduler - if (entryPointExtra.equals(INTENT_TUTORIAL_ENTRY_POINT_SCHEDULER)) + if (INTENT_TUTORIAL_ENTRY_POINT_SCHEDULER.equals(entryPointExtra)) updateLaunchInfo(tutorialTypeExtra) } } @@ -124,17 +136,27 @@ constructor( fun KeyboardTouchpadTutorialContainer( vm: KeyboardTouchpadTutorialViewModel, touchpadScreens: Optional<TouchpadTutorialScreensProvider>, + isAutoProceed: Boolean = false, + isScopeAll: Boolean = false, ) { val activeScreen by vm.screen.collectAsStateWithLifecycle(STARTED) when (activeScreen) { BACK_GESTURE -> touchpadScreens .get() - .BackGesture(onDoneButtonClicked = vm::onDoneButtonClicked, onBack = vm::onBack) + .BackGesture( + onDoneButtonClicked = vm::onDoneButtonClicked, + onBack = vm::onBack, + isAutoProceed = isAutoProceed, + ) HOME_GESTURE -> touchpadScreens .get() - .HomeGesture(onDoneButtonClicked = vm::onDoneButtonClicked, onBack = vm::onBack) + .HomeGesture( + onDoneButtonClicked = vm::onDoneButtonClicked, + onBack = vm::onBack, + isAutoProceed = isScopeAll, + ) ACTION_KEY -> ActionKeyTutorialScreen( onDoneButtonClicked = vm::onDoneButtonClicked, diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt index a2125c8f0955..d8a9527b22ab 100644 --- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt +++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt @@ -130,22 +130,32 @@ private class ScreensProvider( val easterEggGestureViewModel: EasterEggGestureViewModel, ) : TouchpadTutorialScreensProvider { @Composable - override fun BackGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit) { + override fun BackGesture( + onDoneButtonClicked: () -> Unit, + onBack: () -> Unit, + isAutoProceed: Boolean, + ) { BackGestureTutorialScreen( backGestureScreenViewModel, easterEggGestureViewModel, onDoneButtonClicked, onBack, + isAutoProceed, ) } @Composable - override fun HomeGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit) { + override fun HomeGesture( + onDoneButtonClicked: () -> Unit, + onBack: () -> Unit, + isAutoProceed: Boolean, + ) { HomeGestureTutorialScreen( homeGestureScreenViewModel, easterEggGestureViewModel, onDoneButtonClicked, onBack, + isAutoProceed, ) } } diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt index bce55cbdcc4a..c28483c55952 100644 --- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt +++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt @@ -33,6 +33,7 @@ fun BackGestureTutorialScreen( easterEggGestureViewModel: EasterEggGestureViewModel, onDoneButtonClicked: () -> Unit, onBack: () -> Unit, + isAutoProceed: Boolean = false, ) { val screenConfig = TutorialScreenConfig( @@ -47,6 +48,7 @@ fun BackGestureTutorialScreen( bodyErrorResId = R.string.touchpad_back_gesture_error_body, ), animations = TutorialScreenConfig.Animations(educationResId = R.raw.trackpad_back_edu), + hasNextButton = isAutoProceed, ) GestureTutorialScreen( screenConfig = screenConfig, diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt index 4acdb6070200..b238a8db31f8 100644 --- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt +++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt @@ -32,6 +32,7 @@ fun HomeGestureTutorialScreen( easterEggGestureViewModel: EasterEggGestureViewModel, onDoneButtonClicked: () -> Unit, onBack: () -> Unit, + isAutoProceed: Boolean = false, ) { val screenConfig = TutorialScreenConfig( @@ -46,6 +47,7 @@ fun HomeGestureTutorialScreen( bodyErrorResId = R.string.touchpad_home_gesture_error_body, ), animations = TutorialScreenConfig.Animations(educationResId = R.raw.trackpad_home_edu), + hasNextButton = isAutoProceed, ) GestureTutorialScreen( screenConfig = screenConfig, |