category strucutre

This commit is contained in:
Xaver 2025-01-16 12:16:45 +01:00
parent d6ff6de339
commit cbe06735b1
6 changed files with 13 additions and 58 deletions

View File

@ -5,8 +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.category.overview.OverviewCategoryViewModel
import at.xaxa.ledger.ui.category.add.AddCategoryViewModel
import at.xaxa.ledger.ui.entry.add.AddViewModel import at.xaxa.ledger.ui.entry.add.AddViewModel
import at.xaxa.ledger.ui.category.CategoryViewModel
import at.xaxa.ledger.ui.category.edit.EditCategoryViewModel import at.xaxa.ledger.ui.category.edit.EditCategoryViewModel
import at.xaxa.ledger.ui.entry.edit.EditViewModel import at.xaxa.ledger.ui.entry.edit.EditViewModel
import at.xaxa.ledger.ui.home.HomeViewModel import at.xaxa.ledger.ui.home.HomeViewModel
@ -26,10 +27,13 @@ object AppViewModelProvider {
EditViewModel(this.createSavedStateHandle(), (this[APPLICATION_KEY] as LedgerApplication).entryRepository) EditViewModel(this.createSavedStateHandle(), (this[APPLICATION_KEY] as LedgerApplication).entryRepository)
} }
initializer { initializer {
CategoryViewModel(this.createSavedStateHandle(), (this[APPLICATION_KEY] as LedgerApplication).entryRepository) OverviewCategoryViewModel(this.createSavedStateHandle(), (this[APPLICATION_KEY] as LedgerApplication).entryRepository)
} }
initializer { initializer {
EditCategoryViewModel(this.createSavedStateHandle(), (this[APPLICATION_KEY] as LedgerApplication).entryRepository) EditCategoryViewModel(this.createSavedStateHandle(), (this[APPLICATION_KEY] as LedgerApplication).entryRepository)
} }
initializer {
AddCategoryViewModel(this.createSavedStateHandle(), (this[APPLICATION_KEY] as LedgerApplication).entryRepository)
}
} }
} }

View File

@ -12,7 +12,7 @@ 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.entry.add.Add import at.xaxa.ledger.ui.entry.add.Add
import at.xaxa.ledger.ui.category.CategoryOverview import at.xaxa.ledger.ui.category.overview.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.entry.edit.Edit import at.xaxa.ledger.ui.entry.edit.Edit

View File

@ -1,31 +1,10 @@
package at.xaxa.ledger.ui.category.add package at.xaxa.ledger.ui.category.add
import android.util.Log
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountBox
import androidx.compose.material.icons.filled.ArrowForward
import androidx.compose.material.icons.filled.Build
import androidx.compose.material.icons.filled.Call
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.Home
import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.filled.LocationOn
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.Notifications
import androidx.compose.material.icons.filled.Share
import androidx.compose.material.icons.filled.ShoppingCart
import androidx.compose.material.icons.filled.Warning
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuBox
@ -34,7 +13,6 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -46,7 +24,6 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import at.xaxa.ledger.data.db.Category.CategoryEntity import at.xaxa.ledger.data.db.Category.CategoryEntity
import at.xaxa.ledger.ui.AppViewModelProvider import at.xaxa.ledger.ui.AppViewModelProvider
import at.xaxa.ledger.ui.ButtonSuccess import at.xaxa.ledger.ui.ButtonSuccess
import at.xaxa.ledger.ui.category.CategoryViewModel
import at.xaxa.ledger.ui.category.iconNames import at.xaxa.ledger.ui.category.iconNames
import at.xaxa.ledger.ui.category.icons import at.xaxa.ledger.ui.category.icons
@ -56,18 +33,13 @@ import at.xaxa.ledger.ui.category.icons
fun AddCategory( fun AddCategory(
onButtonClick: () -> Unit, onButtonClick: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
categoryViewModel: CategoryViewModel = viewModel(factory = AppViewModelProvider.Factory) categoryViewModel: AddCategoryViewModel = viewModel(factory = AppViewModelProvider.Factory)
) { ) {
var name by remember { mutableStateOf("") } var name by remember { mutableStateOf("") }
var selectedIconIndex by remember { mutableStateOf(0) } // Store index of selected icon var selectedIconIndex by remember { mutableStateOf(0) } // Store index of selected icon
var expanded by remember { mutableStateOf(false) } // Controls dropdown visibility var expanded by remember { mutableStateOf(false) } // Controls dropdown visibility
/*
val categories by categoryViewModel.categoryUiState.categories.collectAsState(initial = emptyList())
val category = categoryViewModel.categoryUi.category
var expanded by remember { mutableStateOf(false) }*/
Column( Column(
modifier = modifier modifier = modifier
.fillMaxSize() .fillMaxSize()

View File

@ -1,4 +1,4 @@
package at.xaxa.ledger.ui.category package at.xaxa.ledger.ui.category.add
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
@ -6,12 +6,10 @@ import androidx.compose.runtime.setValue
import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import at.xaxa.ledger.data.Entry
import at.xaxa.ledger.data.EntryRepository import at.xaxa.ledger.data.EntryRepository
import at.xaxa.ledger.data.db.Category.CategoryEntity import at.xaxa.ledger.data.db.Category.CategoryEntity
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -20,7 +18,7 @@ data class CategoryUIState(val category: CategoryEntity = CategoryEntity(0,"",0)
data class CategoryListUIState(val categories: Flow<List<CategoryEntity>> = flowOf(emptyList())) data class CategoryListUIState(val categories: Flow<List<CategoryEntity>> = flowOf(emptyList()))
class CategoryViewModel( class AddCategoryViewModel(
private val savedStateHandle: SavedStateHandle, private val savedStateHandle: SavedStateHandle,
private val repository: EntryRepository private val repository: EntryRepository
) : ViewModel() { ) : ViewModel() {
@ -29,7 +27,7 @@ class CategoryViewModel(
private set private set
init { init {
getAllCategories() //getAllCategories()
} }
fun addCategory(category: CategoryEntity) { fun addCategory(category: CategoryEntity) {
@ -49,23 +47,4 @@ class CategoryViewModel(
} }
} }
} }
fun getAllCategories() {
viewModelScope.launch {
val categories = withContext(Dispatchers.IO) {
repository.getAllCategories()
}
categoryUiState = CategoryListUIState(categories)
}
}
fun findCategoryByID(categoryId: Int) {
viewModelScope.launch {
val category = withContext(Dispatchers.IO) {
repository.findCategoryById(categoryId)
}
categoryUi = CategoryUIState(category)
}
}
} }

View File

@ -1,4 +1,4 @@
package at.xaxa.ledger.ui.category package at.xaxa.ledger.ui.category.overview
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column

View File

@ -1,4 +1,4 @@
package at.xaxa.ledger.ui.category package at.xaxa.ledger.ui.category.overview
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf