Эх сурвалжийг харах

Replace deprecated ProgressDialog

Fixes #8223
arkon 1 жил өмнө
parent
commit
bae391c2c1

+ 34 - 20
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt

@@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.reader
 
 import android.annotation.SuppressLint
 import android.annotation.TargetApi
-import android.app.ProgressDialog
 import android.app.assist.AssistContent
 import android.content.Context
 import android.content.Intent
@@ -25,8 +24,16 @@ import android.view.animation.Animation
 import android.view.animation.AnimationUtils
 import android.widget.Toast
 import androidx.activity.viewModels
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Row
+import androidx.compose.material3.AlertDialog
+import androidx.compose.material3.CircularProgressIndicator
+import androidx.compose.material3.Text
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.getValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
 import androidx.core.graphics.ColorUtils
 import androidx.core.net.toUri
 import androidx.core.transition.doOnEnd
@@ -128,12 +135,6 @@ class ReaderActivity : BaseActivity() {
      */
     private var config: ReaderConfig? = null
 
-    /**
-     * Progress dialog used when switching chapters from the menu buttons.
-     */
-    @Suppress("DEPRECATION")
-    private var progressDialog: ProgressDialog? = null
-
     private var menuToggleToast: Toast? = null
 
     private var readingModeToast: Toast? = null
@@ -242,8 +243,6 @@ class ReaderActivity : BaseActivity() {
         config = null
         menuToggleToast?.cancel()
         readingModeToast?.cancel()
-        progressDialog?.dismiss()
-        progressDialog = null
     }
 
     /**
@@ -412,6 +411,21 @@ class ReaderActivity : BaseActivity() {
             val state by viewModel.state.collectAsState()
             val onDismissRequest = viewModel::closeDialog
             when (state.dialog) {
+                is ReaderViewModel.Dialog.Loading -> {
+                    AlertDialog(
+                        onDismissRequest = { /* Non dismissible */ },
+                        confirmButton = {},
+                        text = {
+                            Row(
+                                horizontalArrangement = Arrangement.spacedBy(16.dp),
+                                verticalAlignment = Alignment.CenterVertically,
+                            ) {
+                                CircularProgressIndicator()
+                                Text(stringResource(R.string.loading))
+                            }
+                        },
+                    )
+                }
                 is ReaderViewModel.Dialog.ColorFilter -> {
                     setMenuVisibility(false)
                     ReaderColorFilterDialog(
@@ -422,12 +436,14 @@ class ReaderActivity : BaseActivity() {
                         readerPreferences = viewModel.readerPreferences,
                     )
                 }
-                is ReaderViewModel.Dialog.Page -> ReaderPageDialog(
-                    onDismissRequest = onDismissRequest,
-                    onSetAsCover = viewModel::setAsCover,
-                    onShare = viewModel::shareImage,
-                    onSave = viewModel::saveImage,
-                )
+                is ReaderViewModel.Dialog.PageActions -> {
+                    ReaderPageActionsDialog(
+                        onDismissRequest = onDismissRequest,
+                        onSetAsCover = viewModel::setAsCover,
+                        onShare = viewModel::shareImage,
+                        onSave = viewModel::saveImage,
+                    )
+                }
                 null -> {}
             }
         }
@@ -757,13 +773,11 @@ class ReaderActivity : BaseActivity() {
      * [show]. This is only used when the next/previous buttons on the toolbar are clicked; the
      * other cases are handled with chapter transitions on the viewers and chapter preloading.
      */
-    @Suppress("DEPRECATION")
     private fun setProgressDialog(show: Boolean) {
-        progressDialog?.dismiss()
-        progressDialog = if (show) {
-            ProgressDialog.show(this, null, getString(R.string.loading), true)
+        if (show) {
+            viewModel.showLoadingDialog()
         } else {
-            null
+            viewModel.closeDialog()
         }
     }
 

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageDialog.kt → app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageActionsDialog.kt

@@ -25,7 +25,7 @@ import tachiyomi.presentation.core.components.ActionButton
 import tachiyomi.presentation.core.components.material.padding
 
 @Composable
-fun ReaderPageDialog(
+fun ReaderPageActionsDialog(
     onDismissRequest: () -> Unit,
     onSetAsCover: () -> Unit,
     onShare: () -> Unit,

+ 10 - 5
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt

@@ -718,8 +718,12 @@ class ReaderViewModel(
         ) + filenameSuffix
     }
 
+    fun showLoadingDialog() {
+        mutableState.update { it.copy(dialog = Dialog.Loading) }
+    }
+
     fun openPageDialog(page: ReaderPage) {
-        mutableState.update { it.copy(dialog = Dialog.Page(page)) }
+        mutableState.update { it.copy(dialog = Dialog.PageActions(page)) }
     }
 
     fun openColorFilterDialog() {
@@ -735,7 +739,7 @@ class ReaderViewModel(
      * There's also a notification to allow sharing the image somewhere else or deleting it.
      */
     fun saveImage() {
-        val page = (state.value.dialog as? Dialog.Page)?.page
+        val page = (state.value.dialog as? Dialog.PageActions)?.page
         if (page?.status != Page.State.READY) return
         val manga = manga ?: return
 
@@ -777,7 +781,7 @@ class ReaderViewModel(
      * image will be kept so it won't be taking lots of internal disk space.
      */
     fun shareImage() {
-        val page = (state.value.dialog as? Dialog.Page)?.page
+        val page = (state.value.dialog as? Dialog.PageActions)?.page
         if (page?.status != Page.State.READY) return
         val manga = manga ?: return
 
@@ -807,7 +811,7 @@ class ReaderViewModel(
      * Sets the image of the selected page as cover and notifies the UI of the result.
      */
     fun setAsCover() {
-        val page = (state.value.dialog as? Dialog.Page)?.page
+        val page = (state.value.dialog as? Dialog.PageActions)?.page
         if (page?.status != Page.State.READY) return
         val manga = manga ?: return
         val stream = page.stream ?: return
@@ -928,8 +932,9 @@ class ReaderViewModel(
     }
 
     sealed class Dialog {
+        object Loading : Dialog()
         object ColorFilter : Dialog()
-        data class Page(val page: ReaderPage) : Dialog()
+        data class PageActions(val page: ReaderPage) : Dialog()
     }
 
     sealed class Event {