Add source setting controllers to search settings, hide settings in the E-Hentai settings when not logged in

This commit is contained in:
Jobobby04 2020-09-24 13:50:49 -04:00
parent 1038913e2c
commit a903a48718
3 changed files with 73 additions and 24 deletions

View File

@ -18,6 +18,7 @@ import com.tfcporciuncula.flow.Preference
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.preference.PreferenceKeys import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.ui.webview.WebViewActivity import eu.kanade.tachiyomi.ui.webview.WebViewActivity
import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.defaultValue
import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.entriesRes
@ -191,7 +192,10 @@ class SettingsEhController : SettingsController() {
entryValues = arrayOf("0", "1") entryValues = arrayOf("0", "1")
onChange { preferences.useHentaiAtHome().reconfigure() } onChange { preferences.useHentaiAtHome().reconfigure() }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
switchPreference { switchPreference {
titleRes = R.string.show_japanese_titles titleRes = R.string.show_japanese_titles
@ -201,7 +205,10 @@ class SettingsEhController : SettingsController() {
defaultValue = false defaultValue = false
onChange { preferences.useJapaneseTitle().reconfigure() } onChange { preferences.useJapaneseTitle().reconfigure() }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
switchPreference { switchPreference {
titleRes = R.string.use_original_images titleRes = R.string.use_original_images
@ -211,7 +218,10 @@ class SettingsEhController : SettingsController() {
defaultValue = false defaultValue = false
onChange { preferences.eh_useOriginalImages().reconfigure() } onChange { preferences.eh_useOriginalImages().reconfigure() }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
preference { preference {
key = "pref_watched_tags" key = "pref_watched_tags"
@ -225,7 +235,10 @@ class SettingsEhController : SettingsController() {
} }
startActivity(intent) startActivity(intent)
} }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
preference { preference {
titleRes = R.string.tag_filtering_threshold titleRes = R.string.tag_filtering_threshold
@ -261,7 +274,10 @@ class SettingsEhController : SettingsController() {
.negativeButton(android.R.string.cancel) .negativeButton(android.R.string.cancel)
.show() .show()
} }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
preference { preference {
titleRes = R.string.tag_watching_threshhold titleRes = R.string.tag_watching_threshhold
@ -298,7 +314,10 @@ class SettingsEhController : SettingsController() {
.negativeButton(android.R.string.cancel) .negativeButton(android.R.string.cancel)
.show() .show()
} }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
preference { preference {
key = "pref_language_filtering" key = "pref_language_filtering"
@ -437,7 +456,10 @@ class SettingsEhController : SettingsController() {
} }
} }
} }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
preference { preference {
key = "pref_front_page_categories" key = "pref_front_page_categories"
@ -489,14 +511,20 @@ class SettingsEhController : SettingsController() {
} }
} }
} }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
switchPreference { switchPreference {
defaultValue = false defaultValue = false
key = PreferenceKeys.eh_watched_list_default_state key = PreferenceKeys.eh_watched_list_default_state
titleRes = R.string.watched_list_default titleRes = R.string.watched_list_default
summaryRes = R.string.watched_list_state_summary summaryRes = R.string.watched_list_state_summary
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
listPreference { listPreference {
defaultValue = "auto" defaultValue = "auto"
@ -521,7 +549,10 @@ class SettingsEhController : SettingsController() {
) )
onChange { preferences.imageQuality().reconfigure() } onChange { preferences.imageQuality().reconfigure() }
}.dependency = PreferenceKeys.eh_enableExHentai
preferences.enableExhentai().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
switchPreference { switchPreference {
titleRes = R.string.pref_enhanced_e_hentai_view titleRes = R.string.pref_enhanced_e_hentai_view

View File

@ -26,7 +26,7 @@ class SettingsMangaDexController :
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.mangadex_specific_settings titleRes = R.string.mangadex_specific_settings
if (mdex == null) router.popCurrentController() if (mdex == null) return@apply
val sourcePreference = MangaDexLoginPreference(context, mdex!!).apply { val sourcePreference = MangaDexLoginPreference(context, mdex!!).apply {
title = mdex!!.name + " Login" title = mdex!!.name + " Login"
key = getSourceKey(source.id) key = getSourceKey(source.id)
@ -43,7 +43,7 @@ class SettingsMangaDexController :
} }
} }
preferenceScreen.addPreference(sourcePreference) addPreference(sourcePreference)
listPreference { listPreference {
titleRes = R.string.mangadex_preffered_source titleRes = R.string.mangadex_preffered_source

View File

@ -7,19 +7,25 @@ import androidx.preference.Preference
import androidx.preference.PreferenceCategory import androidx.preference.PreferenceCategory
import androidx.preference.PreferenceGroup import androidx.preference.PreferenceGroup
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.setting.SettingsAdvancedController import eu.kanade.tachiyomi.ui.setting.SettingsAdvancedController
import eu.kanade.tachiyomi.ui.setting.SettingsBackupController import eu.kanade.tachiyomi.ui.setting.SettingsBackupController
import eu.kanade.tachiyomi.ui.setting.SettingsBrowseController import eu.kanade.tachiyomi.ui.setting.SettingsBrowseController
import eu.kanade.tachiyomi.ui.setting.SettingsController import eu.kanade.tachiyomi.ui.setting.SettingsController
import eu.kanade.tachiyomi.ui.setting.SettingsDownloadController import eu.kanade.tachiyomi.ui.setting.SettingsDownloadController
import eu.kanade.tachiyomi.ui.setting.SettingsEhController
import eu.kanade.tachiyomi.ui.setting.SettingsGeneralController import eu.kanade.tachiyomi.ui.setting.SettingsGeneralController
import eu.kanade.tachiyomi.ui.setting.SettingsLibraryController import eu.kanade.tachiyomi.ui.setting.SettingsLibraryController
import eu.kanade.tachiyomi.ui.setting.SettingsMangaDexController
import eu.kanade.tachiyomi.ui.setting.SettingsParentalControlsController import eu.kanade.tachiyomi.ui.setting.SettingsParentalControlsController
import eu.kanade.tachiyomi.ui.setting.SettingsReaderController import eu.kanade.tachiyomi.ui.setting.SettingsReaderController
import eu.kanade.tachiyomi.ui.setting.SettingsSecurityController import eu.kanade.tachiyomi.ui.setting.SettingsSecurityController
import eu.kanade.tachiyomi.ui.setting.SettingsTrackingController import eu.kanade.tachiyomi.ui.setting.SettingsTrackingController
import eu.kanade.tachiyomi.util.lang.launchNow import eu.kanade.tachiyomi.util.lang.launchNow
import eu.kanade.tachiyomi.util.system.isLTR import eu.kanade.tachiyomi.util.system.isLTR
import exh.md.utils.MdUtil
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import kotlin.reflect.KClass import kotlin.reflect.KClass
import kotlin.reflect.full.createInstance import kotlin.reflect.full.createInstance
@ -29,18 +35,30 @@ object SettingsSearchHelper {
/** /**
* All subclasses of `SettingsController` should be listed here, in order to have their preferences searchable. * All subclasses of `SettingsController` should be listed here, in order to have their preferences searchable.
*/ */
private val settingControllersList: List<KClass<out SettingsController>> = listOf( // SY -->
SettingsAdvancedController::class, private val settingControllersList: List<KClass<out SettingsController>> = {
SettingsBackupController::class, val controllers = mutableListOf(
SettingsBrowseController::class, SettingsAdvancedController::class,
SettingsDownloadController::class, SettingsBackupController::class,
SettingsGeneralController::class, SettingsBrowseController::class,
SettingsLibraryController::class, SettingsDownloadController::class,
SettingsParentalControlsController::class, SettingsGeneralController::class,
SettingsReaderController::class, SettingsLibraryController::class,
SettingsSecurityController::class, SettingsParentalControlsController::class,
SettingsTrackingController::class SettingsReaderController::class,
) SettingsSecurityController::class,
SettingsTrackingController::class
)
val preferences = Injekt.get<PreferencesHelper>()
if (MdUtil.getEnabledMangaDexs(preferences).isNotEmpty()) {
controllers += SettingsMangaDexController::class
}
if (preferences.eh_isHentaiEnabled().get()) {
controllers += SettingsEhController::class
}
controllers
}()
// SY <--
/** /**
* Must be called to populate `prefSearchResultList` * Must be called to populate `prefSearchResultList`