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 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<SwitchPreferenceCompat>(PreferenceKeys.DATA_SAVER_MODE)
dataSaverMode?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
true
}
val resetSettings = findPreference<Preference>(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()
}
}

View File

@ -51,13 +51,6 @@ class AppearanceSettings : PreferenceFragmentCompat() {
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)
labelVisibilityMode?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog()

View File

@ -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<Preference>("region")
region?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
true
}
val language = findPreference<ListPreference>("language")
language?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog()

View File

@ -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<Preference>(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<Preference>(PreferenceKeys.CLEAR_WATCH_HISTORY)
clearWatchHistory?.setOnPreferenceClickListener {
PreferenceHelper.removePreference("watch_history")
showClearDialog(R.string.clear_history, "watch_history")
true
}
// clear watch positions
val clearWatchPositions = findPreference<Preference>(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()
}
}

View File

@ -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
}

View File

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

View File

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