mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
feat(cover): Custom cover now shown globally
This commit is contained in:
parent
e8fc16d166
commit
b044842475
6 changed files with 18 additions and 47 deletions
|
@ -13,7 +13,7 @@ import uy.kohesive.injekt.injectLazy
|
|||
|
||||
class LibraryMangaImageTarget(
|
||||
override val view: ImageView,
|
||||
val libraryManga: Manga,
|
||||
private val libraryManga: Manga,
|
||||
) : ImageViewTarget(view) {
|
||||
|
||||
private val coverCache: CoverCache by injectLazy()
|
||||
|
|
|
@ -5,10 +5,7 @@ import androidx.appcompat.widget.PopupMenu
|
|||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
import coil3.imageLoader
|
||||
import coil3.request.ImageRequest
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.coil.CoverViewTarget
|
||||
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.databinding.MangaGridItemBinding
|
||||
|
@ -24,13 +21,14 @@ import eu.kanade.tachiyomi.util.system.setExtras
|
|||
import eu.kanade.tachiyomi.util.view.setCards
|
||||
import eu.kanade.tachiyomi.util.view.setVectorCompat
|
||||
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||
import java.text.DecimalFormat
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import yokai.domain.manga.models.cover
|
||||
import yokai.i18n.MR
|
||||
import yokai.presentation.core.util.coil.loadManga
|
||||
import yokai.util.lang.getString
|
||||
import java.text.DecimalFormat
|
||||
|
||||
class MigrationProcessHolder(
|
||||
private val view: View,
|
||||
|
@ -149,11 +147,9 @@ class MigrationProcessHolder(
|
|||
(root.layoutParams as ConstraintLayout.LayoutParams).verticalBias = 1f
|
||||
progress.isVisible = false
|
||||
|
||||
val request = ImageRequest.Builder(view.context).data(manga.cover())
|
||||
.target(CoverViewTarget(coverThumbnail, progress))
|
||||
.setExtras(MangaCoverFetcher.USE_CUSTOM_COVER_KEY, false)
|
||||
.build()
|
||||
view.context.imageLoader.enqueue(request)
|
||||
coverThumbnail.loadManga(manga.cover(), progress) {
|
||||
setExtras(MangaCoverFetcher.USE_CUSTOM_COVER_KEY, false)
|
||||
}
|
||||
|
||||
compactTitle.isVisible = true
|
||||
gradient.isVisible = true
|
||||
|
|
|
@ -6,18 +6,14 @@ import androidx.core.graphics.ColorUtils
|
|||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import coil3.dispose
|
||||
import coil3.imageLoader
|
||||
import coil3.request.ImageRequest
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.davidea.flexibleadapter.items.IFlexible
|
||||
import eu.kanade.tachiyomi.data.coil.CoverViewTarget
|
||||
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
|
||||
import eu.kanade.tachiyomi.databinding.MangaGridItemBinding
|
||||
import eu.kanade.tachiyomi.domain.manga.models.Manga
|
||||
import eu.kanade.tachiyomi.ui.library.LibraryCategoryAdapter
|
||||
import eu.kanade.tachiyomi.util.system.setExtras
|
||||
import eu.kanade.tachiyomi.util.view.setCards
|
||||
import yokai.domain.manga.models.cover
|
||||
import yokai.presentation.core.util.coil.loadManga
|
||||
|
||||
/**
|
||||
* Class used to hold the displayed data of a manga in the library, like the cover or the title.
|
||||
|
@ -67,12 +63,7 @@ class BrowseSourceGridHolder(
|
|||
binding.coverThumbnail.dispose()
|
||||
} else {
|
||||
manga.id ?: return
|
||||
val request = ImageRequest.Builder(view.context).data(manga.cover())
|
||||
.target(CoverViewTarget(binding.coverThumbnail, binding.progress))
|
||||
.setExtras(MangaCoverFetcher.USE_CUSTOM_COVER_KEY, false)
|
||||
.build()
|
||||
view.context.imageLoader.enqueue(request)
|
||||
|
||||
binding.coverThumbnail.loadManga(manga.cover(), binding.progress)
|
||||
binding.coverThumbnail.alpha = if (manga.favorite) 0.34f else 1.0f
|
||||
binding.card.strokeColorStateList?.defaultColor?.let { color ->
|
||||
binding.card.strokeColor = ColorUtils.setAlphaComponent(color, if (manga.favorite) 87 else 255)
|
||||
|
|
|
@ -4,17 +4,13 @@ import android.view.View
|
|||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import coil3.dispose
|
||||
import coil3.imageLoader
|
||||
import coil3.request.ImageRequest
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.davidea.flexibleadapter.items.IFlexible
|
||||
import eu.kanade.tachiyomi.data.coil.CoverViewTarget
|
||||
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
|
||||
import eu.kanade.tachiyomi.databinding.MangaListItemBinding
|
||||
import eu.kanade.tachiyomi.domain.manga.models.Manga
|
||||
import eu.kanade.tachiyomi.util.system.setExtras
|
||||
import eu.kanade.tachiyomi.util.view.setCards
|
||||
import yokai.domain.manga.models.cover
|
||||
import yokai.presentation.core.util.coil.loadManga
|
||||
|
||||
/**
|
||||
* Class used to hold the displayed data of a manga in the catalogue, like the cover or the title.
|
||||
|
@ -56,12 +52,7 @@ class BrowseSourceListHolder(
|
|||
binding.coverThumbnail.dispose()
|
||||
} else {
|
||||
manga.id ?: return
|
||||
val request = ImageRequest.Builder(view.context).data(manga.cover())
|
||||
.target(CoverViewTarget(binding.coverThumbnail))
|
||||
.setExtras(MangaCoverFetcher.USE_CUSTOM_COVER_KEY, false)
|
||||
.build()
|
||||
view.context.imageLoader.enqueue(request)
|
||||
|
||||
binding.coverThumbnail.loadManga(manga.cover())
|
||||
binding.coverThumbnail.alpha = if (manga.favorite) 0.34f else 1.0f
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,21 +4,14 @@ import android.graphics.drawable.RippleDrawable
|
|||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import coil3.dispose
|
||||
import coil3.imageLoader
|
||||
import coil3.request.CachePolicy
|
||||
import coil3.request.ImageRequest
|
||||
import coil3.request.placeholder
|
||||
import eu.kanade.tachiyomi.data.coil.CoverViewTarget
|
||||
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
|
||||
import eu.kanade.tachiyomi.databinding.SourceGlobalSearchControllerCardItemBinding
|
||||
import eu.kanade.tachiyomi.domain.manga.models.Manga
|
||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.setExtras
|
||||
import eu.kanade.tachiyomi.util.view.makeShapeCorners
|
||||
import eu.kanade.tachiyomi.util.view.setCards
|
||||
import yokai.domain.manga.models.cover
|
||||
import android.R as AR
|
||||
import yokai.presentation.core.util.coil.loadManga
|
||||
|
||||
class GlobalSearchMangaHolder(view: View, adapter: GlobalSearchCardAdapter) :
|
||||
BaseFlexibleViewHolder(view, adapter) {
|
||||
|
@ -57,13 +50,7 @@ class GlobalSearchMangaHolder(view: View, adapter: GlobalSearchCardAdapter) :
|
|||
fun setImage(manga: Manga) {
|
||||
binding.itemImage.dispose()
|
||||
if (!manga.thumbnail_url.isNullOrEmpty()) {
|
||||
val request = ImageRequest.Builder(itemView.context).data(manga.cover())
|
||||
.placeholder(AR.color.transparent)
|
||||
.memoryCachePolicy(CachePolicy.DISABLED)
|
||||
.target(CoverViewTarget(binding.itemImage, binding.progress))
|
||||
.setExtras(MangaCoverFetcher.USE_CUSTOM_COVER_KEY, false)
|
||||
.build()
|
||||
itemView.context.imageLoader.enqueue(request)
|
||||
binding.itemImage.loadManga(manga.cover(), binding.progress)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package yokai.presentation.core.util.coil
|
||||
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import coil3.ImageLoader
|
||||
import coil3.imageLoader
|
||||
|
@ -7,6 +8,8 @@ import coil3.request.Disposable
|
|||
import coil3.request.ImageRequest
|
||||
import coil3.size.Precision
|
||||
import coil3.size.SizeResolver
|
||||
import coil3.target.ImageViewTarget
|
||||
import eu.kanade.tachiyomi.data.coil.CoverViewTarget
|
||||
import eu.kanade.tachiyomi.data.coil.LibraryMangaImageTarget
|
||||
import eu.kanade.tachiyomi.domain.manga.models.Manga
|
||||
import yokai.domain.manga.models.MangaCover
|
||||
|
@ -29,11 +32,14 @@ fun ImageView.loadManga(
|
|||
|
||||
fun ImageView.loadManga(
|
||||
cover: MangaCover,
|
||||
progress: View? = null,
|
||||
target: ImageViewTarget? = null,
|
||||
imageLoader: ImageLoader = context.imageLoader,
|
||||
builder: ImageRequest.Builder.() -> Unit = {},
|
||||
): Disposable {
|
||||
val request = ImageRequest.Builder(context)
|
||||
.data(cover)
|
||||
.target(target ?: CoverViewTarget(this, progress))
|
||||
.size(SizeResolver.ORIGINAL)
|
||||
.precision(Precision.INEXACT)
|
||||
.apply(builder)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue