From dc999bacca9e312aab1de0882f262a38f6d33f15 Mon Sep 17 00:00:00 2001 From: Chopper <156493704+choppeh@users.noreply.github.com> Date: Sat, 20 Sep 2025 05:45:48 -0300 Subject: [PATCH] Manhuarm: Fix settings (#10648) Fix settings --- .../i18n/messages_manhuarm_en.properties | 6 ++- .../i18n/messages_manhuarm_pt_br.properties | 6 ++- src/all/manhuarm/build.gradle | 2 +- .../extension/all/manhuarm/Manhuarm.kt | 42 ++++++++++++++++++- .../extension/all/manhuarm/ManhuarmDto.kt | 18 ++++---- .../extension/all/manhuarm/ManhuarmUtils.kt | 1 + .../interceptors/ComposedImageInterceptor.kt | 1 + 7 files changed, 61 insertions(+), 15 deletions(-) diff --git a/src/all/manhuarm/assets/i18n/messages_manhuarm_en.properties b/src/all/manhuarm/assets/i18n/messages_manhuarm_en.properties index 779fbe9e3..d0cbda4eb 100644 --- a/src/all/manhuarm/assets/i18n/messages_manhuarm_en.properties +++ b/src/all/manhuarm/assets/i18n/messages_manhuarm_en.properties @@ -14,6 +14,8 @@ disable_translator_summary=Disable auto translation and enable source translatio translate_dialog_box_title=Translator translate_dialog_box_summary=Engine used to translate dialog boxes translate_dialog_box_toast=The translator has been changed to -enable_manga_details_translation_title=Enable translation of manga details -enable_manga_details_translation_summary=This option will slow down the loading of manga details chapter_unavailable_message=Chapter cannot be translated +dialog_box_scale_title=Dialog box scale +dialog_box_scale_default=Default +dialog_box_scale_summary=Customize the size of the dialog box. This can be useful if you want larger fonts. Setting a value greater than 1.0x will cause the text to overflow the expected dialog box +dialog_box_scale_message=Dialog box scale changed to %s diff --git a/src/all/manhuarm/assets/i18n/messages_manhuarm_pt_br.properties b/src/all/manhuarm/assets/i18n/messages_manhuarm_pt_br.properties index b58cd28c0..91425dd10 100644 --- a/src/all/manhuarm/assets/i18n/messages_manhuarm_pt_br.properties +++ b/src/all/manhuarm/assets/i18n/messages_manhuarm_pt_br.properties @@ -14,6 +14,8 @@ disable_translator_summary=Desativar tradução automática e ativar tradução translate_dialog_box_title=Tradutor translate_dialog_box_summary=Motor utilizado para traduzir caixas de diálogo translate_dialog_box_toast=O tradutor foi alterado para -enable_manga_details_translation_title=Habilitar tradução dos detalhes do manga -enable_manga_details_translation_summary=Esta opção tornará o carregamento dos detalhes do mangá mais lento chapter_unavailable_message=O capítulo não pode ser traduzido +dialog_box_scale_title=Escala da caixa de diálogo +dialog_box_scale_default=Padrão +dialog_box_scale_summary=Personalize o tamanho da caixa de diálogo. Isso pode ser útil se você desejar fontes maiores. Definir um valor maior que 1,0x fará com que o texto ultrapasse os limites da caixa de diálogo esperada +dialog_box_scale_message=A escala da caixa de diálogo foi alterada para %s diff --git a/src/all/manhuarm/build.gradle b/src/all/manhuarm/build.gradle index 2a7aee99d..365e5b04f 100644 --- a/src/all/manhuarm/build.gradle +++ b/src/all/manhuarm/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.ManhuarmFactory' themePkg = 'madara' baseUrl = 'https://manhuarm.com' - overrideVersionCode = 1 + overrideVersionCode = 2 isNsfw = true } diff --git a/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/Manhuarm.kt b/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/Manhuarm.kt index 4db837e76..760e31d7f 100644 --- a/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/Manhuarm.kt +++ b/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/Manhuarm.kt @@ -62,6 +62,10 @@ class Manhuarm( get() = preferences.getString(FONT_SIZE_PREF, DEFAULT_FONT_SIZE)!!.toInt() set(value) = preferences.edit().putString(FONT_SIZE_PREF, value.toString()).apply() + private var dialogBoxScale: Float + get() = preferences.getString(DIALOG_BOX_SCALE_PREF, language.dialogBoxScale.toString())!!.toFloat() + set(value) = preferences.edit().putString(DIALOG_BOX_SCALE_PREF, value.toString()).apply() + private var fontName: String get() = preferences.getString(FONT_NAME_PREF, language.fontName)!! set(value) = preferences.edit().putString(FONT_NAME_PREF, value).apply() @@ -79,12 +83,13 @@ class Manhuarm( baseLanguage = "en", availableLanguages = setOf("en", "es", "fr", "id", "it", "pt-BR"), classLoader = this::class.java.classLoader!!, - createMessageFileName = { createDefaultMessageFileName("${name.lowercase()}_${language.lang}") }, + createMessageFileName = { createDefaultMessageFileName("${name.lowercase()}_$it") }, ) private val settings get() = language.copy( fontSize = this@Manhuarm.fontSize, fontName = this@Manhuarm.fontName, + dialogBoxScale = this@Manhuarm.dialogBoxScale, disableWordBreak = this@Manhuarm.disableWordBreak, disableTranslator = this@Manhuarm.disableTranslator, disableFontSettings = this@Manhuarm.fontName == DEVICE_FONT, @@ -195,6 +200,8 @@ class Manhuarm( "80", "88", "96", ) + val scale = (0..10).map { 1f + it / 10f }.toTypedArray() + val fonts = arrayOf( i18n["font_name_device_title"] to DEVICE_FONT, "Anime Ace" to "animeace2_regular", @@ -234,6 +241,38 @@ class Manhuarm( } }.also(screen::addPreference) + ListPreference(screen.context).apply { + key = DIALOG_BOX_SCALE_PREF + title = i18n["dialog_box_scale_title"] + entries = scale.map { + "${it}x" + if (it == 1f) " - ${i18n["dialog_box_scale_default"]}" else "" + }.toTypedArray() + entryValues = scale.map(Float::toString).toTypedArray() + + summary = buildString { + appendLine(i18n["dialog_box_scale_summary"]) + append("\t* %s") + } + + setDefaultValue(dialogBoxScale.toString()) + + setOnPreferenceChange { _, newValue -> + val selected = newValue as String + val index = this.findIndexOfValue(selected) + val entry = entries[index] as String + + dialogBoxScale = selected.toFloat() + + Toast.makeText( + screen.context, + i18n["dialog_box_scale_message"].format(entry), + Toast.LENGTH_LONG, + ).show() + + true // It's necessary to update the user interface + } + }.also(screen::addPreference) + if (!language.disableFontSettings) { ListPreference(screen.context).apply { key = FONT_NAME_PREF @@ -345,6 +384,7 @@ class Manhuarm( const val DEVICE_FONT = "device:" private const val FONT_SIZE_PREF = "fontSizePref" private const val FONT_NAME_PREF = "fontNamePref" + private const val DIALOG_BOX_SCALE_PREF = "dialogBoxScalePref" private const val DISABLE_WORD_BREAK_PREF = "disableWordBreakPref" private const val DISABLE_TRANSLATOR_PREF = "disableTranslatorPref" private const val TRANSLATOR_PROVIDER_PREF = "translatorProviderPref" diff --git a/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/ManhuarmDto.kt b/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/ManhuarmDto.kt index 9ba189472..f30a8fd45 100644 --- a/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/ManhuarmDto.kt +++ b/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/ManhuarmDto.kt @@ -31,16 +31,16 @@ class PageDto( data class Dialog( val x: Float, val y: Float, - val width: Float, - val height: Float, + private val _width: Float, + private val _height: Float, val angle: Float = 0f, - val isBold: Boolean = false, - val isNewApi: Boolean = false, val textByLanguage: Map = emptyMap(), - val type: String = "normal", - private val fbColor: List = emptyList(), - private val bgColor: List = emptyList(), ) { + var scale: Float = 1F + + val height: Float get() = scale * _height + val width: Float get() = scale * _width + val text: String get() = textByLanguage["text"] ?: throw Exception("Dialog not found") fun getTextBy(language: Language) = when { !language.disableTranslator -> textByLanguage[language.origin] @@ -61,8 +61,8 @@ private object DialogListSerializer : buildJsonObject { put("x", coordinates[0]) put("y", coordinates[1]) - put("width", coordinates[2]) - put("height", coordinates[3]) + put("_width", coordinates[2]) + put("_height", coordinates[3]) put("textByLanguage", textByLanguage) } }, diff --git a/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/ManhuarmUtils.kt b/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/ManhuarmUtils.kt index aea5af653..2a458f4bd 100644 --- a/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/ManhuarmUtils.kt +++ b/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/ManhuarmUtils.kt @@ -7,6 +7,7 @@ data class Language( val target: String = lang, val origin: String = "en", val fontSize: Int = 28, + val dialogBoxScale: Float = 1f, val disableFontSettings: Boolean = false, val disableWordBreak: Boolean = false, val disableTranslator: Boolean = false, diff --git a/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/interceptors/ComposedImageInterceptor.kt b/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/interceptors/ComposedImageInterceptor.kt index d12b55c37..4e5ea361e 100644 --- a/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/interceptors/ComposedImageInterceptor.kt +++ b/src/all/manhuarm/src/eu/kanade/tachiyomi/extension/all/manhuarm/interceptors/ComposedImageInterceptor.kt @@ -58,6 +58,7 @@ class ComposedImageInterceptor( val canvas = Canvas(bitmap) dialogues.forEach { dialog -> + dialog.scale = language.dialogBoxScale val textPaint = createTextPaint(selectFontFamily()) val dialogBox = createDialogBox(dialog, textPaint) val y = getYAxis(textPaint, dialog, dialogBox)