[Android] Properly save and restore the equalizer in the settings backup/export
Nicolas Pomepuy
git at videolan.org
Fri Jul 25 11:46:44 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Wed Jul 23 14:55:30 2025 +0200| [6d861014d3fc6f56d5826e05223e335119b9cc10] | committer: Nicolas Pomepuy
Properly save and restore the equalizer in the settings backup/export
> https://code.videolan.org/videolan/vlc-android/commit/6d861014d3fc6f56d5826e05223e335119b9cc10
---
.../vlc/gui/preferences/search/PreferenceParser.kt | 8 ++++--
.../src/org/videolan/vlc/util/EqualizerUtil.kt | 30 +++++++++++++++-------
2 files changed, 27 insertions(+), 11 deletions(-)
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 4a0f00f7e2..bcccb69a48 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
@@ -80,6 +80,8 @@ import org.videolan.vlc.providers.medialibrary.PlaylistsProvider
import org.videolan.vlc.providers.medialibrary.TracksProvider
import org.videolan.vlc.providers.medialibrary.VideoGroupsProvider
import org.videolan.vlc.providers.medialibrary.VideosProvider
+import org.videolan.vlc.util.EqualizerExport
+import org.videolan.vlc.util.EqualizerUtil
import org.videolan.vlc.util.FileUtils
import org.videolan.vlc.util.VersionMigration
import org.videolan.vlc.util.share
@@ -330,7 +332,7 @@ object PreferenceParser {
settingsEntries.add(SettingEntry(setting.key, it, SettingType.getFromAny(it)))
}
}
- val settingsBackup = SettingsBackup(settingsEntries, VersionMigration.getCurrentVersion())
+ val settingsBackup = SettingsBackup(settingsEntries, EqualizerUtil.getEqualizerExport(context), VersionMigration.getCurrentVersion())
val moshi = Moshi.Builder().build()
val jsonAdapter: JsonAdapter<SettingsBackup> = moshi.adapter(SettingsBackup::class.java)
return jsonAdapter.toJson(settingsBackup)!!
@@ -525,6 +527,8 @@ object PreferenceParser {
}
}
+ EqualizerUtil.importAll(activity, savedSettings.equalizers, null)
+
//wait a bit for the file to be available to be deleted
delay(100)
@@ -544,7 +548,7 @@ data class PreferenceItem(val key: String, val parentScreen: Int, val title: Str
-class SettingsBackup(val settings: List<SettingEntry>, val version: Int)
+class SettingsBackup(val settings: List<SettingEntry>, val equalizers: EqualizerExport, val version: Int)
class SettingEntry (val key: String, val value: Any, val type: SettingType)
diff --git a/application/vlc-android/src/org/videolan/vlc/util/EqualizerUtil.kt b/application/vlc-android/src/org/videolan/vlc/util/EqualizerUtil.kt
index aa3e4c4bc7..6ea8ad548f 100644
--- a/application/vlc-android/src/org/videolan/vlc/util/EqualizerUtil.kt
+++ b/application/vlc-android/src/org/videolan/vlc/util/EqualizerUtil.kt
@@ -68,18 +68,18 @@ object EqualizerUtil {
}
}
- fun getEqualizerExportString(context: Context): String {
+ fun getEqualizerExport(context: Context): EqualizerExport {
val customEqualizers = EqualizerRepository.getInstance(context).getCustomEqualizers()
val defaultEqualizers = EqualizerRepository.getInstance(context).getDefaultEqualizers()
- val equalizerExport = EqualizerExport(
+ return EqualizerExport(
customEqualizers,
EqualizerRepository.getInstance(context).getCurrentEqualizer(context).equalizerEntry.name,
defaultEqualizers.map { EqualizerState(it.equalizerEntry.name, it.equalizerEntry.isDisabled) }
)
-
- return JsonUtil.convertToJson(equalizerExport)
}
+ fun getEqualizerExportString(context: Context) = JsonUtil.convertToJson(getEqualizerExport(context))
+
fun escapeString(string: String): String? {
val moshi = Moshi
.Builder()
@@ -87,14 +87,15 @@ object EqualizerUtil {
return moshi.adapter(String::class.java).toJson(string)
}
+
/**
- * Import all the custom equalizers
+ * Import all the custom equalizers and states
*
* @param context the context to be used
- * @param json the json string to be imported
+ * @param equalizerExport the equalizer export to be imported
+ * @param listener the listener to be called when the import is finished
*/
- suspend fun importAll(context: Context, json:String, listener: (id: Long) -> Unit) = withContext(Dispatchers.IO) {
- val equalizerExport = JsonUtil.getEqualizersFromJson(json)
+ suspend fun importAll(context: Context, equalizerExport:EqualizerExport, listener: ((id: Long) -> Unit)?) = withContext(Dispatchers.IO) {
val equalizerRepository = EqualizerRepository.getInstance(context)
equalizerExport.equalizers.forEach { equalizer ->
equalizer.equalizerEntry.id = 0
@@ -108,7 +109,18 @@ object EqualizerUtil {
equalizerRepository.addOrUpdateEqualizerWithBands(context, equalizer.copy(equalizerEntry = equalizer.equalizerEntry.copy(isDisabled = it.disabled).apply { id = equalizer.equalizerEntry.id }))
}
val currentEq = equalizerRepository.getByName(equalizerExport.currentEqualizerName)
- withContext(Dispatchers.Main) { listener.invoke(currentEq.equalizerEntry.id) }
+ withContext(Dispatchers.Main) { listener?.invoke(currentEq.equalizerEntry.id) }
+ }
+
+
+ /**
+ * Import all the custom equalizers
+ *
+ * @param context the context to be used
+ * @param json the json string to be imported
+ */
+ suspend fun importAll(context: Context, json:String, listener: (id: Long) -> Unit) = withContext(Dispatchers.IO) {
+ importAll(context, JsonUtil.getEqualizersFromJson(json), listener)
}
}
More information about the Android
mailing list