This commit is contained in:
Xaver 2025-01-14 15:16:37 +01:00
parent aef7c9cd6f
commit b9649a6fab
2 changed files with 119 additions and 7 deletions

View File

@ -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")
}
)
}*/
}
}
}
}

View File

@ -1,2 +1,109 @@
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 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()
}
Box(
modifier = Modifier
.fillMaxWidth(),
contentAlignment = Alignment.Center
) {
ButtonDanger(modifier = Modifier, "Delete Transaction", onClick = { print("test") })
ButtonSuccess(modifier = Modifier, "Add Transaction", onClick = { print("test") })
}
}
}