add confirmation dialogs to some settings

This commit is contained in:
Bnyro 2022-07-29 08:21:08 +02:00
parent ba0263791c
commit 4070b9893c
7 changed files with 26 additions and 40 deletions

View File

@ -3,10 +3,8 @@ package com.github.libretube.preferences
import android.os.Bundle import android.os.Bundle
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.activities.SettingsActivity import com.github.libretube.activities.SettingsActivity
import com.github.libretube.dialogs.RequireRestartDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
class AdvancedSettings : PreferenceFragmentCompat() { class AdvancedSettings : PreferenceFragmentCompat() {
@ -18,13 +16,6 @@ class AdvancedSettings : PreferenceFragmentCompat() {
val settingsActivity = activity as SettingsActivity val settingsActivity = activity as SettingsActivity
settingsActivity.changeTopBarText(getString(R.string.advanced)) settingsActivity.changeTopBarText(getString(R.string.advanced))
val dataSaverMode = findPreference<SwitchPreferenceCompat>(PreferenceKeys.DATA_SAVER_MODE)
dataSaverMode?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
true
}
val resetSettings = findPreference<Preference>(PreferenceKeys.RESET_SETTINGS) val resetSettings = findPreference<Preference>(PreferenceKeys.RESET_SETTINGS)
resetSettings?.setOnPreferenceClickListener { resetSettings?.setOnPreferenceClickListener {
showResetDialog() showResetDialog()
@ -34,6 +25,9 @@ class AdvancedSettings : PreferenceFragmentCompat() {
private fun showResetDialog() { private fun showResetDialog() {
MaterialAlertDialogBuilder(requireContext()) MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.reset)
.setMessage(R.string.reset_message)
.setNegativeButton(getString(R.string.cancel)) { _, _ -> }
.setPositiveButton(R.string.reset) { _, _ -> .setPositiveButton(R.string.reset) { _, _ ->
// clear default preferences // clear default preferences
PreferenceHelper.clearPreferences() PreferenceHelper.clearPreferences()
@ -41,12 +35,8 @@ class AdvancedSettings : PreferenceFragmentCompat() {
// clear login token // clear login token
PreferenceHelper.setToken("") PreferenceHelper.setToken("")
val restartDialog = RequireRestartDialog() activity?.recreate()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
} }
.setNegativeButton(getString(R.string.cancel)) { _, _ -> }
.setTitle(R.string.reset)
.setMessage(R.string.reset_message)
.show() .show()
} }
} }

View File

@ -51,13 +51,6 @@ class AppearanceSettings : PreferenceFragmentCompat() {
true true
} }
val gridColumns = findPreference<ListPreference>(PreferenceKeys.GRID_COLUMNS)
gridColumns?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
true
}
val labelVisibilityMode = findPreference<ListPreference>(PreferenceKeys.LABEL_VISIBILITY) val labelVisibilityMode = findPreference<ListPreference>(PreferenceKeys.LABEL_VISIBILITY)
labelVisibilityMode?.setOnPreferenceChangeListener { _, _ -> labelVisibilityMode?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog() val restartDialog = RequireRestartDialog()

View File

@ -2,7 +2,6 @@ package com.github.libretube.preferences
import android.os.Bundle import android.os.Bundle
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat import androidx.preference.SwitchPreferenceCompat
import com.github.libretube.R import com.github.libretube.R
@ -18,13 +17,6 @@ class GeneralSettings : PreferenceFragmentCompat() {
val settingsActivity = activity as SettingsActivity val settingsActivity = activity as SettingsActivity
settingsActivity.changeTopBarText(getString(R.string.general)) settingsActivity.changeTopBarText(getString(R.string.general))
val region = findPreference<Preference>("region")
region?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
true
}
val language = findPreference<ListPreference>("language") val language = findPreference<ListPreference>("language")
language?.setOnPreferenceChangeListener { _, _ -> language?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog() val restartDialog = RequireRestartDialog()

View File

@ -5,6 +5,7 @@ import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.activities.SettingsActivity import com.github.libretube.activities.SettingsActivity
import com.google.android.material.dialog.MaterialAlertDialogBuilder
class HistorySettings : PreferenceFragmentCompat() { class HistorySettings : PreferenceFragmentCompat() {
@ -17,22 +18,34 @@ class HistorySettings : PreferenceFragmentCompat() {
// clear search history // clear search history
val clearHistory = findPreference<Preference>(PreferenceKeys.CLEAR_SEARCH_HISTORY) val clearHistory = findPreference<Preference>(PreferenceKeys.CLEAR_SEARCH_HISTORY)
clearHistory?.setOnPreferenceClickListener { clearHistory?.setOnPreferenceClickListener {
PreferenceHelper.removePreference("search_history") showClearDialog(R.string.clear_history, "search_history")
true true
} }
// clear watch history and positions // clear watch history and positions
val clearWatchHistory = findPreference<Preference>(PreferenceKeys.CLEAR_WATCH_HISTORY) val clearWatchHistory = findPreference<Preference>(PreferenceKeys.CLEAR_WATCH_HISTORY)
clearWatchHistory?.setOnPreferenceClickListener { clearWatchHistory?.setOnPreferenceClickListener {
PreferenceHelper.removePreference("watch_history") showClearDialog(R.string.clear_history, "watch_history")
true true
} }
// clear watch positions // clear watch positions
val clearWatchPositions = findPreference<Preference>(PreferenceKeys.CLEAR_WATCH_POSITIONS) val clearWatchPositions = findPreference<Preference>(PreferenceKeys.CLEAR_WATCH_POSITIONS)
clearWatchPositions?.setOnPreferenceClickListener { clearWatchPositions?.setOnPreferenceClickListener {
PreferenceHelper.removePreference("watch_positions") showClearDialog(R.string.reset_watch_positions, "watch_positions")
true 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()
}
} }

View File

@ -21,7 +21,6 @@ import com.github.libretube.dialogs.CustomInstanceDialog
import com.github.libretube.dialogs.DeleteAccountDialog import com.github.libretube.dialogs.DeleteAccountDialog
import com.github.libretube.dialogs.LoginDialog import com.github.libretube.dialogs.LoginDialog
import com.github.libretube.dialogs.LogoutDialog import com.github.libretube.dialogs.LogoutDialog
import com.github.libretube.dialogs.RequireRestartDialog
import com.github.libretube.util.PermissionHelper import com.github.libretube.util.PermissionHelper
import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.RetrofitInstance
import org.json.JSONObject import org.json.JSONObject
@ -120,14 +119,13 @@ class InstanceSettings : PreferenceFragmentCompat() {
// fetchInstance() // fetchInstance()
initCustomInstances(instance!!) initCustomInstances(instance!!)
instance.setOnPreferenceChangeListener { _, newValue -> instance.setOnPreferenceChangeListener { _, newValue ->
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
RetrofitInstance.url = newValue.toString() RetrofitInstance.url = newValue.toString()
if (!PreferenceHelper.getBoolean(PreferenceKeys.AUTH_INSTANCE_TOGGLE, false)) { if (!PreferenceHelper.getBoolean(PreferenceKeys.AUTH_INSTANCE_TOGGLE, false)) {
RetrofitInstance.authUrl = newValue.toString() RetrofitInstance.authUrl = newValue.toString()
logout() logout()
} }
RetrofitInstance.lazyMgr.reset() RetrofitInstance.lazyMgr.reset()
activity?.recreate()
true true
} }
@ -142,8 +140,7 @@ class InstanceSettings : PreferenceFragmentCompat() {
RetrofitInstance.authUrl = newValue.toString() RetrofitInstance.authUrl = newValue.toString()
RetrofitInstance.lazyMgr.reset() RetrofitInstance.lazyMgr.reset()
logout() logout()
val restartDialog = RequireRestartDialog() activity?.recreate()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
true true
} }
@ -155,8 +152,8 @@ class InstanceSettings : PreferenceFragmentCompat() {
// either use new auth url or the normal api url if auth instance disabled // either use new auth url or the normal api url if auth instance disabled
RetrofitInstance.authUrl = if (newValue == false) RetrofitInstance.url RetrofitInstance.authUrl = if (newValue == false) RetrofitInstance.url
else authInstance.value else authInstance.value
val restartDialog = RequireRestartDialog() RetrofitInstance.lazyMgr.reset()
restartDialog.show(childFragmentManager, "RequireRestartDialog") activity?.recreate()
true true
} }

View File

@ -265,4 +265,5 @@
<string name="best_quality">Best quality</string> <string name="best_quality">Best quality</string>
<string name="worst_quality">Worst quality</string> <string name="worst_quality">Worst quality</string>
<string name="default_subtitle_language">Default subtitle language</string> <string name="default_subtitle_language">Default subtitle language</string>
<string name="irreversible">Are you sure? This can\'t be undone!</string>
</resources> </resources>

View File

@ -45,7 +45,7 @@
<Preference <Preference
android:icon="@drawable/ic_reset" android:icon="@drawable/ic_reset"
app:key="reset_watch_positions" app:key="clear_watch_positions"
app:title="@string/reset_watch_positions" /> app:title="@string/reset_watch_positions" />
</PreferenceCategory> </PreferenceCategory>