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.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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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() {
|
Loading…
Reference in New Issue
Block a user