diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5a63f3c..13a49f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + + Column { NavHost( navController = navController, - startDestination = Screens.Camera.name, + startDestination = Screen.Camera.name, modifier = Modifier.padding(innerPadding) ) { - composable(route = Screens.Camera.name) { + composable(route = Screen.Camera.name) { CameraScreen() } - composable(route = Screens.Remote.name) { + composable(route = Screen.Remote.name) { RemoteScreen() } - composable(route = Screens.Settings.name) { + composable(route = Screen.Settings.name) { SettingsScreen() } } @@ -106,15 +115,39 @@ fun TvControllerApp( @Composable fun CameraScreen(modifier: Modifier = Modifier) { - Text(text = "Camera Screen", modifier = modifier) + Column( + modifier = modifier + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Text(text = "Camera Screen", modifier = modifier) + } } @Composable fun RemoteScreen(modifier: Modifier = Modifier) { - Text(text = "Remote Screen", modifier = modifier) + Column( + modifier = modifier + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Text(text = "Remote Screen", modifier = modifier) + Button(onClick = { Log.i(TAG, "RemoteScreen: Button clicked") }) { + Text(text = "Button") + } + } } @Composable fun SettingsScreen(modifier: Modifier = Modifier) { - Text(text = "Settings Screen", modifier = modifier) + Column( + modifier = modifier + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Text(text = "Settings Screen", modifier = modifier) + } } diff --git a/app/src/main/java/com/example/tvcontroller/Screens.kt b/app/src/main/java/com/example/tvcontroller/Screen.kt similarity index 76% rename from app/src/main/java/com/example/tvcontroller/Screens.kt rename to app/src/main/java/com/example/tvcontroller/Screen.kt index c466f07..1d60d63 100644 --- a/app/src/main/java/com/example/tvcontroller/Screens.kt +++ b/app/src/main/java/com/example/tvcontroller/Screen.kt @@ -1,7 +1,7 @@ package com.example.tvcontroller -enum class Screens { +enum class Screen { Camera, Remote, Settings -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/tvcontroller/ui/AppUiState.kt b/app/src/main/java/com/example/tvcontroller/ui/AppUiState.kt new file mode 100644 index 0000000..722d8f5 --- /dev/null +++ b/app/src/main/java/com/example/tvcontroller/ui/AppUiState.kt @@ -0,0 +1,7 @@ +package com.example.tvcontroller.ui + +import com.example.tvcontroller.Screen + +data class AppUiState( + val currentScreen: Screen = Screen.Camera, +) \ No newline at end of file diff --git a/app/src/main/java/com/example/tvcontroller/ui/AppViewModel.kt b/app/src/main/java/com/example/tvcontroller/ui/AppViewModel.kt new file mode 100644 index 0000000..084426e --- /dev/null +++ b/app/src/main/java/com/example/tvcontroller/ui/AppViewModel.kt @@ -0,0 +1,19 @@ +package com.example.tvcontroller.ui + +import androidx.lifecycle.ViewModel +import com.example.tvcontroller.Screen +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.update + +class AppViewModel : ViewModel() { + private val _uiState = MutableStateFlow(AppUiState()) + val uiState: StateFlow = _uiState.asStateFlow() + + fun updateScreen(screen: Screen) { + if (uiState.value.currentScreen == screen) return + val newUiState = uiState.value.copy(currentScreen = screen) + _uiState.update { newUiState } + } +} \ No newline at end of file