Comick: Localized title setting (#8111)
* Localized title preference * lint
This commit is contained in:
parent
99c8f52676
commit
8a14edfd48
@ -12,6 +12,9 @@ group_tags_off=List all tags together
|
||||
update_cover_title=Update Covers
|
||||
update_cover_on=Keep cover updated
|
||||
update_cover_off=Prefer first cover
|
||||
local_title_title=Translated Title
|
||||
local_title_on=if available
|
||||
local_title_off=Use the default title from the site
|
||||
score_position_title=Score Position in the Description
|
||||
score_position_top=Top
|
||||
score_position_middle=Middle
|
||||
|
@ -12,6 +12,9 @@ group_tags_off=Listar todas as tags juntas
|
||||
update_cover_title=Atualizar Capas
|
||||
update_cover_on=Manter capas atualizadas
|
||||
update_cover_off=Usar apenas a primeira capa
|
||||
local_title_title=Título Traduzido
|
||||
local_title_on=se disponível
|
||||
local_title_off=Usar o título padrão do site
|
||||
score_position_title=Posição da Nota na Descrição
|
||||
score_position_top=Topo
|
||||
score_position_middle=Meio
|
||||
|
@ -1,7 +1,7 @@
|
||||
ext {
|
||||
extName = 'Comick'
|
||||
extClass = '.ComickFactory'
|
||||
extVersionCode = 54
|
||||
extVersionCode = 55
|
||||
isNsfw = true
|
||||
}
|
||||
|
||||
|
@ -135,6 +135,20 @@ abstract class Comick(
|
||||
}
|
||||
}.also(screen::addPreference)
|
||||
|
||||
SwitchPreferenceCompat(screen.context).apply {
|
||||
key = LOCAL_TITLE_PREF
|
||||
title = intl["local_title_title"]
|
||||
summaryOff = intl["local_title_off"]
|
||||
summaryOn = intl["local_title_on"]
|
||||
setDefaultValue(LOCAL_TITLE_DEFAULT)
|
||||
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
preferences.edit()
|
||||
.putBoolean(LOCAL_TITLE_PREF, newValue as Boolean)
|
||||
.commit()
|
||||
}
|
||||
}.also(screen::addPreference)
|
||||
|
||||
ListPreference(screen.context).apply {
|
||||
key = SCORE_POSITION_PREF
|
||||
title = intl["score_position_title"]
|
||||
@ -182,6 +196,17 @@ abstract class Comick(
|
||||
private val SharedPreferences.updateCover: Boolean
|
||||
get() = getBoolean(FIRST_COVER_PREF, FIRST_COVER_DEFAULT)
|
||||
|
||||
private val SharedPreferences.localTitle: String
|
||||
get() = if (getBoolean(
|
||||
LOCAL_TITLE_PREF,
|
||||
LOCAL_TITLE_DEFAULT,
|
||||
)
|
||||
) {
|
||||
comickLang.lowercase()
|
||||
} else {
|
||||
"all"
|
||||
}
|
||||
|
||||
private val SharedPreferences.scorePosition: String
|
||||
get() = getString(SCORE_POSITION_PREF, SCORE_POSITION_DEFAULT) ?: SCORE_POSITION_DEFAULT
|
||||
|
||||
@ -437,6 +462,7 @@ abstract class Comick(
|
||||
showAlternativeTitles = preferences.showAlternativeTitles,
|
||||
covers = localCovers.ifEmpty { originalCovers }.ifEmpty { firstVol },
|
||||
groupTags = preferences.groupTags,
|
||||
titleLang = preferences.localTitle,
|
||||
)
|
||||
}
|
||||
return mangaData.toSManga(
|
||||
@ -444,6 +470,7 @@ abstract class Comick(
|
||||
scorePosition = preferences.scorePosition,
|
||||
showAlternativeTitles = preferences.showAlternativeTitles,
|
||||
groupTags = preferences.groupTags,
|
||||
titleLang = preferences.localTitle,
|
||||
)
|
||||
}
|
||||
|
||||
@ -571,6 +598,8 @@ abstract class Comick(
|
||||
private const val FIRST_COVER_DEFAULT = true
|
||||
private const val SCORE_POSITION_PREF = "ScorePosition"
|
||||
const val SCORE_POSITION_DEFAULT = "top"
|
||||
private const val LOCAL_TITLE_PREF = "LocalTitle"
|
||||
private const val LOCAL_TITLE_DEFAULT = false
|
||||
private const val LIMIT = 20
|
||||
private const val CHAPTERS_LIMIT = 99999
|
||||
}
|
||||
|
@ -40,11 +40,17 @@ class Manga(
|
||||
showAlternativeTitles: Boolean = SHOW_ALTERNATIVE_TITLES_DEFAULT,
|
||||
covers: List<MDcovers>? = null,
|
||||
groupTags: Boolean = GROUP_TAGS_DEFAULT,
|
||||
) =
|
||||
SManga.create().apply {
|
||||
titleLang: String,
|
||||
): SManga {
|
||||
val entryTitle = comic.altTitles.firstOrNull {
|
||||
titleLang != "all" && !it.lang.isNullOrBlank() && titleLang.startsWith(it.lang)
|
||||
}?.title ?: comic.title
|
||||
val titles = listOf(Title(title = comic.title)) + comic.altTitles
|
||||
|
||||
return SManga.create().apply {
|
||||
// appennding # at end as part of migration from slug to hid
|
||||
url = "/comic/${comic.hid}#"
|
||||
title = comic.title
|
||||
title = entryTitle
|
||||
description = buildString {
|
||||
if (scorePosition == "top") append(comic.fancyScore)
|
||||
val desc = comic.desc?.beautifyDescription()
|
||||
@ -60,7 +66,8 @@ class Manga(
|
||||
if (this.isNotEmpty()) append("\n\n")
|
||||
append("Alternative Titles:\n")
|
||||
append(
|
||||
comic.altTitles.mapNotNull { title ->
|
||||
titles.distinctBy { it.title }.filter { it.title != entryTitle }
|
||||
.mapNotNull { title ->
|
||||
title.title?.let { "• $it" }
|
||||
}.joinToString("\n"),
|
||||
)
|
||||
@ -97,6 +104,7 @@ class Manga(
|
||||
.filterNot { it.name.isNullOrBlank() || it.group.isNullOrBlank() }
|
||||
.joinToString { if (groupTags) "${it.group}:${it.name?.trim()}" else "${it.name?.trim()}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
@ -171,6 +179,7 @@ class MDcovers(
|
||||
@Serializable
|
||||
class Title(
|
||||
val title: String?,
|
||||
val lang: String? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
|
Loading…
x
Reference in New Issue
Block a user