diff --git a/presentation/src/androidMain/kotlin/ca/gosyer/ui/library/components/AndroidLibraryGrid.kt b/presentation/src/androidMain/kotlin/ca/gosyer/ui/library/components/AndroidLibraryGrid.kt index 6e80ab03..25f9f2eb 100644 --- a/presentation/src/androidMain/kotlin/ca/gosyer/ui/library/components/AndroidLibraryGrid.kt +++ b/presentation/src/androidMain/kotlin/ca/gosyer/ui/library/components/AndroidLibraryGrid.kt @@ -6,12 +6,46 @@ package ca.gosyer.ui.library.components -import androidx.compose.foundation.clickable +import androidx.compose.foundation.combinedClickable +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem +import androidx.compose.material.Text +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.composed +import ca.gosyer.i18n.MR +import ca.gosyer.uicore.resources.stringResource actual fun Modifier.libraryMangaModifier( onClickManga: () -> Unit, onClickRemoveManga: () -> Unit -): Modifier = Modifier.clickable( - onClick = { onClickManga() } -) \ No newline at end of file +): Modifier = composed { + var expanded by remember { mutableStateOf(false) } + DropdownMenu( + expanded, + onDismissRequest = { expanded = false } + ) { + listOf( + stringResource(MR.strings.action_remove_favorite) to onClickRemoveManga + ).forEach { (label, onClick) -> + DropdownMenuItem( + onClick = { + expanded = false + onClick() + } + ) { + Text(text = label) + } + } + } + + Modifier.combinedClickable( + onClick = { onClickManga() }, + onLongClick = { + expanded = true + } + ) +} \ No newline at end of file diff --git a/presentation/src/androidMain/kotlin/ca/gosyer/ui/manga/components/AndroidChapterItem.kt b/presentation/src/androidMain/kotlin/ca/gosyer/ui/manga/components/AndroidChapterItem.kt index 871e8689..1e22c9e1 100644 --- a/presentation/src/androidMain/kotlin/ca/gosyer/ui/manga/components/AndroidChapterItem.kt +++ b/presentation/src/androidMain/kotlin/ca/gosyer/ui/manga/components/AndroidChapterItem.kt @@ -6,14 +6,50 @@ package ca.gosyer.ui.manga.components -import androidx.compose.foundation.clickable +import androidx.compose.foundation.combinedClickable +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem +import androidx.compose.material.Text +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.composed +import ca.gosyer.i18n.MR +import ca.gosyer.uicore.resources.stringResource actual fun Modifier.chapterItemModifier( onClick: () -> Unit, toggleRead: () -> Unit, toggleBookmarked: () -> Unit, markPreviousAsRead: () -> Unit -): Modifier = Modifier.clickable( - onClick = { onClick() } -) \ No newline at end of file +): Modifier = composed { + var expanded by remember { mutableStateOf(false) } + DropdownMenu( + expanded, + onDismissRequest = { expanded = false } + ) { + listOf( + stringResource(MR.strings.action_toggle_read) to toggleRead , + stringResource(MR.strings.action_mark_previous_read) to markPreviousAsRead , + stringResource(MR.strings.action_toggle_bookmarked) to toggleBookmarked + ).forEach { (label, onClick) -> + DropdownMenuItem( + onClick = { + expanded = false + onClick() + } + ) { + Text(text = label) + } + } + } + + Modifier.combinedClickable( + onClick = { onClick() }, + onLongClick = { + expanded = true + } + ) +} \ No newline at end of file