changed file structure, improved date picker

This commit is contained in:
Xaver 2025-01-15 20:56:04 +01:00
parent 4dbeeda782
commit 9f6fcc13d0
8 changed files with 32 additions and 23 deletions

View File

@ -5,9 +5,9 @@ import androidx.lifecycle.createSavedStateHandle
import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory import androidx.lifecycle.viewmodel.viewModelFactory
import at.xaxa.ledger.LedgerApplication 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.category.CategoryViewModel
import at.xaxa.ledger.ui.edit.EditViewModel import at.xaxa.ledger.ui.entry.edit.EditViewModel
import at.xaxa.ledger.ui.home.HomeViewModel import at.xaxa.ledger.ui.home.HomeViewModel

View File

@ -11,11 +11,11 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument 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.CategoryOverview
import at.xaxa.ledger.ui.category.add.AddCategory import at.xaxa.ledger.ui.category.add.AddCategory
import at.xaxa.ledger.ui.category.edit.EditCategory 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 import at.xaxa.ledger.ui.home.Home
enum class AppRoutes(val route: String) { enum class AppRoutes(val route: String) {

View File

@ -34,7 +34,9 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TextButton import androidx.compose.material3.TextButton
import androidx.compose.material3.rememberDatePickerState import androidx.compose.material3.rememberDatePickerState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableLongStateOf
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
@ -337,27 +339,31 @@ private fun CustomButton(modifier: Modifier = Modifier, text: String, onClick: (
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @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 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) // Initialize datePickerState with the provided date (if not -1)
val datePickerState = rememberDatePickerState( val datePickerState = rememberDatePickerState(
initialSelectedDateMillis = System.currentTimeMillis() initialSelectedDateMillis = selectedDateMillis
) )
// Convert the selected date to a readable format // Convert the selected date to a readable format
val selectedDate = datePickerState.selectedDateMillis?.let { val selectedDate = selectedDateMillis.let {
convertMillisToDate(it) convertMillisToDate(it)
} ?: "" }
Box( Box(
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
OutlinedTextField( OutlinedTextField(
value = entry?.date?.let { convertMillisToDate(it) }.toString() , value = selectedDate,
onValueChange = { onValueChange = {},
entry?.copy(date = selectedDate.toLong())
},
label = { Text("Date") }, label = { Text("Date") },
readOnly = true, readOnly = true,
trailingIcon = { trailingIcon = {
@ -368,8 +374,7 @@ fun DatePickerDocked(entry: Entry? = null, onDateSelected: (Long) -> Unit) {
) )
} }
}, },
modifier = Modifier modifier = Modifier.fillMaxWidth()
.fillMaxWidth()
) )
if (showDatePicker) { if (showDatePicker) {
@ -379,8 +384,9 @@ fun DatePickerDocked(entry: Entry? = null, onDateSelected: (Long) -> Unit) {
TextButton( TextButton(
onClick = { onClick = {
showDatePicker = false showDatePicker = false
// Notify the parent about the selected date // Update the selected date
datePickerState.selectedDateMillis?.let { millis -> datePickerState.selectedDateMillis?.let { millis ->
selectedDateMillis = millis
onDateSelected(millis) onDateSelected(millis)
} }
} }

View File

@ -26,7 +26,7 @@ import at.xaxa.ledger.ui.AppViewModelProvider
import at.xaxa.ledger.ui.ButtonDanger import at.xaxa.ledger.ui.ButtonDanger
import at.xaxa.ledger.ui.ButtonSuccess import at.xaxa.ledger.ui.ButtonSuccess
import at.xaxa.ledger.ui.DatePickerDocked import at.xaxa.ledger.ui.DatePickerDocked
import at.xaxa.ledger.ui.edit.EditViewModel import at.xaxa.ledger.ui.entry.edit.EditViewModel
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)

View File

@ -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.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column

View File

@ -1,4 +1,4 @@
package at.xaxa.ledger.ui.add package at.xaxa.ledger.ui.entry.add
import android.os.Debug import android.os.Debug
import android.util.Log import android.util.Log

View File

@ -1,4 +1,4 @@
package at.xaxa.ledger.ui.edit package at.xaxa.ledger.ui.entry.edit
import android.util.Log import android.util.Log
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -113,7 +113,10 @@ fun Edit(modifier: Modifier = Modifier, onCardClick: () -> Unit, editViewModel :
.fillMaxWidth() .fillMaxWidth()
.padding(bottom = 8.dp), .padding(bottom = 8.dp),
text = "Delete", text = "Delete",
onClick = { onCardClick() } onClick = {
editViewModel.deleteEntry()
onCardClick()
}
) )
ButtonSuccess( ButtonSuccess(
modifier = Modifier.fillMaxWidth(), // Add spacing between buttons modifier = Modifier.fillMaxWidth(), // Add spacing between buttons

View File

@ -1,4 +1,4 @@
package at.xaxa.ledger.ui.edit package at.xaxa.ledger.ui.entry.edit
import android.util.Log import android.util.Log
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@ -52,9 +52,9 @@ class EditViewModel(private val savedStateHandle: SavedStateHandle,
fun updateEntry(entry: Entry) { fun updateEntry(entry: Entry) {
editUiState = editUiState.copy(entry=entry) editUiState = editUiState.copy(entry=entry)
} }
fun onDeleteEntry(entry: Entry) { fun deleteEntry() {
viewModelScope.launch { viewModelScope.launch {
entryRepository.deleteEntry(entry) entryRepository.deleteEntry(entryRepository.findEntryById(entryId))
} }
} }
fun saveEntry() { fun saveEntry() {