Highlight original status and series type in edit manga dialog

This commit is contained in:
Jays2Kings 2022-04-09 13:12:05 -05:00
parent 39a2f4a243
commit 9e86556bb5
3 changed files with 56 additions and 0 deletions

View file

@ -24,10 +24,13 @@ import eu.kanade.tachiyomi.data.image.coil.MangaFetcher
import eu.kanade.tachiyomi.data.image.coil.loadManga import eu.kanade.tachiyomi.data.image.coil.loadManga
import eu.kanade.tachiyomi.databinding.EditMangaDialogBinding import eu.kanade.tachiyomi.databinding.EditMangaDialogBinding
import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.source.icon
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.util.isLocal import eu.kanade.tachiyomi.util.isLocal
import eu.kanade.tachiyomi.util.lang.chop 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.getResourceColor
import eu.kanade.tachiyomi.util.system.isInNightMode import eu.kanade.tachiyomi.util.system.isInNightMode
import eu.kanade.tachiyomi.util.system.materialAlertDialog import eu.kanade.tachiyomi.util.system.materialAlertDialog
@ -124,6 +127,15 @@ class EditMangaDialog : DialogController {
} }
} }
setGenreTags(manga.getGenres().orEmpty()) 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)) binding.mangaStatus.setSelection(manga.status.coerceIn(SManga.UNKNOWN, SManga.ON_HIATUS))
val oldType = manga.seriesType() val oldType = manga.seriesType()
binding.seriesType.setSelection(oldType - 1) binding.seriesType.setSelection(oldType - 1)

View file

@ -2,11 +2,13 @@ package eu.kanade.tachiyomi.util.system
import android.content.Context import android.content.Context
import android.content.res.Configuration import android.content.res.Configuration
import android.content.res.Resources
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.graphics.Canvas import android.graphics.Canvas
import android.graphics.Color import android.graphics.Color
import android.graphics.Rect import android.graphics.Rect
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable import android.graphics.drawable.GradientDrawable
@ -53,6 +55,17 @@ object ImageUtil {
return null 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 { fun isAnimatedAndSupported(stream: InputStream): Boolean {
try { try {
val type = getImageType(stream) ?: return false val type = getImageType(stream) ?: return false

View file

@ -30,6 +30,8 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) :
private var entries = emptyList<String>() private var entries = emptyList<String>()
var selectedPosition = 0 var selectedPosition = 0
private set private set
var originalPosition: Int? = null
var originalIcon: Drawable? = null
private var pref: Preference<Int>? = null private var pref: Preference<Int>? = null
private var prefOffset = 0 private var prefOffset = 0
private var popup: PopupMenu? = null private var popup: PopupMenu? = null
@ -47,6 +49,14 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) :
0.5f 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 var onItemSelectedListener: ((Int) -> Unit)? = null
set(value) { set(value) {
field = value field = value
@ -115,6 +125,7 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) :
it.title = it.title?.tintText(blendedAccent) it.title = it.title?.tintText(blendedAccent)
} }
} }
updateOriginalPositionMenu()
binding.detailView.text = entries.getOrNull(selection).orEmpty() binding.detailView.text = entries.getOrNull(selection).orEmpty()
} }
@ -253,10 +264,30 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) :
menuItem.title = menuItem.title =
menuItem.title?.tintText(blendedAccent) menuItem.title?.tintText(blendedAccent)
} }
updateOriginalPositionMenu()
this.popup = popup this.popup = popup
return 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? { private fun tintedCheck(): Drawable? {
return ContextCompat.getDrawable(context, R.drawable.ic_check_24dp)?.mutate()?.apply { return ContextCompat.getDrawable(context, R.drawable.ic_check_24dp)?.mutate()?.apply {
setTint(blendedAccent) setTint(blendedAccent)