From 4b9583bfc1170eae32cadf0ab6fef7636f87ff09 Mon Sep 17 00:00:00 2001 From: Xaver Date: Thu, 21 Nov 2024 14:55:46 +0100 Subject: [PATCH] adding random tasks now working --- app/build.gradle.kts | 4 +- .../demonstrator2/data/db/TaskDatabase.kt | 2 +- .../xaxa/demonstrator2/data/db/TaskEntity.kt | 2 +- .../demonstrator2/ui/DemoDetailsViewModel.kt | 6 +- .../java/at/xaxa/demonstrator2/ui/DemoUI.kt | 55 ++++++++++++++++++- gradle/libs.versions.toml | 4 -- 6 files changed, 59 insertions(+), 14 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8f29543..e90e3fa 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -51,8 +51,8 @@ android { } dependencies { - implementation (libs.androidx.room.runtime) - ksp (libs.androidx.room.compiler) + implementation ("androidx.room:room-runtime:2.5.0") + ksp ("androidx.room:room-compiler:2.6.1") implementation(libs.androidx.navigation.compose) implementation(libs.androidx.material) diff --git a/app/src/main/java/at/xaxa/demonstrator2/data/db/TaskDatabase.kt b/app/src/main/java/at/xaxa/demonstrator2/data/db/TaskDatabase.kt index 1b1eabd..b01e9e0 100644 --- a/app/src/main/java/at/xaxa/demonstrator2/data/db/TaskDatabase.kt +++ b/app/src/main/java/at/xaxa/demonstrator2/data/db/TaskDatabase.kt @@ -5,7 +5,7 @@ import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase -@Database(entities = [TaskEntity::class], version = 1) +@Database(entities = [TaskEntity::class], version = 2) abstract class TaskDatabase : RoomDatabase() { abstract fun TaskDao(): TaskDao diff --git a/app/src/main/java/at/xaxa/demonstrator2/data/db/TaskEntity.kt b/app/src/main/java/at/xaxa/demonstrator2/data/db/TaskEntity.kt index a42b11f..d6a2e8e 100644 --- a/app/src/main/java/at/xaxa/demonstrator2/data/db/TaskEntity.kt +++ b/app/src/main/java/at/xaxa/demonstrator2/data/db/TaskEntity.kt @@ -5,7 +5,7 @@ import androidx.room.PrimaryKey @Entity(tableName = "tasks") data class TaskEntity( - @PrimaryKey + @PrimaryKey(autoGenerate = true) val _id: Int = 0, val name :String, val details: String = "empty" diff --git a/app/src/main/java/at/xaxa/demonstrator2/ui/DemoDetailsViewModel.kt b/app/src/main/java/at/xaxa/demonstrator2/ui/DemoDetailsViewModel.kt index 9a0d00f..4ade98e 100644 --- a/app/src/main/java/at/xaxa/demonstrator2/ui/DemoDetailsViewModel.kt +++ b/app/src/main/java/at/xaxa/demonstrator2/ui/DemoDetailsViewModel.kt @@ -20,15 +20,15 @@ class DemoDetailsViewModel(savedStateHandle: SavedStateHandle, private val taskR private val taskId: Int = checkNotNull(savedStateHandle["taskId"]) - private val _detailUiState = MutableStateFlow(TaskDetailUi()) - val detailUiState = _detailUiState.asStateFlow() + private val _taskUiState = MutableStateFlow(TaskDetailUi()) + val taskUiState = _taskUiState.asStateFlow() init { viewModelScope.launch { val task = withContext(Dispatchers.IO) { taskRepository.getTaskById(taskId) } - _detailUiState.update { + _taskUiState.update { TaskDetailUi(task) } } diff --git a/app/src/main/java/at/xaxa/demonstrator2/ui/DemoUI.kt b/app/src/main/java/at/xaxa/demonstrator2/ui/DemoUI.kt index d9cff98..8ee428c 100644 --- a/app/src/main/java/at/xaxa/demonstrator2/ui/DemoUI.kt +++ b/app/src/main/java/at/xaxa/demonstrator2/ui/DemoUI.kt @@ -1,5 +1,6 @@ package at.xaxa.demonstrator2.ui +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -14,14 +15,20 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.List import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.outlined.Edit +import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.NavigationBarItem +import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedCard +import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable 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.tooling.preview.Preview @@ -34,6 +41,7 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument +import androidx.room.util.TableInfo import at.xaxa.demonstrator2.data.Task import at.xaxa.demonstrator2.ui.edit.TaskEditScreen import at.xaxa.demonstrator2.ui.theme.Typography @@ -126,7 +134,7 @@ fun ListScreen( @Composable fun TaskDetailsScreen(modifier: Modifier = Modifier, demoDetailsViewModel: DemoDetailsViewModel = viewModel(factory = AppViewModelProvider.Factory)) { - val detailUiState by demoDetailsViewModel.detailUiState.collectAsStateWithLifecycle() + val detailUiState by demoDetailsViewModel.taskUiState.collectAsStateWithLifecycle() TaskDetails(detailUiState.task, modifier) } @@ -148,9 +156,50 @@ fun TaskDetails(task: Task, modifier: Modifier = Modifier) { } @Composable -fun AddScreen() { - Box(Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { +fun AddScreen( + //task: Task, + modifier: Modifier = Modifier, + demoViewModel: DemoViewModel = viewModel(factory = AppViewModelProvider.Factory), + ) { + var taskText by remember { mutableStateOf("") } + var descText by remember { mutableStateOf("") } + val state by demoViewModel.taskUiState.collectAsStateWithLifecycle() + + Column(Modifier.fillMaxSize().padding(8.dp)) { Text("Add Screen") + OutlinedTextField( + value = taskText, + modifier = Modifier.fillMaxWidth(), + label = { Text("Task") }, + onValueChange = { + taskText = it + }, + ) + OutlinedTextField( + value = descText, + modifier = Modifier.fillMaxWidth(), + label = { Text("Description") }, + onValueChange = { + descText = it + } + ) + Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(4.dp)) { + OutlinedButton( + modifier = Modifier.fillMaxWidth(0.5f), + onClick = { + taskText = "" + descText = "" + }) { + Text("Reset") + } + FilledTonalButton( + modifier = Modifier.fillMaxWidth(), + onClick = { + demoViewModel.onAddButtonClicked(Task{0, "", ""}) + }) { + Text("Save") + } + } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c30757c..9b0be02 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,17 +16,13 @@ material3 = "1.2.0" navigationCompose = "2.8.4" navigationComposeVersion = "2.7.2" roomCommon = "2.6.1" -roomCompiler = "2.6.1" roomKtx = "2.6.1" -roomRuntime = "2.5.0" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-material = { module = "androidx.compose.material:material", version.ref = "material" } androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" } androidx-navigation-compose-v272 = { module = "androidx.navigation:navigation-compose", version.ref = "navigationComposeVersion" } -androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "roomCompiler" } -androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "roomRuntime" } converter-kotlinx-serialization = { module = "com.squareup.retrofit2:converter-kotlinx-serialization", version.ref = "converterKotlinxSerialization" } junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }