diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt index a61d02b..0d7e11b 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/Entry.kt @@ -1,5 +1,7 @@ package at.xaxa.ledger.data +import kotlinx.coroutines.flow.Flow + class Entry ( val id: Int, val name: String, diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt b/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt index bbb5cfe..7604946 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/data/EntryRepository.kt @@ -5,7 +5,6 @@ import at.xaxa.ledger.data.db.Entry.EntryEntity import at.xaxa.ledger.data.db.LedgerDao import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -import java.util.Locale.Category class EntryRepository(private val ledgerDao: LedgerDao){ @@ -44,6 +43,7 @@ class EntryRepository(private val ledgerDao: LedgerDao){ suspend fun updateEntry(entry: Entry) { ledgerDao.updateEntry(EntryEntity(entry.id, entry.name, entry.amount, entry.date, entry.categoryID)) } + suspend fun deleteEntry(entry: Entry) { ledgerDao.deleteEntry(EntryEntity(_id = entry.id, entry.name, entry.amount, entry.date, entry.categoryID)) } 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 582e843..e78b0cb 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 @@ -37,7 +37,7 @@ fun LedgerApp(modifier: Modifier = Modifier){ composable(AppRoutes.Home.route){ Home( onCardClick = { - navController.navigate("edit/$id") + navController.navigate("edit/$it") }, onButtonClick = { navController.navigate("add") @@ -57,7 +57,6 @@ fun LedgerApp(modifier: Modifier = Modifier){ }) ) { backStackEntry -> - Log.w("xaver", "edit") Edit( modifier = Modifier, onCardClick = { 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 bfe037f..28b3092 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 @@ -1,12 +1,10 @@ package at.xaxa.ledger.ui.add -import android.util.Log 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.Button import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox @@ -17,6 +15,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -28,7 +27,6 @@ import at.xaxa.ledger.data.Entry import at.xaxa.ledger.ui.AppViewModelProvider import at.xaxa.ledger.ui.ButtonSuccess import at.xaxa.ledger.ui.DatePickerDocked -import at.xaxa.ledger.ui.home.HomeViewModel @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -42,20 +40,11 @@ fun Add( val categories by addViewModel.categoryUiState.categories.collectAsState(initial = emptyList()) var spending by remember { mutableStateOf("") } - - var selectedDate by remember { mutableStateOf(0) } + var selectedDate by remember { mutableLongStateOf(0) } var expanded by remember { mutableStateOf(false) } var selectedItem by remember { mutableStateOf("") } var selectedCategory by remember { mutableIntStateOf(-1) } - var entryName by remember { mutableStateOf("") } - var entryAmount by remember { mutableStateOf(0.0f) } - var entryDate by remember { mutableStateOf(0L) } - var category by remember { mutableStateOf(0) } - - - - Column( modifier = modifier .fillMaxSize() 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 747f313..db53b4e 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,26 +1,25 @@ package at.xaxa.ledger.ui.edit -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box +import android.util.Log import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row 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.ExposedDropdownMenuDefaults.TrailingIcon import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.BiasAlignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel @@ -28,19 +27,26 @@ 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, EditViewModel : EditViewModel = viewModel(factory = AppViewModelProvider.Factory)) { +fun Edit(modifier: Modifier = Modifier, onCardClick: () -> Unit, editViewModel : EditViewModel = viewModel(factory = AppViewModelProvider.Factory)) { + val entry = editViewModel.editUiState.entry + val categories by editViewModel.categoryUiState.categories.collectAsState(initial = emptyList()) - var name by remember { mutableStateOf("") } - var spending by remember { mutableStateOf("") } + Log.w("xaver", entry.name) + Log.w("xaver", entry.amount.toString()) + Log.w("xaver", entry.date.toString()) + Log.w("xaver", editViewModel.categoryUi.categories.categoryName) + Log.w("xaver", entry.categoryID.toString()) - var selectedDate by remember { mutableStateOf(null) } + + var name by remember { mutableStateOf(entry.name) } + var spending by remember { mutableStateOf(entry.amount.toString()) } + var selectedDate by remember { mutableLongStateOf(entry.date) } var expanded by remember { mutableStateOf(false) } - var selectedItem by remember { mutableStateOf("") } - val categories = listOf("Option 1", "Option 2", "Option 3") + var selectedItem by remember { mutableStateOf(editViewModel.categoryUi.categories.categoryName) } + var selectedCategory by remember { mutableIntStateOf(entry.categoryID) } Column( modifier = modifier.fillMaxSize() @@ -76,7 +82,7 @@ fun Edit(modifier: Modifier = Modifier, onCardClick: (Int) -> Unit, EditViewMode label = { Text("Category") }, readOnly = true, trailingIcon = { - ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) + TrailingIcon(expanded = expanded) }, modifier = Modifier .menuAnchor() @@ -90,9 +96,10 @@ fun Edit(modifier: Modifier = Modifier, onCardClick: (Int) -> Unit, EditViewMode ) { categories.forEach { item -> DropdownMenuItem( - text = { Text(text = item) }, + text = { Text(text = item.categoryName) }, onClick = { - selectedItem = item + selectedItem = item.categoryName + selectedCategory = item._id expanded = false } ) @@ -114,12 +121,12 @@ fun Edit(modifier: Modifier = Modifier, onCardClick: (Int) -> Unit, EditViewMode .fillMaxWidth() .padding(bottom = 8.dp), text = "Delete", - onClick = { print("test") } + onClick = { onCardClick() } ) ButtonSuccess( modifier = Modifier.fillMaxWidth(), // Add spacing between buttons text = "Done", - onClick = { print("test") } + onClick = { onCardClick() } ) } } diff --git a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt b/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt index 7f2b004..dcc8496 100644 --- a/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt +++ b/Ledger/app/src/main/java/at/xaxa/ledger/ui/edit/EditViewModel.kt @@ -1,5 +1,6 @@ package at.xaxa.ledger.ui.edit +import android.util.Log import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue @@ -27,12 +28,11 @@ class EditViewModel(private val savedStateHandle: SavedStateHandle, private val entryRepository: EntryRepository) : ViewModel() { private val entryId: Int = checkNotNull(savedStateHandle["entryId"]) - private val categoryId: Int = checkNotNull(savedStateHandle["categoryId"]) var editUiState by mutableStateOf(EditUI()) var categoryUiState by mutableStateOf(CategoryListUIState()) - var categoryui by mutableStateOf(CategoryUIState()) + var categoryUi by mutableStateOf(CategoryUIState()) init { @@ -41,6 +41,8 @@ class EditViewModel(private val savedStateHandle: SavedStateHandle, entryRepository.findEntryById(entryId) } editUiState = EditUI(entry) + + findCategoryByID(entry.categoryID) } } @@ -67,12 +69,12 @@ class EditViewModel(private val savedStateHandle: SavedStateHandle, } } - fun findCategoryByID() { + fun findCategoryByID(categoryId: Int) { viewModelScope.launch { val category = withContext(Dispatchers.IO) { entryRepository.findCategoryById(categoryId) } - categoryui = CategoryUIState(category) + categoryUi = CategoryUIState(category) }