From 9f6fcc13d031357e206178e67d849fb8f993df67 Mon Sep 17 00:00:00 2001 From: Xaver Date: Wed, 15 Jan 2025 20:56:04 +0100 Subject: [PATCH 1/3] changed file structure, improved date picker --- .../at/xaxa/ledger/ui/AppViewModelProvider.kt | 4 +-- .../main/java/at/xaxa/ledger/ui/LedgerApp.kt | 4 +-- .../main/java/at/xaxa/ledger/ui/LedgerUI.kt | 28 +++++++++++-------- .../ledger/ui/category/edit/EditCategory.kt | 2 +- .../xaxa/ledger/ui/{ => entry}/add/AddUI.kt | 2 +- .../ledger/ui/{ => entry}/add/AddViewModel.kt | 2 +- .../xaxa/ledger/ui/{ => entry}/edit/EditUI.kt | 7 +++-- .../ui/{ => entry}/edit/EditViewModel.kt | 6 ++-- 8 files changed, 32 insertions(+), 23 deletions(-) rename Ledger/app/src/main/java/at/xaxa/ledger/ui/{ => entry}/add/AddUI.kt (99%) rename Ledger/app/src/main/java/at/xaxa/ledger/ui/{ => entry}/add/AddViewModel.kt (98%) rename Ledger/app/src/main/java/at/xaxa/ledger/ui/{ => entry}/edit/EditUI.kt (96%) rename Ledger/app/src/main/java/at/xaxa/ledger/ui/{ => entry}/edit/EditViewModel.kt (94%) diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt index 72b1cd7..642edac 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt @@ -5,9 +5,9 @@ import androidx.lifecycle.createSavedStateHandle import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory import at.xaxa.ledger.LedgerApplication -import at.xaxa.ledger.ui.add.AddViewModel +import at.xaxa.ledger.ui.entry.add.AddViewModel import at.xaxa.ledger.ui.category.CategoryViewModel -import at.xaxa.ledger.ui.edit.EditViewModel +import at.xaxa.ledger.ui.entry.edit.EditViewModel import at.xaxa.ledger.ui.home.HomeViewModel diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/LedgerApp.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/LedgerApp.kt index 81384f4..b21b774 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/LedgerApp.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/LedgerApp.kt @@ -11,11 +11,11 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument -import at.xaxa.ledger.ui.add.Add +import at.xaxa.ledger.ui.entry.add.Add import at.xaxa.ledger.ui.category.CategoryOverview import at.xaxa.ledger.ui.category.add.AddCategory import at.xaxa.ledger.ui.category.edit.EditCategory -import at.xaxa.ledger.ui.edit.Edit +import at.xaxa.ledger.ui.entry.edit.Edit import at.xaxa.ledger.ui.home.Home enum class AppRoutes(val route: String) { diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/LedgerUI.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/LedgerUI.kt index 95e0b84..160a009 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/LedgerUI.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/LedgerUI.kt @@ -34,7 +34,9 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.rememberDatePickerState import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -337,27 +339,31 @@ private fun CustomButton(modifier: Modifier = Modifier, text: String, onClick: ( @OptIn(ExperimentalMaterial3Api::class) @Composable -fun DatePickerDocked(entry: Entry? = null, onDateSelected: (Long) -> Unit) { +fun DatePickerDocked(entry: Entry = Entry(0, "", 0f, 0L, 0), onDateSelected: (Long) -> Unit) { var showDatePicker by remember { mutableStateOf(false) } + var selectedDateMillis by remember { mutableLongStateOf(System.currentTimeMillis()) } + + // Update selectedDateMillis when entry.date changes + LaunchedEffect(entry.date) { + selectedDateMillis = if (entry.date > 0L) entry.date else System.currentTimeMillis() + } // Initialize datePickerState with the provided date (if not -1) val datePickerState = rememberDatePickerState( - initialSelectedDateMillis = System.currentTimeMillis() + initialSelectedDateMillis = selectedDateMillis ) // Convert the selected date to a readable format - val selectedDate = datePickerState.selectedDateMillis?.let { + val selectedDate = selectedDateMillis.let { convertMillisToDate(it) - } ?: "" + } Box( modifier = Modifier.fillMaxWidth() ) { OutlinedTextField( - value = entry?.date?.let { convertMillisToDate(it) }.toString() , - onValueChange = { - entry?.copy(date = selectedDate.toLong()) - }, + value = selectedDate, + onValueChange = {}, label = { Text("Date") }, readOnly = true, trailingIcon = { @@ -368,8 +374,7 @@ fun DatePickerDocked(entry: Entry? = null, onDateSelected: (Long) -> Unit) { ) } }, - modifier = Modifier - .fillMaxWidth() + modifier = Modifier.fillMaxWidth() ) if (showDatePicker) { @@ -379,8 +384,9 @@ fun DatePickerDocked(entry: Entry? = null, onDateSelected: (Long) -> Unit) { TextButton( onClick = { showDatePicker = false - // Notify the parent about the selected date + // Update the selected date datePickerState.selectedDateMillis?.let { millis -> + selectedDateMillis = millis onDateSelected(millis) } } diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategory.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategory.kt index f948822..5f2d5ab 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategory.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategory.kt @@ -26,7 +26,7 @@ import at.xaxa.ledger.ui.AppViewModelProvider import at.xaxa.ledger.ui.ButtonDanger import at.xaxa.ledger.ui.ButtonSuccess import at.xaxa.ledger.ui.DatePickerDocked -import at.xaxa.ledger.ui.edit.EditViewModel +import at.xaxa.ledger.ui.entry.edit.EditViewModel @OptIn(ExperimentalMaterial3Api::class) diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/add/AddUI.kt similarity index 99% rename from Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt rename to Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/add/AddUI.kt index 28b3092..6025910 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/add/AddUI.kt @@ -1,4 +1,4 @@ -package at.xaxa.ledger.ui.add +package at.xaxa.ledger.ui.entry.add import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddViewModel.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/add/AddViewModel.kt similarity index 98% rename from Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddViewModel.kt rename to Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/add/AddViewModel.kt index 4079f00..5a9c1b4 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddViewModel.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/add/AddViewModel.kt @@ -1,4 +1,4 @@ -package at.xaxa.ledger.ui.add +package at.xaxa.ledger.ui.entry.add import android.os.Debug import android.util.Log diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditUI.kt similarity index 96% rename from Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt rename to Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditUI.kt index d75dbde..924231d 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditUI.kt @@ -1,4 +1,4 @@ -package at.xaxa.ledger.ui.edit +package at.xaxa.ledger.ui.entry.edit import android.util.Log import androidx.compose.foundation.layout.Column @@ -113,7 +113,10 @@ fun Edit(modifier: Modifier = Modifier, onCardClick: () -> Unit, editViewModel : .fillMaxWidth() .padding(bottom = 8.dp), text = "Delete", - onClick = { onCardClick() } + onClick = { + editViewModel.deleteEntry() + onCardClick() + } ) ButtonSuccess( modifier = Modifier.fillMaxWidth(), // Add spacing between buttons diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditViewModel.kt similarity index 94% rename from Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt rename to Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditViewModel.kt index 8c45b83..be5bb3a 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditViewModel.kt @@ -1,4 +1,4 @@ -package at.xaxa.ledger.ui.edit +package at.xaxa.ledger.ui.entry.edit import android.util.Log import androidx.compose.runtime.getValue @@ -52,9 +52,9 @@ class EditViewModel(private val savedStateHandle: SavedStateHandle, fun updateEntry(entry: Entry) { editUiState = editUiState.copy(entry=entry) } - fun onDeleteEntry(entry: Entry) { + fun deleteEntry() { viewModelScope.launch { - entryRepository.deleteEntry(entry) + entryRepository.deleteEntry(entryRepository.findEntryById(entryId)) } } fun saveEntry() { From 7ec6dc64aeeb19c69156879d87f7407ad085ef4c Mon Sep 17 00:00:00 2001 From: Xaver Date: Wed, 15 Jan 2025 21:01:49 +0100 Subject: [PATCH 2/3] random unused code --- .../app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditUI.kt | 3 +-- .../main/java/at/xaxa/ledger/ui/entry/edit/EditViewModel.kt | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditUI.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditUI.kt index 924231d..ee2bfa7 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditUI.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditUI.kt @@ -29,8 +29,7 @@ import at.xaxa.ledger.ui.DatePickerDocked @OptIn(ExperimentalMaterial3Api::class) @Composable -fun Edit(modifier: Modifier = Modifier, onCardClick: () -> Unit, editViewModel : EditViewModel = viewModel(factory = AppViewModelProvider.Factory), onValueChange: (Entry) -> Unit = {}, -) { +fun Edit(modifier: Modifier = Modifier, onCardClick: () -> Unit, editViewModel : EditViewModel = viewModel(factory = AppViewModelProvider.Factory), onValueChange: (Entry) -> Unit = {}) { val entry = editViewModel.editUiState.entry val category = editViewModel.categoryUi.category val categories by editViewModel.categoryListUiState.categories.collectAsState(initial = emptyList()) diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditViewModel.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditViewModel.kt index be5bb3a..a805287 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditViewModel.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/entry/edit/EditViewModel.kt @@ -1,6 +1,5 @@ package at.xaxa.ledger.ui.entry.edit -import android.util.Log import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue From ac7e35d54fc5d581094d7eac178a13a04f7513ce Mon Sep 17 00:00:00 2001 From: Xaver Date: Thu, 16 Jan 2025 11:05:16 +0100 Subject: [PATCH 3/3] edit category list is updating but not display the right val on load --- .../java/at/xaxa/ledger/ui/AppViewModelProvider.kt | 2 +- .../xaxa/ledger/ui/category/edit/EditCategory.kt | 14 ++++---------- .../ui/category/edit/EditCategoryViewModel.kt | 2 ++ 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt index bda62e0..f55fefe 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/AppViewModelProvider.kt @@ -8,7 +8,7 @@ import at.xaxa.ledger.LedgerApplication import at.xaxa.ledger.ui.entry.add.AddViewModel import at.xaxa.ledger.ui.category.CategoryViewModel import at.xaxa.ledger.ui.category.edit.EditCategoryViewModel -import at.xaxa.ledger.ui.edit.EditViewModel +import at.xaxa.ledger.ui.entry.edit.EditViewModel import at.xaxa.ledger.ui.home.HomeViewModel diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategory.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategory.kt index 6e4d7bd..1bec10d 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategory.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategory.kt @@ -17,6 +17,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -33,7 +34,6 @@ import at.xaxa.ledger.ui.DatePickerDocked import at.xaxa.ledger.ui.category.CategoryViewModel import at.xaxa.ledger.ui.category.iconNames import at.xaxa.ledger.ui.category.icons -import at.xaxa.ledger.ui.edit.EditViewModel @@ -47,13 +47,7 @@ fun EditCategory( var expanded by remember { mutableStateOf(false) } // Controls dropdown visibility val category = editCategoryViewModel.categoryUi.category - var selectedIconIndex = category.icon // Store index of selected icon - - Log.d( - "kkjkjkjkj", - category.categoryName) - - + var selectedIconIndex by remember { mutableIntStateOf(category.icon) } // Store index of selected icon /* val categories by categoryViewModel.categoryUiState.categories.collectAsState(initial = emptyList()) val category = categoryViewModel.categoryUi.category @@ -106,8 +100,7 @@ fun EditCategory( onClick = { selectedIconIndex = index // Update selected index - category.copy(_id = index) - editCategoryViewModel.updateCategory(category) + editCategoryViewModel.updateCategory(category.copy(icon = index)) expanded = false }, leadingIcon = { @@ -130,6 +123,7 @@ fun EditCategory( modifier = Modifier, "Edit Category", onClick = { + editCategoryViewModel.saveCategory() onButtonClick() } diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategoryViewModel.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategoryViewModel.kt index b6e898e..637050c 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategoryViewModel.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/category/edit/EditCategoryViewModel.kt @@ -44,11 +44,13 @@ class EditCategoryViewModel(private val savedStateHandle: SavedStateHandle, fun updateCategory(category: CategoryEntity) { categoryUi = categoryUi.copy(category = category) } + fun onDeleteEntry(category: CategoryEntity) { viewModelScope.launch { entryRepository.deleteCategory(category) } } + fun saveCategory() { viewModelScope.launch { entryRepository.updateCategory(categoryUi.category)