This commit is contained in:
Xaver 2025-01-15 09:49:25 +01:00
parent bb30679348
commit 8f44d99788
5 changed files with 21 additions and 33 deletions

View File

@ -1,5 +1,7 @@
package at.xaxa.ledger.data
import kotlinx.coroutines.flow.Flow
class Entry (
val id: Int,
val name: String,

View File

@ -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))
}

View File

@ -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<Long>(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()

View File

@ -1,9 +1,6 @@
package at.xaxa.ledger.ui.edit
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
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
@ -14,31 +11,34 @@ import androidx.compose.material3.ExposedDropdownMenuDefaults
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.mutableFloatStateOf
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
import at.xaxa.ledger.data.Entry
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("") }
fun Edit(modifier: Modifier = Modifier, onCardClick: () -> Unit, editViewModel : EditViewModel = viewModel(factory = AppViewModelProvider.Factory)) {
val libraryEntity = editViewModel.editUiState.entry
var selectedDate by remember { mutableStateOf<Long?>(null) }
var name by remember { mutableStateOf(libraryEntity.name) }
var spending by remember { mutableStateOf(libraryEntity.amount.toString()) }
var selectedDate by remember { mutableLongStateOf(libraryEntity.date) }
var expanded by remember { mutableStateOf(false) }
var selectedItem by remember { mutableStateOf("") }
val categories = listOf("Option 1", "Option 2", "Option 3")
val categories by editViewModel.categoryUiState.categories.collectAsState(initial = emptyList())
Column(
modifier = modifier.fillMaxSize()
@ -56,9 +56,9 @@ fun Edit(modifier: Modifier = Modifier, onCardClick: (Int) -> Unit, HomeViewMode
.fillMaxWidth()
)
OutlinedTextField(
value = spending,
value = name,
onValueChange = { spending = it },
label = { Text("Spending") },
label = { Text("Name") },
modifier = Modifier
.fillMaxWidth()
)
@ -111,13 +111,13 @@ fun Edit(modifier: Modifier = Modifier, onCardClick: (Int) -> Unit, HomeViewMode
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 8.dp),
text = "Delete Transaction",
onClick = { print("test") }
text = "Delete",
onClick = { onCardClick() }
)
ButtonSuccess(
modifier = Modifier.fillMaxWidth(), // Add spacing between buttons
text = "Add Transaction",
onClick = { print("test") }
text = "Done",
onClick = { onCardClick() }
)
}
}

View File

@ -9,9 +9,6 @@ import androidx.lifecycle.viewModelScope
import at.xaxa.ledger.data.Entry
import at.xaxa.ledger.data.EntryRepository
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext