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 db13678..1e9a419 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 @@ -5,17 +5,20 @@ import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.navigation.NavType import androidx.navigation.compose.NavHost 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.edit.Edit import at.xaxa.ledger.ui.home.Home enum class AppRoutes(val route: String) { Home("home"), Add("add"), - Edit("edit/{gameId}") + Edit("edit/{entryId}") } @Composable @@ -43,21 +46,23 @@ fun LedgerApp(modifier: Modifier = Modifier){ composable(AppRoutes.Add.route) { Add(onCardClick = { - navController.navigate("add") + navController.navigate("home") }) } - /* composable( route = AppRoutes.Edit.route, - arguments = listOf(navArgument("gameId") { + arguments = listOf(navArgument("entryId") { type = NavType.IntType }) ) { backStackEntry -> - DetailView( - modifier = Modifier + Edit( + modifier = Modifier, + onCardClick = { + navController.navigate("home") + } ) - }*/ + } } } } \ No newline at end of file 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 48535ce..93b2f82 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 @@ -266,7 +266,7 @@ private fun CustomButton(modifier: Modifier = Modifier, text: String, onClick: ( @OptIn(ExperimentalMaterial3Api::class) @Composable -fun DatePickerDocked() { +fun DatePickerDocked(onDateSelected: (Long) -> Unit) { var showDatePicker by remember { mutableStateOf(false) } val datePickerState = rememberDatePickerState() val selectedDate = datePickerState.selectedDateMillis?.let { @@ -300,6 +300,10 @@ fun DatePickerDocked() { TextButton( onClick = { showDatePicker = false + // Notify the parent about the selected date + datePickerState.selectedDateMillis?.let { millis -> + onDateSelected(millis) + } } ) { Text("OK") 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/add/AddUI.kt index ebe8eb5..7fc70dd 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/add/AddUI.kt @@ -43,6 +43,7 @@ fun Add( var spending by remember { mutableStateOf("") } + var selectedDate by remember { mutableStateOf(null) } var expanded by remember { mutableStateOf(false) } var selectedItem by remember { mutableStateOf("") } var selectedCategory by remember { mutableIntStateOf(-1) } @@ -115,7 +116,9 @@ fun Add( } } - entryDate = DatePickerDocked() + DatePickerDocked{ + dateMilis -> selectedDate = dateMilis + } } Box( 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/edit/EditUI.kt index 772c30d..1c2282f 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditUI.kt @@ -1,2 +1,112 @@ package at.xaxa.ledger.ui.edit +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExposedDropdownMenuBox +import androidx.compose.material3.ExposedDropdownMenuDefaults +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.lifecycle.viewmodel.compose.viewModel +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.home.HomeViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun Edit(modifier: Modifier = Modifier, onCardClick: (Int) -> Unit, HomeViewModel : HomeViewModel = viewModel(factory = AppViewModelProvider.Factory)) { + var name by remember { mutableStateOf("") } + var spending by remember { mutableStateOf("") } + + var selectedDate by remember { mutableStateOf(null) } + var expanded by remember { mutableStateOf(false) } + var selectedItem by remember { mutableStateOf("") } + val categories = listOf("Option 1", "Option 2", "Option 3") + + Column( + modifier = modifier.fillMaxSize() + .padding(16.dp, 0.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Column( + Modifier.weight(1f) + ) { + OutlinedTextField( + value = name, + onValueChange = { name = it }, + label = { Text("Name") }, + modifier = Modifier + .fillMaxWidth() + ) + OutlinedTextField( + value = spending, + onValueChange = { spending = it }, + label = { Text("Spending") }, + modifier = Modifier + .fillMaxWidth() + ) + + ExposedDropdownMenuBox( + expanded = expanded, + onExpandedChange = { expanded = it } + ) { + // TextField to display the selected item and trigger the dropdown + OutlinedTextField( + value = selectedItem, + onValueChange = {}, + label = { Text("Category") }, + readOnly = true, + trailingIcon = { + ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) + }, + modifier = Modifier + .menuAnchor() + .fillMaxWidth() + ) + + // Dropdown menu + ExposedDropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false } + ) { + categories.forEach { item -> + DropdownMenuItem( + text = { Text(text = item) }, + onClick = { + selectedItem = item + expanded = false + } + ) + } + } + } + + DatePickerDocked{ + dateMilis -> selectedDate = dateMilis + } + } + + Box( + modifier = Modifier + .fillMaxWidth(), + contentAlignment = Alignment.Center + ) { + ButtonDanger(modifier = Modifier, "Delete Transaction", onClick = { print("test") }) + ButtonSuccess(modifier = Modifier, "Add Transaction", onClick = { print("test") }) + } + } +}