kunfei 4 ani în urmă
părinte
comite
67b52b0d40

+ 12 - 4
app/src/main/java/io/legado/app/model/BookCover.kt

@@ -70,13 +70,17 @@ object BookCover {
     fun load(
         context: Context,
         path: String?,
-        loadOnlyWifi: Boolean = false
+        loadOnlyWifi: Boolean = false,
+        sourceOrigin: String? = null
     ): RequestBuilder<Drawable> {
         if (AppConfig.useDefaultCover) {
             return ImageLoader.load(context, defaultDrawable)
                 .centerCrop()
         }
-        val options = RequestOptions().set(OkHttpModelLoader.loadOnlyWifiOption, loadOnlyWifi)
+        var options = RequestOptions().set(OkHttpModelLoader.loadOnlyWifiOption, loadOnlyWifi)
+        if (sourceOrigin != null) {
+            options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
+        }
         return ImageLoader.load(context, path)
             .apply(options)
             .placeholder(defaultDrawable)
@@ -90,14 +94,18 @@ object BookCover {
     fun loadBlur(
         context: Context,
         path: String?,
-        loadOnlyWifi: Boolean = false
+        loadOnlyWifi: Boolean = false,
+        sourceOrigin: String? = null
     ): RequestBuilder<Drawable> {
         val loadBlur = ImageLoader.load(context, defaultDrawable)
             .transform(BlurTransformation(25), CenterCrop())
         if (AppConfig.useDefaultCover) {
             return loadBlur
         }
-        val options = RequestOptions().set(OkHttpModelLoader.loadOnlyWifiOption, loadOnlyWifi)
+        var options = RequestOptions().set(OkHttpModelLoader.loadOnlyWifiOption, loadOnlyWifi)
+        if (sourceOrigin != null) {
+            options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
+        }
         return ImageLoader.load(context, path)
             .apply(options)
             .transform(BlurTransformation(25), CenterCrop())

+ 28 - 13
app/src/main/java/io/legado/app/ui/widget/dialog/PhotoDialog.kt

@@ -1,12 +1,15 @@
 package io.legado.app.ui.widget.dialog
 
+import android.annotation.SuppressLint
 import android.os.Bundle
 import android.view.View
+import com.bumptech.glide.request.RequestOptions
 import io.legado.app.R
 import io.legado.app.base.BaseDialogFragment
 import io.legado.app.databinding.DialogPhotoViewBinding
 import io.legado.app.help.BookHelp
 import io.legado.app.help.glide.ImageLoader
+import io.legado.app.help.glide.OkHttpModelLoader
 import io.legado.app.model.BookCover
 import io.legado.app.model.ReadBook
 import io.legado.app.utils.setLayout
@@ -17,9 +20,10 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
  */
 class PhotoDialog() : BaseDialogFragment(R.layout.dialog_photo_view) {
 
-    constructor(src: String) : this() {
+    constructor(src: String, sourceOrigin: String? = null) : this() {
         arguments = Bundle().apply {
             putString("src", src)
+            putString("sourceOrigin", sourceOrigin)
         }
     }
 
@@ -30,19 +34,30 @@ class PhotoDialog() : BaseDialogFragment(R.layout.dialog_photo_view) {
         setLayout(1f, 1f)
     }
 
+    @SuppressLint("CheckResult")
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
-        arguments?.getString("src")?.let { src ->
-            val file = ReadBook.book?.let { book ->
-                BookHelp.getImage(book, src)
-            }
-            if (file?.exists() == true) {
-                ImageLoader.load(requireContext(), file)
-                    .error(R.drawable.image_loading_error)
-                    .into(binding.photoView)
-            } else {
-                ImageLoader.load(requireContext(), src)
-                    .error(BookCover.defaultDrawable)
-                    .into(binding.photoView)
+        arguments?.let { arguments ->
+            arguments.getString("src")?.let { src ->
+                val file = ReadBook.book?.let { book ->
+                    BookHelp.getImage(book, src)
+                }
+                if (file?.exists() == true) {
+                    ImageLoader.load(requireContext(), file)
+                        .error(R.drawable.image_loading_error)
+                        .into(binding.photoView)
+                } else {
+                    ImageLoader.load(requireContext(), src).apply {
+                        arguments.getString("sourceOrigin")?.let { sourceOrigin ->
+                            apply(
+                                RequestOptions().set(
+                                    OkHttpModelLoader.sourceOriginOption,
+                                    sourceOrigin
+                                )
+                            )
+                        }
+                    }.error(BookCover.defaultDrawable)
+                        .into(binding.photoView)
+                }
             }
         }