diff --git a/shared/src/commonMain/composeResources/values-cs/strings.xml b/shared/src/commonMain/composeResources/values-cs/strings.xml index 65b3ae2c..12dc4959 100644 --- a/shared/src/commonMain/composeResources/values-cs/strings.xml +++ b/shared/src/commonMain/composeResources/values-cs/strings.xml @@ -30,6 +30,7 @@ Obrazovka Hardware Senzory + Informace Procesy Aplikace diff --git a/shared/src/commonMain/composeResources/values-de/strings.xml b/shared/src/commonMain/composeResources/values-de/strings.xml index 44ba530d..efd36123 100644 --- a/shared/src/commonMain/composeResources/values-de/strings.xml +++ b/shared/src/commonMain/composeResources/values-de/strings.xml @@ -30,6 +30,7 @@ Bildschirm Hardware Sensoren + Informationen Prozesse Anwendungen diff --git a/shared/src/commonMain/composeResources/values-pl/strings.xml b/shared/src/commonMain/composeResources/values-pl/strings.xml index 66c66ccf..20d1eddb 100644 --- a/shared/src/commonMain/composeResources/values-pl/strings.xml +++ b/shared/src/commonMain/composeResources/values-pl/strings.xml @@ -31,6 +31,7 @@ Ekran Sprzęt Sensory + Informacje Procesy Aplikacje diff --git a/shared/src/commonMain/composeResources/values/strings.xml b/shared/src/commonMain/composeResources/values/strings.xml index 2f7798e4..c30d2df5 100644 --- a/shared/src/commonMain/composeResources/values/strings.xml +++ b/shared/src/commonMain/composeResources/values/strings.xml @@ -26,6 +26,7 @@ ID VRAM EDID + Menu CPU @@ -36,6 +37,7 @@ OS Hardware Sensors + Information Processes Applications diff --git a/wearOsApp/src/androidMain/kotlin/com/kgurgul/cpuinfo/wear/features/WearHostScreen.kt b/wearOsApp/src/androidMain/kotlin/com/kgurgul/cpuinfo/wear/features/WearHostScreen.kt index 0d64d01a..79e5889e 100644 --- a/wearOsApp/src/androidMain/kotlin/com/kgurgul/cpuinfo/wear/features/WearHostScreen.kt +++ b/wearOsApp/src/androidMain/kotlin/com/kgurgul/cpuinfo/wear/features/WearHostScreen.kt @@ -2,13 +2,9 @@ package com.kgurgul.cpuinfo.wear.features -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Build import androidx.compose.runtime.Composable @@ -16,12 +12,10 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextAlign -import androidx.wear.compose.foundation.rememberActiveFocusRequester -import androidx.wear.compose.foundation.rotary.RotaryScrollableDefaults.behavior -import androidx.wear.compose.foundation.rotary.rotaryScrollable +import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.Icon import androidx.wear.compose.material.MaterialTheme import androidx.wear.compose.material.Text import androidx.wear.compose.material.TitleCard @@ -41,20 +35,26 @@ import com.google.android.horologist.compose.material.Button import com.google.android.horologist.compose.material.Chip import com.google.android.horologist.compose.material.ListHeaderDefaults.firstItemPadding import com.google.android.horologist.compose.material.ResponsiveListHeader -import com.kgurgul.cpuinfo.wear.R +import com.kgurgul.cpuinfo.shared.Res +import com.kgurgul.cpuinfo.shared.ic_cpu +import com.kgurgul.cpuinfo.shared.information +import com.kgurgul.cpuinfo.shared.menu import com.kgurgul.cpuinfo.wear.theme.WearAppTheme +import org.jetbrains.compose.resources.painterResource +import org.jetbrains.compose.resources.stringResource @Composable fun WearHostScreen() { val navController = rememberSwipeDismissableNavController() - WearAppTheme { AppScaffold { - SwipeDismissableNavHost(navController = navController, startDestination = "menu") { - composable("menu") { - GreetingScreen( - "Android", - onShowList = { navController.navigate("list") } + SwipeDismissableNavHost( + navController = navController, + startDestination = WearHostScreen.Menu.route, + ) { + composable(WearHostScreen.Menu.route) { + MenuScreen( + onInformationClicked = { navController.navigate("list") } ) } composable("list") { @@ -66,35 +66,53 @@ fun WearHostScreen() { } @Composable -fun GreetingScreen(greetingName: String, onShowList: () -> Unit) { +fun MenuScreen( + onInformationClicked: () -> Unit, +) { val scrollState = rememberScrollState() - - /* If you have enough items in your list, use [ScalingLazyColumn] which is an optimized - * version of LazyColumn for wear devices with some added features. For more information, - * see d.android.com/wear/compose. - */ - ScreenScaffold(scrollState = scrollState) { - val padding = ScalingLazyColumnDefaults.padding( + val columnState = rememberResponsiveColumnState( + contentPadding = ScalingLazyColumnDefaults.padding( first = ItemType.Text, - last = ItemType.Chip - )() - Column( - modifier = Modifier - .fillMaxSize() - .verticalScroll(scrollState) - .rotaryScrollable( - behavior(scrollableState = scrollState), - focusRequester = rememberActiveFocusRequester() - ) - .padding(padding), - verticalArrangement = Arrangement.Center + last = ItemType.Chip, + ) + ) + ScreenScaffold( + scrollState = scrollState + ) { + ScalingLazyColumn( + columnState = columnState, ) { - Greeting(greetingName = greetingName) - Chip(label = "Show List", onClick = onShowList) + item { + ResponsiveListHeader(contentPadding = firstItemPadding()) { + Text( + text = stringResource(Res.string.menu), + color = MaterialTheme.colors.onBackground, + ) + } + } + item { + Chip( + label = stringResource(Res.string.information), + icon = { + Icon( + painter = painterResource(Res.drawable.ic_cpu), + contentDescription = null, + modifier = Modifier + .size(ChipDefaults.IconSize) + .wrapContentSize(align = Alignment.Center), + ) + }, + onClick = onInformationClicked, + ) + } } } } +sealed class WearHostScreen(val route: String) { + data object Menu : WearHostScreen("menu") +} + @Composable fun ListScreen() { var showDialog by remember { mutableStateOf(false) } @@ -150,18 +168,6 @@ fun ListScreen() { ) } -@Composable -fun Greeting(greetingName: String) { - ResponsiveListHeader(contentPadding = firstItemPadding()) { - Text( - modifier = Modifier.fillMaxWidth(), - textAlign = TextAlign.Center, - color = MaterialTheme.colors.primary, - text = stringResource(R.string.app_name, greetingName) - ) - } -} - @Composable fun SampleDialog( showDialog: Boolean,