From 6a32837a53099b148412de0ea1e41da5adb75bf3 Mon Sep 17 00:00:00 2001 From: septs Date: Sun, 17 Nov 2024 14:11:08 +0800 Subject: [PATCH] refactor: settings fragment click handling --- .../im/angry/openeuicc/ui/SettingsFragment.kt | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt index 89963cb..76d7790 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt @@ -39,24 +39,7 @@ class SettingsFragment: PreferenceFragmentCompat() { } findPreference("pref_info_app_version") - ?.apply { - summary = requireContext().selfAppVersion - - // Enable developer options when this is clicked for 7 times - setOnPreferenceClickListener(this@SettingsFragment::onAppVersionClicked) - } - - findPreference("pref_info_source_code") - ?.setOnPreferenceClickListener { - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(it.summary.toString()))) - true - } - - findPreference("pref_advanced_logs") - ?.setOnPreferenceClickListener { - startActivity(Intent(requireContext(), LogsActivity::class.java)) - true - } + ?.summary = requireContext().selfAppVersion findPreference("pref_notifications_download") ?.bindBooleanFlow(preferenceRepository.notificationDownloadFlow, PreferenceKeys.NOTIFICATION_DOWNLOAD) @@ -85,8 +68,26 @@ class SettingsFragment: PreferenceFragmentCompat() { setupRootViewInsets(requireView().requireViewById(androidx.preference.R.id.recycler_view)) } - @Suppress("UNUSED_PARAMETER") - private fun onAppVersionClicked(pref: Preference): Boolean { + override fun onPreferenceTreeClick(preference: Preference) = when (preference.key) { + "pref_advanced_logs" -> { + startActivity(Intent(requireContext(), LogsActivity::class.java)) + true + } + + "pref_info_app_version" -> { + // Enable developer options when this is clicked for 7 times + this.onAppVersionClicked() + } + + "pref_info_source_code" -> { + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(preference.summary.toString()))) + true + } + + else -> super.onPreferenceTreeClick(preference) + } + + private fun onAppVersionClicked(): Boolean { if (developerPref.isVisible) return false val now = System.currentTimeMillis() if (now - lastClickTimestamp >= 1000) { -- 2.45.3