implement AddCategoryDialog and add a dropdown menu for adding vocabulary or categories in LibraryScreen

This commit is contained in:
jonasgaudian
2026-02-16 22:49:54 +01:00
parent 3e3d6d9cd1
commit 059e5d9d3f

View File

@@ -60,9 +60,12 @@ import androidx.navigation.NavHostController
import eu.gaudian.translator.R import eu.gaudian.translator.R
import eu.gaudian.translator.model.VocabularyStage import eu.gaudian.translator.model.VocabularyStage
import eu.gaudian.translator.utils.findActivity import eu.gaudian.translator.utils.findActivity
import eu.gaudian.translator.view.composable.AppDropDownMenu
import eu.gaudian.translator.view.composable.AppIcons import eu.gaudian.translator.view.composable.AppIcons
import eu.gaudian.translator.view.composable.AppSwitch import eu.gaudian.translator.view.composable.AppSwitch
import eu.gaudian.translator.view.composable.LargeDropdownMenuItem
import eu.gaudian.translator.view.composable.MultipleLanguageDropdown import eu.gaudian.translator.view.composable.MultipleLanguageDropdown
import eu.gaudian.translator.view.dialogs.AddCategoryDialog
import eu.gaudian.translator.view.dialogs.CategorySelectionDialog import eu.gaudian.translator.view.dialogs.CategorySelectionDialog
import eu.gaudian.translator.view.dialogs.StageSelectionDialog import eu.gaudian.translator.view.dialogs.StageSelectionDialog
import eu.gaudian.translator.viewmodel.CategoryViewModel import eu.gaudian.translator.viewmodel.CategoryViewModel
@@ -106,6 +109,8 @@ fun LibraryScreen(
var showCategoryDialog by remember { mutableStateOf(false) } var showCategoryDialog by remember { mutableStateOf(false) }
var showStageDialog by remember { mutableStateOf(false) } var showStageDialog by remember { mutableStateOf(false) }
var showAddMenu by remember { mutableStateOf(false) }
var showAddCategoryDialog by remember { mutableStateOf(false) }
var isCategoriesView by remember { mutableStateOf(false) } var isCategoriesView by remember { mutableStateOf(false) }
@@ -164,7 +169,7 @@ fun LibraryScreen(
modifier = Modifier modifier = Modifier
.widthIn(max = 700.dp) .widthIn(max = 700.dp)
.fillMaxSize() .fillMaxSize()
.padding(horizontal = 24.dp), .padding(horizontal = 16.dp),
) { ) {
AnimatedVisibility( AnimatedVisibility(
visible = isHeaderVisible, visible = isHeaderVisible,
@@ -193,7 +198,7 @@ fun LibraryScreen(
) )
} else { } else {
LibraryTopBar( LibraryTopBar(
onAddClick = { /* TODO: Add new card/category */ } onAddClick = { showAddMenu = true }
) )
} }
@@ -323,6 +328,36 @@ fun LibraryScreen(
) )
} }
if (showAddMenu) {
AppDropDownMenu(
expanded = showAddMenu,
onDismissRequest = { showAddMenu = false }
) {
LargeDropdownMenuItem(
text = stringResource(R.string.label_add_vocabulary),
selected = false,
enabled = true,
onClick = {
showAddMenu = false
navController.navigate("new_word")
}
)
LargeDropdownMenuItem(
text = stringResource(R.string.label_add_category),
selected = false,
enabled = true,
onClick = {
showAddMenu = false
showAddCategoryDialog = true
}
)
}
}
if (showAddCategoryDialog) {
AddCategoryDialog(onDismiss = { showAddCategoryDialog = false })
}
if (showStageDialog) { if (showStageDialog) {
val selectedItems = vocabularyItems.filter { selection.contains(it.id.toLong()) } val selectedItems = vocabularyItems.filter { selection.contains(it.id.toLong()) }
StageSelectionDialog( StageSelectionDialog(