[Android] Add more backup/restore preferences
Nicolas Pomepuy
git at videolan.org
Fri May 16 13:23:24 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Mon May 12 10:32:36 2025 +0200| [af8833bf0cbf0161a6baac21169a3a989be9cc84] | committer: Duncan McNamara
Add more backup/restore preferences
Including playback settings and equalizer bands
> https://code.videolan.org/videolan/vlc-android/commit/af8833bf0cbf0161a6baac21169a3a989be9cc84
---
.../vlc/gui/preferences/search/PreferenceParser.kt | 63 ++++++++++++++++++++++
1 file changed, 63 insertions(+)
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt b/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
index d01b312eef..79bf29f4bd 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
@@ -40,7 +40,23 @@ import com.squareup.moshi.Types
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import kotlinx.parcelize.Parcelize
+import org.videolan.tools.AUDIO_DELAY_GLOBAL
+import org.videolan.tools.AUDIO_PLAY_PROGRESS_MODE
import org.videolan.tools.CloseableUtils
+import org.videolan.tools.DISPLAY_UNDER_NOTCH
+import org.videolan.tools.KEY_INCOGNITO_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE
+import org.videolan.tools.KEY_INCOGNITO_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE
+import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL
+import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE
+import org.videolan.tools.KEY_PLAYBACK_SPEED_VIDEO_GLOBAL
+import org.videolan.tools.KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE
+import org.videolan.tools.KEY_SHOW_UPDATE
+import org.videolan.tools.KEY_SHOW_WHATS_NEW
+import org.videolan.tools.PREF_RESTORE_VIDEO_TIPS_SHOWN
+import org.videolan.tools.PREF_SHOW_VIDEO_SETTINGS_DISCLAIMER
+import org.videolan.tools.PREF_TIPS_SHOWN
+import org.videolan.tools.PREF_WIDGETS_TIPS_SHOWN
+import org.videolan.tools.SCREEN_ORIENTATION
import org.videolan.tools.Settings
import org.videolan.tools.putSingle
import org.videolan.tools.wrap
@@ -209,6 +225,7 @@ object PreferenceParser {
private fun getChangedPrefsJson(context: Context) = buildString {
append("{")
val allChangedPrefs = getAllChangedPrefs(context)
+ addAllOtherPrefs(context, allChangedPrefs)
for (allChangedPref in allChangedPrefs) {
when {
allChangedPref.second is Boolean || allChangedPref.second is Int || allChangedPref.second is Long -> append("\"${allChangedPref.first}\": ${allChangedPref.second}")
@@ -220,6 +237,40 @@ object PreferenceParser {
append("}")
}
+ val additionalSettings = arrayOf(
+ KEY_SHOW_UPDATE,
+ KEY_SHOW_WHATS_NEW,
+ AUDIO_DELAY_GLOBAL,
+ AUDIO_PLAY_PROGRESS_MODE,
+ KEY_PLAYBACK_SPEED_VIDEO_GLOBAL,
+ KEY_PLAYBACK_SPEED_AUDIO_GLOBAL,
+ KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE,
+ KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE,
+ KEY_INCOGNITO_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE,
+ KEY_INCOGNITO_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE,
+ SCREEN_ORIENTATION,
+ PREF_TIPS_SHOWN,
+ PREF_WIDGETS_TIPS_SHOWN,
+ PREF_RESTORE_VIDEO_TIPS_SHOWN,
+ PREF_SHOW_VIDEO_SETTINGS_DISCLAIMER,
+ DISPLAY_UNDER_NOTCH,
+
+ )
+ private fun addAllOtherPrefs(context: Context, pairs: ArrayList<Pair<String, Any>>) {
+ for ((key, value) in Settings.getInstance(context).all) {
+ if (key.startsWith("custom_equalizer_")) {
+ value?.let {
+ pairs.add(Pair(key, it))
+ }
+ }
+ if (key in additionalSettings) {
+ value?.let {
+ pairs.add(Pair(key, it))
+ }
+ }
+ }
+ }
+
/**
* Parse a preference xml resource to get a list of [PreferenceItem]
* @param context the context to be used to retrieve the preferences
@@ -365,6 +416,18 @@ object PreferenceParser {
}
}
}
+ //restore other settings
+ savedSettings?.forEach {
+ if (it.key.startsWith("custom_equalizer_")) {
+ newPrefs.putSingle(it.key, it.value)
+ }
+ }
+
+ savedSettings?.forEach { saved ->
+ additionalSettings.forEach {
+ if (it == saved.key) newPrefs.putSingle(it, saved.value)
+ }
+ }
}
}
}
More information about the Android
mailing list