From 4070b9893ccf4bc6b115eed876e7f0982ab33628 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 29 Jul 2022 08:21:08 +0200 Subject: [PATCH] add confirmation dialogs to some settings --- .../libretube/preferences/AdvancedSettings.kt | 18 ++++-------------- .../preferences/AppearanceSettings.kt | 7 ------- .../libretube/preferences/GeneralSettings.kt | 8 -------- .../libretube/preferences/HistorySettings.kt | 19 ++++++++++++++++--- .../libretube/preferences/InstanceSettings.kt | 11 ++++------- app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/history_settings.xml | 2 +- 7 files changed, 26 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/com/github/libretube/preferences/AdvancedSettings.kt b/app/src/main/java/com/github/libretube/preferences/AdvancedSettings.kt index 35cc1e7ed..557a6cd32 100644 --- a/app/src/main/java/com/github/libretube/preferences/AdvancedSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/AdvancedSettings.kt @@ -3,10 +3,8 @@ package com.github.libretube.preferences import android.os.Bundle import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat -import androidx.preference.SwitchPreferenceCompat import com.github.libretube.R import com.github.libretube.activities.SettingsActivity -import com.github.libretube.dialogs.RequireRestartDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder class AdvancedSettings : PreferenceFragmentCompat() { @@ -18,13 +16,6 @@ class AdvancedSettings : PreferenceFragmentCompat() { val settingsActivity = activity as SettingsActivity settingsActivity.changeTopBarText(getString(R.string.advanced)) - val dataSaverMode = findPreference(PreferenceKeys.DATA_SAVER_MODE) - dataSaverMode?.setOnPreferenceChangeListener { _, _ -> - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") - true - } - val resetSettings = findPreference(PreferenceKeys.RESET_SETTINGS) resetSettings?.setOnPreferenceClickListener { showResetDialog() @@ -34,6 +25,9 @@ class AdvancedSettings : PreferenceFragmentCompat() { private fun showResetDialog() { MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.reset) + .setMessage(R.string.reset_message) + .setNegativeButton(getString(R.string.cancel)) { _, _ -> } .setPositiveButton(R.string.reset) { _, _ -> // clear default preferences PreferenceHelper.clearPreferences() @@ -41,12 +35,8 @@ class AdvancedSettings : PreferenceFragmentCompat() { // clear login token PreferenceHelper.setToken("") - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") + activity?.recreate() } - .setNegativeButton(getString(R.string.cancel)) { _, _ -> } - .setTitle(R.string.reset) - .setMessage(R.string.reset_message) .show() } } diff --git a/app/src/main/java/com/github/libretube/preferences/AppearanceSettings.kt b/app/src/main/java/com/github/libretube/preferences/AppearanceSettings.kt index 81aece34c..c61c5b682 100644 --- a/app/src/main/java/com/github/libretube/preferences/AppearanceSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/AppearanceSettings.kt @@ -51,13 +51,6 @@ class AppearanceSettings : PreferenceFragmentCompat() { true } - val gridColumns = findPreference(PreferenceKeys.GRID_COLUMNS) - gridColumns?.setOnPreferenceChangeListener { _, _ -> - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") - true - } - val labelVisibilityMode = findPreference(PreferenceKeys.LABEL_VISIBILITY) labelVisibilityMode?.setOnPreferenceChangeListener { _, _ -> val restartDialog = RequireRestartDialog() diff --git a/app/src/main/java/com/github/libretube/preferences/GeneralSettings.kt b/app/src/main/java/com/github/libretube/preferences/GeneralSettings.kt index bbbba3f83..c40ed8427 100644 --- a/app/src/main/java/com/github/libretube/preferences/GeneralSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/GeneralSettings.kt @@ -2,7 +2,6 @@ package com.github.libretube.preferences import android.os.Bundle import androidx.preference.ListPreference -import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreferenceCompat import com.github.libretube.R @@ -18,13 +17,6 @@ class GeneralSettings : PreferenceFragmentCompat() { val settingsActivity = activity as SettingsActivity settingsActivity.changeTopBarText(getString(R.string.general)) - val region = findPreference("region") - region?.setOnPreferenceChangeListener { _, _ -> - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") - true - } - val language = findPreference("language") language?.setOnPreferenceChangeListener { _, _ -> val restartDialog = RequireRestartDialog() diff --git a/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt b/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt index 96160e3ac..885989ca7 100644 --- a/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt @@ -5,6 +5,7 @@ import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.github.libretube.R import com.github.libretube.activities.SettingsActivity +import com.google.android.material.dialog.MaterialAlertDialogBuilder class HistorySettings : PreferenceFragmentCompat() { @@ -17,22 +18,34 @@ class HistorySettings : PreferenceFragmentCompat() { // clear search history val clearHistory = findPreference(PreferenceKeys.CLEAR_SEARCH_HISTORY) clearHistory?.setOnPreferenceClickListener { - PreferenceHelper.removePreference("search_history") + showClearDialog(R.string.clear_history, "search_history") true } // clear watch history and positions val clearWatchHistory = findPreference(PreferenceKeys.CLEAR_WATCH_HISTORY) clearWatchHistory?.setOnPreferenceClickListener { - PreferenceHelper.removePreference("watch_history") + showClearDialog(R.string.clear_history, "watch_history") true } // clear watch positions val clearWatchPositions = findPreference(PreferenceKeys.CLEAR_WATCH_POSITIONS) clearWatchPositions?.setOnPreferenceClickListener { - PreferenceHelper.removePreference("watch_positions") + showClearDialog(R.string.reset_watch_positions, "watch_positions") true } } + + private fun showClearDialog(title: Int, preferenceKey: String) { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(title) + .setMessage(R.string.irreversible) + .setNegativeButton(getString(R.string.cancel)) { _, _ -> } + .setPositiveButton(R.string.okay) { _, _ -> + // clear the selected preference preferences + PreferenceHelper.removePreference(preferenceKey) + } + .show() + } } diff --git a/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt b/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt index efa881c08..d2d82c013 100644 --- a/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt @@ -21,7 +21,6 @@ import com.github.libretube.dialogs.CustomInstanceDialog import com.github.libretube.dialogs.DeleteAccountDialog import com.github.libretube.dialogs.LoginDialog import com.github.libretube.dialogs.LogoutDialog -import com.github.libretube.dialogs.RequireRestartDialog import com.github.libretube.util.PermissionHelper import com.github.libretube.util.RetrofitInstance import org.json.JSONObject @@ -120,14 +119,13 @@ class InstanceSettings : PreferenceFragmentCompat() { // fetchInstance() initCustomInstances(instance!!) instance.setOnPreferenceChangeListener { _, newValue -> - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") RetrofitInstance.url = newValue.toString() if (!PreferenceHelper.getBoolean(PreferenceKeys.AUTH_INSTANCE_TOGGLE, false)) { RetrofitInstance.authUrl = newValue.toString() logout() } RetrofitInstance.lazyMgr.reset() + activity?.recreate() true } @@ -142,8 +140,7 @@ class InstanceSettings : PreferenceFragmentCompat() { RetrofitInstance.authUrl = newValue.toString() RetrofitInstance.lazyMgr.reset() logout() - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") + activity?.recreate() true } @@ -155,8 +152,8 @@ class InstanceSettings : PreferenceFragmentCompat() { // either use new auth url or the normal api url if auth instance disabled RetrofitInstance.authUrl = if (newValue == false) RetrofitInstance.url else authInstance.value - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") + RetrofitInstance.lazyMgr.reset() + activity?.recreate() true } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f60c5d1c0..41dcfbc47 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -265,4 +265,5 @@ Best quality Worst quality Default subtitle language + Are you sure? This can\'t be undone! \ No newline at end of file diff --git a/app/src/main/res/xml/history_settings.xml b/app/src/main/res/xml/history_settings.xml index 71f1b9df8..ec13f6005 100644 --- a/app/src/main/res/xml/history_settings.xml +++ b/app/src/main/res/xml/history_settings.xml @@ -45,7 +45,7 @@