mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Highlight original status and series type in edit manga dialog
This commit is contained in:
parent
39a2f4a243
commit
9e86556bb5
3 changed files with 56 additions and 0 deletions
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue