From e3d7900cb75ebd86afac6c5c6c15c1d17352f9b2 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Mon, 1 Jun 2020 00:38:19 -0400 Subject: [PATCH] Added first beta of the E-Hentai Language filtering option --- .../data/preference/PreferenceKeys.kt | 2 + .../data/preference/PreferencesHelper.kt | 2 + .../ui/setting/SettingsEhController.kt | 94 ++++ .../main/java/exh/uconfig/EhUConfigBuilder.kt | 392 +++++++++++++++ .../main/res/layout/eh_dialog_languages.xml | 475 ++++++++++++++++++ 5 files changed, 965 insertions(+) create mode 100644 app/src/main/res/layout/eh_dialog_languages.xml diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt index 78af0f25b..16af3e607 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -246,4 +246,6 @@ object PreferenceKeys { const val eh_use_auto_webtoon = "eh_use_auto_webtoon" const val eh_watched_list_default_state = "eh_watched_list_default_state" + + const val eh_settings_languages = "eh_settings_languages" } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index c9edbdb99..17fe3e05e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -352,4 +352,6 @@ class PreferencesHelper(val context: Context) { fun eh_useAutoWebtoon() = flowPrefs.getBoolean(Keys.eh_use_auto_webtoon, true) fun eh_watchedListDefaultState() = flowPrefs.getBoolean(Keys.eh_watched_list_default_state, false) + + fun eh_settingsLanguages() = flowPrefs.getString(Keys.eh_settings_languages, "false,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false\nfalse,false,false") } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt index 743ff1ab6..1c70b31a6 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt @@ -2,11 +2,13 @@ package eu.kanade.tachiyomi.ui.setting import android.os.Handler import android.text.InputType +import android.util.Log import android.widget.Toast import androidx.preference.PreferenceScreen import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.WhichButton import com.afollestad.materialdialogs.actions.setActionButtonEnabled +import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.input.getInputField import com.afollestad.materialdialogs.input.input import com.bluelinelabs.conductor.RouterTransaction @@ -49,6 +51,57 @@ import exh.util.await import exh.util.trans import humanize.Humanize import java.util.Date +import kotlinx.android.synthetic.main.eh_dialog_languages.view.chinese_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.chinese_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.chinese_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.dutch_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.dutch_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.dutch_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.english_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.english_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.english_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.french_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.french_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.french_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.german_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.german_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.german_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.hungarian_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.hungarian_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.hungarian_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.italian_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.italian_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.italian_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.japanese_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.japanese_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.japanese_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.korean_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.korean_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.korean_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.not_available_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.not_available_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.not_available_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.other_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.other_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.other_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.polish_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.polish_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.polish_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.portuguese_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.portuguese_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.portuguese_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.russian_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.russian_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.russian_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.spanish_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.spanish_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.spanish_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.thai_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.thai_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.thai_translated +import kotlinx.android.synthetic.main.eh_dialog_languages.view.vietnamese_original +import kotlinx.android.synthetic.main.eh_dialog_languages.view.vietnamese_rewrite +import kotlinx.android.synthetic.main.eh_dialog_languages.view.vietnamese_translated import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.flow.launchIn @@ -229,6 +282,47 @@ class SettingsEhController : SettingsController() { } }.dependency = PreferenceKeys.eh_enableExHentai + preference { + title = "Language Filtering" + summary = "If you wish to hide galleries in certain languages from the gallery list and searches, select them in the dialog that will popup.\nNote that matching galleries will never appear regardless of your search query." + + onClick { + MaterialDialog(activity!!) + .title(text = "Language Filtering") + .customView(R.layout.eh_dialog_languages, scrollable = true) + .positiveButton(android.R.string.ok) { + val customView = it.view.contentLayout.customView!! + + val languages = listOfNotNull( + "${customView.japanese_original.isChecked}*${customView.japanese_translated.isChecked}*${customView.japanese_rewrite.isChecked}", + "${customView.english_original.isChecked}*${customView.english_translated.isChecked}*${customView.english_rewrite.isChecked}", + "${customView.chinese_original.isChecked}*${customView.chinese_translated.isChecked}*${customView.chinese_rewrite.isChecked}", + "${customView.dutch_original.isChecked}*${customView.dutch_translated.isChecked}*${customView.dutch_rewrite.isChecked}", + "${customView.french_original.isChecked}*${customView.french_translated.isChecked}*${customView.french_rewrite.isChecked}", + "${customView.german_original.isChecked}*${customView.german_translated.isChecked}*${customView.german_rewrite.isChecked}", + "${customView.hungarian_original.isChecked}*${customView.hungarian_translated.isChecked}*${customView.hungarian_rewrite.isChecked}", + "${customView.italian_original.isChecked}*${customView.italian_translated.isChecked}*${customView.italian_rewrite.isChecked}", + "${customView.korean_original.isChecked}*${customView.korean_translated.isChecked}*${customView.korean_rewrite.isChecked}", + "${customView.polish_original.isChecked}*${customView.polish_translated.isChecked}*${customView.polish_rewrite.isChecked}", + "${customView.portuguese_original.isChecked}*${customView.portuguese_translated.isChecked}*${customView.portuguese_rewrite.isChecked}", + "${customView.russian_original.isChecked}*${customView.russian_translated.isChecked}*${customView.russian_rewrite.isChecked}", + "${customView.spanish_original.isChecked}*${customView.spanish_translated.isChecked}*${customView.spanish_rewrite.isChecked}", + "${customView.thai_original.isChecked}*${customView.thai_translated.isChecked}*${customView.thai_rewrite.isChecked}", + "${customView.vietnamese_original.isChecked}*${customView.vietnamese_translated.isChecked}*${customView.vietnamese_rewrite.isChecked}", + "${customView.not_available_original.isChecked}*${customView.not_available_translated.isChecked}*${customView.not_available_rewrite.isChecked}", + "${customView.other_original.isChecked}*${customView.other_translated.isChecked}*${customView.other_rewrite.isChecked}" + ).joinToString("\n") + + Log.d("Test", languages) + + preferences.eh_settingsLanguages().set(languages) + + preferences.eh_settingsLanguages().reconfigure() + } + .show() + } + }.dependency = PreferenceKeys.eh_enableExHentai + switchPreference { defaultValue = false key = PreferenceKeys.eh_watched_list_default_state diff --git a/app/src/main/java/exh/uconfig/EhUConfigBuilder.kt b/app/src/main/java/exh/uconfig/EhUConfigBuilder.kt index 0d9a138d7..aecc6c97a 100644 --- a/app/src/main/java/exh/uconfig/EhUConfigBuilder.kt +++ b/app/src/main/java/exh/uconfig/EhUConfigBuilder.kt @@ -63,6 +63,8 @@ class EhUConfigBuilder { configItems += Entry.TagFilteringThreshold(prefs.ehTagFilterValue().get()) configItems += Entry.TagWatchingThreshold(prefs.ehTagWatchingValue().get()) + configItems += Entry.LanguageSystem().getLanguages(prefs.eh_settingsLanguages().get().split("\n")) + // Actually build form body val formBody = FormBody.Builder() configItems.forEach { @@ -151,6 +153,396 @@ object Entry { override val key = "wt" override val value = "$value" } + + class LanguageSystem { + + fun getLanguages(values: List): List { + return Japanese(values[0].split("*").map { it.toBoolean() }).configs + + English(values[1].split("*").map { it.toBoolean() }).configs + + Chinese(values[2].split("*").map { it.toBoolean() }).configs + + Dutch(values[3].split("*").map { it.toBoolean() }).configs + + French(values[4].split("*").map { it.toBoolean() }).configs + + German(values[5].split("*").map { it.toBoolean() }).configs + + Hungarian(values[6].split("*").map { it.toBoolean() }).configs + + Italian(values[7].split("*").map { it.toBoolean() }).configs + + Korean(values[8].split("*").map { it.toBoolean() }).configs + + Polish(values[9].split("*").map { it.toBoolean() }).configs + + Portuguese(values[10].split("*").map { it.toBoolean() }).configs + + Russian(values[11].split("*").map { it.toBoolean() }).configs + + Spanish(values[12].split("*").map { it.toBoolean() }).configs + + Thai(values[13].split("*").map { it.toBoolean() }).configs + + Vietnamese(values[14].split("*").map { it.toBoolean() }).configs + + NotAvailable(values[15].split("*").map { it.toBoolean() }).configs + + Other(values[16].split("*").map { it.toBoolean() }).configs + } + + class Japanese(values: List) { + + val configs = listOf( + Translated(values[1]), + Rewrite(values[2]) + ) + + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1024" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2048" + override val value = if (value) "checked" else "" + } + } + class English(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_1" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1025" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2049" + override val value = if (value) "checked" else "" + } + } + class Chinese(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_10" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1034" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2058" + override val value = if (value) "checked" else "" + } + } + + class Dutch(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_20" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1044" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2068" + override val value = if (value) "checked" else "" + } + } + + class French(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_30" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1054" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2078" + override val value = if (value) "checked" else "" + } + } + + class German(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_40" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1064" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2088" + override val value = if (value) "checked" else "" + } + } + + class Hungarian(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_50" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1074" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2098" + override val value = if (value) "checked" else "" + } + } + + class Italian(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_60" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1084" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2108" + override val value = if (value) "checked" else "" + } + } + + class Korean(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_70" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1094" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2118" + override val value = if (value) "checked" else "" + } + } + + class Polish(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_80" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1104" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2128" + override val value = if (value) "checked" else "" + } + } + + class Portuguese(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_90" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1114" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2138" + override val value = if (value) "checked" else "" + } + } + + class Russian(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_100" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1124" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2148" + override val value = if (value) "checked" else "" + } + } + + class Spanish(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_110" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1134" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2158" + override val value = if (value) "checked" else "" + } + } + + class Thai(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_120" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1144" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2168" + override val value = if (value) "checked" else "" + } + } + + class Vietnamese(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_130" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1154" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2178" + override val value = if (value) "checked" else "" + } + } + + class NotAvailable(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_254" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1278" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2302" + override val value = if (value) "checked" else "" + } + } + + class Other(values: List) { + + val configs = listOf( + Original(values[0]), + Translated(values[1]), + Rewrite(values[2]) + ) + + class Original(value: Boolean) : ConfigItem { + override val key = "xl_255" + override val value = if (value) "checked" else "" + } + class Translated(value: Boolean) : ConfigItem { + override val key = "xl_1279" + override val value = if (value) "checked" else "" + } + class Rewrite(value: Boolean) : ConfigItem { + override val key = "xl_2303" + override val value = if (value) "checked" else "" + } + } + } } interface ConfigItem { diff --git a/app/src/main/res/layout/eh_dialog_languages.xml b/app/src/main/res/layout/eh_dialog_languages.xml new file mode 100644 index 000000000..6265f5fb9 --- /dev/null +++ b/app/src/main/res/layout/eh_dialog_languages.xml @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file