diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt index e7e14abad2..7069bf41de 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt @@ -24,10 +24,13 @@ import eu.kanade.tachiyomi.data.image.coil.MangaFetcher import eu.kanade.tachiyomi.data.image.coil.loadManga import eu.kanade.tachiyomi.databinding.EditMangaDialogBinding import eu.kanade.tachiyomi.source.LocalSource +import eu.kanade.tachiyomi.source.icon import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.util.isLocal import eu.kanade.tachiyomi.util.lang.chop +import eu.kanade.tachiyomi.util.system.ImageUtil +import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.getResourceColor import eu.kanade.tachiyomi.util.system.isInNightMode import eu.kanade.tachiyomi.util.system.materialAlertDialog @@ -124,6 +127,15 @@ class EditMangaDialog : DialogController { } } setGenreTags(manga.getGenres().orEmpty()) + if (!isLocal) { + binding.mangaStatus.originalPosition = manga.originalStatus + binding.seriesType.originalPosition = manga.seriesType(true) - 1 + infoController.presenter.source.icon()?.let { icon -> + val bitD = ImageUtil.resizeBitMapDrawable(icon, resources, 24.dpToPx) + binding.mangaStatus.originalIcon = bitD ?: icon + binding.seriesType.originalIcon = bitD ?: icon + } + } binding.mangaStatus.setSelection(manga.status.coerceIn(SManga.UNKNOWN, SManga.ON_HIATUS)) val oldType = manga.seriesType() binding.seriesType.setSelection(oldType - 1) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt index 9de3e9b1c2..e20c52d56c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt @@ -2,11 +2,13 @@ package eu.kanade.tachiyomi.util.system import android.content.Context import android.content.res.Configuration +import android.content.res.Resources import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Color import android.graphics.Rect +import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.graphics.drawable.GradientDrawable @@ -53,6 +55,17 @@ object ImageUtil { return null } + fun resizeBitMapDrawable(drawable: Drawable, resources: Resources?, size: Int): Drawable? { + val b = (drawable as? BitmapDrawable)?.bitmap + val bitmapResized: Bitmap? = if (b != null) { + Bitmap.createScaledBitmap(b, size, size, false) + } else { + null + } + return if (bitmapResized != null) BitmapDrawable(resources, bitmapResized) + else null + } + fun isAnimatedAndSupported(stream: InputStream): Boolean { try { val type = getImageType(stream) ?: return false diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/MaterialSpinnerView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/MaterialSpinnerView.kt index 671a5bc2be..7b718ff329 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/MaterialSpinnerView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/MaterialSpinnerView.kt @@ -30,6 +30,8 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) : private var entries = emptyList() var selectedPosition = 0 private set + var originalPosition: Int? = null + var originalIcon: Drawable? = null private var pref: Preference? = null private var prefOffset = 0 private var popup: PopupMenu? = null @@ -47,6 +49,14 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) : 0.5f ) + private val slightAccent by lazy { + ColorUtils.blendARGB( + context.getResourceColor(R.attr.colorSecondary), + context.getResourceColor(R.attr.colorOnBackground), + 0.9f + ) + } + var onItemSelectedListener: ((Int) -> Unit)? = null set(value) { field = value @@ -115,6 +125,7 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) : it.title = it.title?.tintText(blendedAccent) } } + updateOriginalPositionMenu() binding.detailView.text = entries.getOrNull(selection).orEmpty() } @@ -253,10 +264,30 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) : menuItem.title = menuItem.title?.tintText(blendedAccent) } + updateOriginalPositionMenu() this.popup = popup return popup } + private fun updateOriginalPositionMenu() { + popup ?: return + val originalPosition = originalPosition ?: return + if (originalPosition != selectedPosition && + originalPosition >= 0 && originalPosition < popup?.menu?.size() ?: 0 + ) { + popup?.menu?.getItem(originalPosition)?.let { menuItem -> + menuItem.icon = tintedOG() + menuItem + } + } + } + + private fun tintedOG(): Drawable? { + return originalIcon ?: ContextCompat.getDrawable(context, R.drawable.ic_browse_outline_24dp)?.mutate()?.apply { + setTint(slightAccent) + } + } + private fun tintedCheck(): Drawable? { return ContextCompat.getDrawable(context, R.drawable.ic_check_24dp)?.mutate()?.apply { setTint(blendedAccent)