improve delegated's Metadata view (#110)

* Fix more_info was preloaded with default color before being set correct color

* Remove the "meta" on delegated entries

* Fix title overlaps more-info in 8muses's metadata view

* better delegated genre's color
This commit is contained in:
Tran M. Cuong 2024-06-24 00:28:15 +07:00 committed by Cuong-Tran
parent a8728f332c
commit 4726126c6b
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
22 changed files with 95 additions and 51 deletions

View file

@ -17,6 +17,7 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import exh.metadata.MetadataUtil
import exh.metadata.metadata.EHentaiSearchMetadata
import exh.ui.metadata.adapters.MetadataUIUtil.bindDrawable
import exh.util.SourceTagsUtil.genreTextColor
import tachiyomi.core.common.i18n.pluralStringResource
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
@ -45,16 +46,16 @@ fun EHentaiDescription(
val binding = DescriptionAdapterEhBinding.bind(it)
binding.genre.text =
meta.genre?.let { MetadataUIUtil.getGenreAndColour(context, it) }
?.let {
binding.genre.setBackgroundColor(it.first)
it.second
meta.genre?.let { genre -> MetadataUIUtil.getGenreAndColour(context, genre) }
?.let { (genre, name) ->
binding.genre.setBackgroundColor(genre.color)
// KMK -->
binding.genre.setTextColor(genreTextColor(genre))
// KMK <--
name
}
?: meta.genre
?: context.stringResource(MR.strings.unknown)
// KMK -->
binding.genre.setTextColor(textColor)
// KMK <--
binding.visible.text = context.stringResource(SYMR.strings.is_visible, meta.visible ?: context.stringResource(MR.strings.unknown))
// KMK -->
@ -105,6 +106,7 @@ fun EHentaiDescription(
binding.rating.setTextColor(textColor)
binding.moreInfo.bindDrawable(context, R.drawable.ic_info_24dp, iconColor)
binding.moreInfo.text = context.stringResource(SYMR.strings.more_info)
binding.moreInfo.setTextColor(textColor)
// KMK <--

View file

@ -16,6 +16,7 @@ import exh.metadata.metadata.EightMusesSearchMetadata
import exh.ui.metadata.adapters.MetadataUIUtil.bindDrawable
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import tachiyomi.i18n.sy.SYMR
@Composable
fun EightMusesDescription(state: State.Success, openMetadataViewer: () -> Unit) {
@ -39,6 +40,7 @@ fun EightMusesDescription(state: State.Success, openMetadataViewer: () -> Unit)
binding.title.setTextColor(textColor)
binding.moreInfo.bindDrawable(context, R.drawable.ic_info_24dp, iconColor)
binding.moreInfo.text = context.stringResource(SYMR.strings.more_info)
binding.moreInfo.setTextColor(textColor)
// KMK <--

View file

@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import exh.metadata.metadata.HBrowseSearchMetadata
import exh.ui.metadata.adapters.MetadataUIUtil.bindDrawable
import tachiyomi.core.common.i18n.pluralStringResource
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.sy.SYMR
@Composable
@ -40,6 +41,7 @@ fun HBrowseDescription(state: State.Success, openMetadataViewer: () -> Unit) {
binding.pages.setTextColor(textColor)
binding.moreInfo.bindDrawable(context, R.drawable.ic_info_24dp, iconColor)
binding.moreInfo.text = context.stringResource(SYMR.strings.more_info)
binding.moreInfo.setTextColor(textColor)
// KMK <--

View file

@ -18,6 +18,8 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import exh.metadata.metadata.MangaDexSearchMetadata
import exh.ui.metadata.adapters.MetadataUIUtil.bindDrawable
import exh.ui.metadata.adapters.MetadataUIUtil.getRatingString
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.sy.SYMR
import kotlin.math.round
@Composable
@ -51,6 +53,7 @@ fun MangaDexDescription(state: State.Success, openMetadataViewer: () -> Unit) {
binding.rating.setTextColor(textColor)
binding.moreInfo.bindDrawable(context, R.drawable.ic_info_24dp, iconColor)
binding.moreInfo.text = context.stringResource(SYMR.strings.more_info)
binding.moreInfo.setTextColor(textColor)
// KMK <--

View file

@ -58,7 +58,7 @@ object MetadataUIUtil {
"Video" -> SourceTagsUtil.GenreColor.WESTERN_COLOR to SYMR.strings.video
else -> null
}?.let { (genreColor, stringId) ->
genreColor.color to context.stringResource(stringId)
genreColor to context.stringResource(stringId)
}
fun TextView.bindDrawable(

View file

@ -16,6 +16,7 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import exh.metadata.MetadataUtil
import exh.metadata.metadata.NHentaiSearchMetadata
import exh.ui.metadata.adapters.MetadataUIUtil.bindDrawable
import exh.util.SourceTagsUtil.genreTextColor
import tachiyomi.core.common.i18n.pluralStringResource
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
@ -46,14 +47,15 @@ fun NHentaiDescription(state: State.Success, openMetadataViewer: () -> Unit) {
}.let { tags ->
if (tags.isNotEmpty()) tags.joinToString(transform = { it.name }) else null
}.let { categoriesString ->
categoriesString?.let { MetadataUIUtil.getGenreAndColour(context, it) }?.let {
binding.genre.setBackgroundColor(it.first)
it.second
} ?: categoriesString ?: context.stringResource(MR.strings.unknown)
categoriesString?.let { genre -> MetadataUIUtil.getGenreAndColour(context, genre) }
?.let { (genre, name) ->
binding.genre.setBackgroundColor(genre.color)
// KMK -->
binding.genre.setTextColor(genreTextColor(genre))
// KMK <--
name
} ?: categoriesString ?: context.stringResource(MR.strings.unknown)
}
// KMK -->
binding.genre.setTextColor(textColor)
// KMK <--
meta.favoritesCount?.let {
if (it == 0L) return@let
@ -89,6 +91,7 @@ fun NHentaiDescription(state: State.Success, openMetadataViewer: () -> Unit) {
binding.id.setTextColor(textColor)
binding.moreInfo.bindDrawable(context, R.drawable.ic_info_24dp, iconColor)
binding.moreInfo.text = context.stringResource(SYMR.strings.more_info)
binding.moreInfo.setTextColor(textColor)
// KMK <--

View file

@ -16,6 +16,7 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreenModel.State
import eu.kanade.tachiyomi.util.system.copyToClipboard
import exh.metadata.metadata.PururinSearchMetadata
import exh.ui.metadata.adapters.MetadataUIUtil.bindDrawable
import exh.util.SourceTagsUtil.genreTextColor
import tachiyomi.core.common.i18n.pluralStringResource
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
@ -41,14 +42,15 @@ fun PururinDescription(state: State.Success, openMetadataViewer: () -> Unit) {
val binding = DescriptionAdapterPuBinding.bind(it)
binding.genre.text = meta.tags.find { it.namespace == PururinSearchMetadata.TAG_NAMESPACE_CATEGORY }.let { genre ->
genre?.let { MetadataUIUtil.getGenreAndColour(context, it.name) }?.let {
binding.genre.setBackgroundColor(it.first)
it.second
} ?: genre?.name ?: context.stringResource(MR.strings.unknown)
genre?.let { tag -> MetadataUIUtil.getGenreAndColour(context, tag.name) }
?.let { (genre, name) ->
binding.genre.setBackgroundColor(genre.color)
// KMK -->
binding.genre.setTextColor(genreTextColor(genre))
// KMK <--
name
} ?: genre?.name ?: context.stringResource(MR.strings.unknown)
}
// KMK -->
binding.genre.setTextColor(textColor)
// KMK <--
binding.uploader.text = meta.uploaderDisp ?: meta.uploader.orEmpty()
// KMK -->
@ -77,6 +79,7 @@ fun PururinDescription(state: State.Success, openMetadataViewer: () -> Unit) {
binding.rating.setTextColor(textColor)
binding.moreInfo.bindDrawable(context, R.drawable.ic_info_24dp, iconColor)
binding.moreInfo.text = context.stringResource(SYMR.strings.more_info)
binding.moreInfo.setTextColor(textColor)
// KMK <--

View file

@ -16,6 +16,7 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreenModel.State
import eu.kanade.tachiyomi.util.system.copyToClipboard
import exh.metadata.metadata.TsuminoSearchMetadata
import exh.ui.metadata.adapters.MetadataUIUtil.bindDrawable
import exh.util.SourceTagsUtil.genreTextColor
import tachiyomi.core.common.i18n.pluralStringResource
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
@ -41,13 +42,14 @@ fun TsuminoDescription(state: State.Success, openMetadataViewer: () -> Unit) {
if (meta == null || meta !is TsuminoSearchMetadata) return@AndroidView
val binding = DescriptionAdapterTsBinding.bind(it)
binding.genre.text = meta.category?.let { MetadataUIUtil.getGenreAndColour(context, it) }?.let {
binding.genre.setBackgroundColor(it.first)
it.second
} ?: meta.category ?: context.stringResource(MR.strings.unknown)
// KMK -->
binding.genre.setTextColor(textColor)
// KMK <--
binding.genre.text = meta.category?.let { genre -> MetadataUIUtil.getGenreAndColour(context, genre) }
?.let { (genre, name) ->
binding.genre.setBackgroundColor(genre.color)
// KMK -->
binding.genre.setTextColor(genreTextColor(genre))
// KMK <--
name
} ?: meta.category ?: context.stringResource(MR.strings.unknown)
binding.favorites.text = (meta.favorites ?: 0).toString()
// KMK -->
@ -80,6 +82,7 @@ fun TsuminoDescription(state: State.Success, openMetadataViewer: () -> Unit) {
binding.rating.setTextColor(textColor)
binding.moreInfo.bindDrawable(context, R.drawable.ic_info_24dp, iconColor)
binding.moreInfo.text = context.stringResource(SYMR.strings.more_info)
binding.moreInfo.setTextColor(textColor)
// KMK <--

View file

@ -1,6 +1,7 @@
package exh.util
import android.graphics.Color
import androidx.annotation.ColorInt
import exh.metadata.metadata.base.RaisedTag
import exh.source.EH_SOURCE_ID
import exh.source.EXH_SOURCE_ID
@ -89,21 +90,36 @@ object SourceTagsUtil {
private const val TAG_TYPE_EXCLUDE = 69 // why not
enum class GenreColor(val color: Int) {
DOUJINSHI_COLOR("#f44336"),
DOUJINSHI_COLOR("#ff614d"),
MANGA_COLOR("#ff9800"),
ARTIST_CG_COLOR("#fbc02d"),
GAME_CG_COLOR("#4caf50"),
WESTERN_COLOR("#8bc34a"),
NON_H_COLOR("#2196f3"),
IMAGE_SET_COLOR("#3f51b5"),
COSPLAY_COLOR("#9c27b0"),
ASIAN_PORN_COLOR("#9575cd"),
MISC_COLOR("#f06292"),
NON_H_COLOR("#2c9bf8"),
IMAGE_SET_COLOR("#3c4fb3"),
COSPLAY_COLOR("#921aa6"),
ASIAN_PORN_COLOR("#a685df"),
MISC_COLOR("#f36594"),
;
constructor(color: String) : this(Color.parseColor(color))
}
@ColorInt fun genreTextColor(genre: GenreColor): Int {
return when (genre) {
GenreColor.DOUJINSHI_COLOR -> Color.parseColor("#000000")
GenreColor.MANGA_COLOR -> Color.parseColor("#000000")
GenreColor.ARTIST_CG_COLOR -> Color.parseColor("#000000")
GenreColor.GAME_CG_COLOR -> Color.parseColor("#000000")
GenreColor.WESTERN_COLOR -> Color.parseColor("#000000")
GenreColor.NON_H_COLOR -> Color.parseColor("#000000")
GenreColor.IMAGE_SET_COLOR -> Color.parseColor("#FFFFFF")
GenreColor.COSPLAY_COLOR -> Color.parseColor("#FFFFFF")
GenreColor.ASIAN_PORN_COLOR -> Color.parseColor("#000000")
GenreColor.MISC_COLOR -> Color.parseColor("#000000")
}
}
fun getLocaleSourceUtil(language: String?) = when (language) {
"english", "eng" -> Locale("en")
"chinese" -> Locale("zh")

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -11,11 +12,13 @@
<com.google.android.material.textview.MaterialTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="8dp"
android:textAppearance="?attr/textAppearanceBodyMedium"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toStartOf="@+id/more_info"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -27,7 +30,7 @@
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:text="@string/more_info"
tools:ignore="SpeakableTextPresentCheck"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -50,7 +51,7 @@
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:text="@string/more_info"
tools:ignore="SpeakableTextPresentCheck"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View file

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pages"
@ -21,7 +23,7 @@
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:text="@string/more_info"
tools:ignore="SpeakableTextPresentCheck"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View file

@ -3,7 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/rating"
@ -40,7 +41,7 @@
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:text="@string/more_info"
tools:ignore="SpeakableTextPresentCheck"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -50,7 +51,7 @@
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:text="@string/more_info"
tools:ignore="SpeakableTextPresentCheck"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -50,7 +51,7 @@
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:text="@string/more_info"
tools:ignore="SpeakableTextPresentCheck"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -50,7 +51,7 @@
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:text="@string/more_info"
tools:ignore="SpeakableTextPresentCheck"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View file

@ -78,7 +78,7 @@ class EHentaiSearchMetadata : RaisedSearchMetadata() {
}
}
val description = "meta"
val description = null
return manga.copy(
url = key ?: manga.url,

View file

@ -28,7 +28,7 @@ class EightMusesSearchMetadata : RaisedSearchMetadata() {
val genres = tagsToGenreString()
val description = "meta"
val description = null
return manga.copy(
url = key,

View file

@ -37,7 +37,7 @@ class HBrowseSearchMetadata : RaisedSearchMetadata() {
val genres = tagsToGenreString()
val description = "meta"
val description = null
return manga.copy(
url = key ?: manga.url,

View file

@ -77,7 +77,7 @@ class NHentaiSearchMetadata : RaisedSearchMetadata() {
}
}
val description = "meta"
val description = null
return manga.copy(
url = key ?: manga.url,

View file

@ -43,7 +43,7 @@ class PururinSearchMetadata : RaisedSearchMetadata() {
val genres = tagsToGenreString()
val description = "meta"
val description = null
return manga.copy(
url = key ?: manga.url,

View file

@ -57,7 +57,7 @@ class TsuminoSearchMetadata : RaisedSearchMetadata() {
// Copy tags -> genres
val genres = tagsToGenreString()
val description = "meta"
val description = null
return manga.copy(
title = title ?: manga.title,