implement AddCategoryDialog and add a dropdown menu for adding vocabulary or categories in LibraryScreen
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user