Add summaries to settings root

This commit is contained in:
Koitharu
2023-06-05 13:54:49 +03:00
parent 09f6dd9b4e
commit c42d0824b0
2 changed files with 53 additions and 2 deletions

View File

@@ -1,12 +1,56 @@
package org.koitharu.kotatsu.settings
import android.content.SharedPreferences
import android.os.Bundle
import android.view.View
import androidx.annotation.StringRes
import androidx.preference.Preference
import org.koitharu.kotatsu.BuildConfig
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.ui.BasePreferenceFragment
class RootSettingsFragment : BasePreferenceFragment(0) {
class RootSettingsFragment : BasePreferenceFragment(0), SharedPreferences.OnSharedPreferenceChangeListener {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_root)
bindPreferenceSummary("appearance", R.string.theme, R.string.list_mode, R.string.language)
bindPreferenceSummary("reader", R.string.read_mode, R.string.scale_mode, R.string.switch_pages)
bindPreferenceSummary("network", R.string.proxy, R.string.dns_over_https, R.string.prefetch_content)
bindPreferenceSummary("userdata", R.string.protect_application, R.string.backup_restore, R.string.data_deletion)
bindPreferenceSummary("downloads", R.string.manga_save_location, R.string.downloads_wifi_only)
bindPreferenceSummary("tracker", R.string.track_sources, R.string.notifications_settings)
bindPreferenceSummary("services", R.string.suggestions, R.string.sync, R.string.tracking)
findPreference<Preference>("about")?.summary = getString(R.string.app_version, BuildConfig.VERSION_NAME)
bindRemoteSourcesSummary()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
settings.subscribe(this)
}
override fun onDestroyView() {
settings.unsubscribe(this)
super.onDestroyView()
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
when (key) {
AppSettings.KEY_SOURCES_HIDDEN -> {
bindRemoteSourcesSummary()
}
}
}
private fun bindPreferenceSummary(key: String, @StringRes vararg items: Int) {
findPreference<Preference>(key)?.summary = items.joinToString { getString(it) }
}
private fun bindRemoteSourcesSummary() {
findPreference<Preference>(AppSettings.KEY_REMOTE_SOURCES)?.run {
val total = settings.remoteMangaSources.size
summary = getString(R.string.enabled_d_of_d, total - settings.hiddenSources.size, total)
}
}
}

View File

@@ -11,42 +11,49 @@
<PreferenceScreen
android:fragment="org.koitharu.kotatsu.settings.sources.SourcesListFragment"
android:icon="@drawable/ic_manga_source"
android:key="content"
android:key="remote_sources"
android:title="@string/remote_sources" />
<PreferenceScreen
android:fragment="org.koitharu.kotatsu.settings.ReaderSettingsFragment"
android:icon="@drawable/ic_book_page"
android:key="reader"
android:title="@string/reader_settings" />
<PreferenceScreen
android:fragment="org.koitharu.kotatsu.settings.NetworkSettingsFragment"
android:icon="@drawable/ic_web"
android:key="network"
android:title="@string/network" />
<PreferenceScreen
android:fragment="org.koitharu.kotatsu.settings.UserDataSettingsFragment"
android:icon="@drawable/ic_data_privacy"
android:key="userdata"
android:title="@string/data_and_privacy" />
<PreferenceScreen
android:fragment="org.koitharu.kotatsu.settings.DownloadsSettingsFragment"
android:icon="@drawable/ic_download"
android:key="downloads"
android:title="@string/downloads" />
<PreferenceScreen
android:fragment="org.koitharu.kotatsu.settings.tracker.TrackerSettingsFragment"
android:icon="@drawable/ic_feed"
android:key="tracker"
android:title="@string/check_for_new_chapters" />
<PreferenceScreen
android:fragment="org.koitharu.kotatsu.settings.ServicesSettingsFragment"
android:icon="@drawable/ic_services"
android:key="services"
android:title="@string/services" />
<PreferenceScreen
android:fragment="org.koitharu.kotatsu.settings.about.AboutSettingsFragment"
android:icon="@drawable/ic_info_outline"
android:key="about"
android:title="@string/about" />
</PreferenceScreen>