Explorar o código

Add cover actions to a dialog when long-pressing manga cover (#5556)

Hunter Nickel %!s(int64=3) %!d(string=hai) anos
pai
achega
a1e83b9f19

+ 3 - 3
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt

@@ -661,7 +661,7 @@ class MangaController :
         }
     }
 
-    private fun shareCover() {
+    fun shareCover() {
         try {
             val activity = activity!!
             val cover = presenter.shareCover(activity)
@@ -673,7 +673,7 @@ class MangaController :
         }
     }
 
-    private fun saveCover() {
+    fun saveCover() {
         try {
             presenter.saveCover(activity!!)
             activity?.toast(R.string.cover_saved)
@@ -683,7 +683,7 @@ class MangaController :
         }
     }
 
-    private fun changeCover() {
+    fun changeCover() {
         val manga = manga ?: return
         if (manga.hasCustomCover(coverCache)) {
             ChangeMangaCoverDialog(this, manga).showDialog(router)

+ 23 - 4
app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt

@@ -6,6 +6,7 @@ import android.view.ViewGroup
 import androidx.core.view.isVisible
 import androidx.recyclerview.widget.RecyclerView
 import coil.loadAny
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.database.models.Manga
 import eu.kanade.tachiyomi.data.track.TrackManager
@@ -177,16 +178,34 @@ class MangaInfoHeaderAdapter(
 
             binding.mangaCover.longClicks()
                 .onEach {
-                    controller.activity?.copyToClipboard(
-                        view.context.getString(R.string.title),
-                        controller.presenter.manga.title
-                    )
+                    showCoverOptionsDialog()
                 }
                 .launchIn(controller.viewScope)
 
             setMangaInfo(manga, source)
         }
 
+        private fun showCoverOptionsDialog() {
+            val options = listOfNotNull(
+                R.string.action_share,
+                R.string.action_save,
+                // Can only edit cover for library manga
+                if (manga.favorite) R.string.action_edit else null
+            ).map(controller.activity!!::getString).toTypedArray()
+
+            MaterialAlertDialogBuilder(controller.activity!!)
+                .setTitle(R.string.manga_cover)
+                .setItems(options) { _, item ->
+                    when (item) {
+                        0 -> controller.shareCover()
+                        1 -> controller.saveCover()
+                        2 -> controller.changeCover()
+                    }
+                }
+                .setNegativeButton(android.R.string.cancel, null)
+                .show()
+        }
+
         /**
          * Update the view with manga information.
          *