changed file structure, improved date picker
This commit is contained in:
parent
4dbeeda782
commit
9f6fcc13d0
@ -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
|
||||
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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() {
|
Loading…
Reference in New Issue
Block a user