From 9f6fcc13d031357e206178e67d849fb8f993df67 Mon Sep 17 00:00:00 2001 From: Xaver Date: Wed, 15 Jan 2025 20:56:04 +0100 Subject: [PATCH] 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() {