Implement dialogState.confirmRemoveDownload

This commit is contained in:
tarsin committed 2023-05-31 13:25:23 +08:00
1 parent cb67a51686
commit ac7fed649a
3 files changed
+16 -28

No files matched your search

@@ -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())) },
)
@@ -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)
}
@@ -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)
}