
(cherry picked from commit 8680accd8e6f458a662dd5454bbcdcde482ce0a7) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt # app/src/main/res/layout/reader_activity.xml
86 lines
3.7 KiB
Kotlin
86 lines
3.7 KiB
Kotlin
package exh.ui.metadata.adapters
|
|
|
|
import android.content.Context
|
|
import android.graphics.Color
|
|
import android.widget.TextView
|
|
import androidx.annotation.AttrRes
|
|
import androidx.annotation.ColorInt
|
|
import androidx.annotation.DrawableRes
|
|
import androidx.annotation.FloatRange
|
|
import androidx.core.content.ContextCompat
|
|
import androidx.core.graphics.alpha
|
|
import androidx.core.graphics.blue
|
|
import androidx.core.graphics.green
|
|
import androidx.core.graphics.red
|
|
import eu.kanade.tachiyomi.source.R
|
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
|
import exh.util.SourceTagsUtil
|
|
import kotlin.math.roundToInt
|
|
|
|
object MetadataUIUtil {
|
|
fun getRatingString(context: Context, @FloatRange(from = 0.0, to = 10.0) rating: Float? = null) = when (rating?.roundToInt()) {
|
|
0 -> R.string.rating0
|
|
1 -> R.string.rating1
|
|
2 -> R.string.rating2
|
|
3 -> R.string.rating3
|
|
4 -> R.string.rating4
|
|
5 -> R.string.rating5
|
|
6 -> R.string.rating6
|
|
7 -> R.string.rating7
|
|
8 -> R.string.rating8
|
|
9 -> R.string.rating9
|
|
10 -> R.string.rating10
|
|
else -> R.string.no_rating
|
|
}.let { context.getString(it) }
|
|
|
|
fun getGenreAndColour(context: Context, genre: String) = when (genre) {
|
|
"doujinshi", "Doujinshi" -> SourceTagsUtil.GenreColor.DOUJINSHI_COLOR to R.string.doujinshi
|
|
"manga", "Japanese Manga", "Manga" -> SourceTagsUtil.GenreColor.MANGA_COLOR to R.string.entry_type_manga
|
|
"artistcg", "artist CG", "artist-cg", "Artist CG" -> SourceTagsUtil.GenreColor.ARTIST_CG_COLOR to R.string.artist_cg
|
|
"gamecg", "game CG", "game-cg", "Game CG" -> SourceTagsUtil.GenreColor.GAME_CG_COLOR to R.string.game_cg
|
|
"western" -> SourceTagsUtil.GenreColor.WESTERN_COLOR to R.string.western
|
|
"non-h", "non-H" -> SourceTagsUtil.GenreColor.NON_H_COLOR to R.string.non_h
|
|
"imageset", "image Set" -> SourceTagsUtil.GenreColor.IMAGE_SET_COLOR to R.string.image_set
|
|
"cosplay" -> SourceTagsUtil.GenreColor.COSPLAY_COLOR to R.string.cosplay
|
|
"asianporn", "asian Porn" -> SourceTagsUtil.GenreColor.ASIAN_PORN_COLOR to R.string.asian_porn
|
|
"misc" -> SourceTagsUtil.GenreColor.MISC_COLOR to R.string.misc
|
|
"Korean Manhwa" -> SourceTagsUtil.GenreColor.ARTIST_CG_COLOR to R.string.entry_type_manhwa
|
|
"Chinese Manhua" -> SourceTagsUtil.GenreColor.GAME_CG_COLOR to R.string.entry_type_manhua
|
|
"Comic" -> SourceTagsUtil.GenreColor.WESTERN_COLOR to R.string.entry_type_comic
|
|
"artbook" -> SourceTagsUtil.GenreColor.IMAGE_SET_COLOR to R.string.artbook
|
|
"webtoon" -> SourceTagsUtil.GenreColor.NON_H_COLOR to R.string.entry_type_webtoon
|
|
"Video" -> SourceTagsUtil.GenreColor.WESTERN_COLOR to R.string.video
|
|
else -> null
|
|
}?.let { (genreColor, stringId) ->
|
|
genreColor.color to context.getString(stringId)
|
|
}
|
|
|
|
fun TextView.bindDrawable(context: Context, @DrawableRes drawable: Int) {
|
|
ContextCompat.getDrawable(context, drawable)?.apply {
|
|
setTint(context.getResourceColor(R.attr.colorAccent))
|
|
setBounds(0, 0, 20.dpToPx, 20.dpToPx)
|
|
setCompoundDrawables(this, null, null, null)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns the color for the given attribute.
|
|
*
|
|
* @param resource the attribute.
|
|
* @param alphaFactor the alpha number [0,1].
|
|
*/
|
|
@ColorInt
|
|
fun Context.getResourceColor(@AttrRes resource: Int, alphaFactor: Float = 1f): Int {
|
|
val typedArray = obtainStyledAttributes(intArrayOf(resource))
|
|
val color = typedArray.getColor(0, 0)
|
|
typedArray.recycle()
|
|
|
|
if (alphaFactor < 1f) {
|
|
val alpha = (color.alpha * alphaFactor).roundToInt()
|
|
return Color.argb(alpha, color.red, color.green, color.blue)
|
|
}
|
|
|
|
return color
|
|
}
|
|
}
|