diff --git a/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.kt b/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.kt index d1b29a4b0..7b8e0e770 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.kt @@ -27,6 +27,8 @@ import androidx.compose.material.icons.filled.DriveFileMove import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.HeartBroken import androidx.compose.material.icons.filled.MenuBook +import androidx.compose.material3.Text +import androidx.compose.ui.res.stringResource import androidx.core.content.ContextCompat import com.hippo.ehviewer.EhApplication.Companion.favouriteStatusRouter import com.hippo.ehviewer.EhDB @@ -277,3 +279,10 @@ suspend fun DialogState.selectGalleryInfoAction(info: GalleryInfo): Int { } return selected } + +suspend fun DialogState.confirmRemoveDownload(info: GalleryInfo): Boolean = show( + confirmText = android.R.string.ok, + dismissText = android.R.string.cancel, + title = R.string.download_remove_dialog_title, + text = { Text(text = stringResource(id = R.string.download_remove_dialog_message, info.title.orEmpty())) }, +) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt index 801f6dd34..9a8aad338 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt @@ -84,6 +84,7 @@ import com.hippo.ehviewer.ui.MainActivity import com.hippo.ehviewer.ui.addToFavorites import com.hippo.ehviewer.ui.compose.DialogState import com.hippo.ehviewer.ui.compose.setMD3Content +import com.hippo.ehviewer.ui.confirmRemoveDownload import com.hippo.ehviewer.ui.legacy.AddDeleteDrawable import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder import com.hippo.ehviewer.ui.legacy.BringOutTransition @@ -727,20 +728,7 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H when (selected) { 0 -> context.navToReader(info) 1 -> if (downloaded) { - BaseDialogBuilder(context) - .setTitle(R.string.download_remove_dialog_title) - .setMessage( - getString( - R.string.download_remove_dialog_message, - info.title, - ), - ) - .setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int -> - mDownloadManager.deleteDownload( - info.gid, - ) - } - .show() + if (dialogState.confirmRemoveDownload(info)) mDownloadManager.deleteDownload(info.gid) } else { CommonOperations.startDownload(activity as MainActivity, info, false) } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt index f8624125f..a793ccab1 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt @@ -72,9 +72,11 @@ import com.hippo.ehviewer.ui.CommonOperations import com.hippo.ehviewer.ui.MainActivity import com.hippo.ehviewer.ui.addToFavorites import com.hippo.ehviewer.ui.compose.Deferred +import com.hippo.ehviewer.ui.compose.DialogState import com.hippo.ehviewer.ui.compose.data.GalleryInfoListItem import com.hippo.ehviewer.ui.compose.rememberDialogState import com.hippo.ehviewer.ui.compose.setMD3Content +import com.hippo.ehviewer.ui.confirmRemoveDownload import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder import com.hippo.ehviewer.ui.navToReader import com.hippo.ehviewer.ui.removeFromFavorites @@ -162,7 +164,7 @@ class HistoryScene : BaseScene() { onLongClick = { coroutineScope.launchIO { val selected = dialogState.selectGalleryInfoAction(info) - withUIContext { handleLongClick(selected, info) } + withUIContext { handleLongClick(selected, info, dialogState) } } }, info = it, @@ -217,24 +219,13 @@ class HistoryScene : BaseScene() { navigate(R.id.galleryDetailScene, args) } - private fun handleLongClick(which: Int, gi: GalleryInfo) { + private suspend fun handleLongClick(which: Int, gi: GalleryInfo, dialogState: DialogState) { val downloaded = DownloadManager.getDownloadState(gi.gid) != DownloadInfo.STATE_INVALID val favourite = gi.favoriteSlot != -2 when (which) { 0 -> context?.navToReader(gi) 1 -> if (downloaded) { - BaseDialogBuilder(requireContext()) - .setTitle(R.string.download_remove_dialog_title) - .setMessage( - getString( - R.string.download_remove_dialog_message, - gi.title, - ), - ) - .setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int -> - DownloadManager.deleteDownload(gi.gid) - } - .show() + if (dialogState.confirmRemoveDownload(gi)) DownloadManager.deleteDownload(gi.gid) } else { CommonOperations.startDownload(activity as MainActivity, gi, false) }