mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-07 20:03:06 +02:00
cf993b73d7
Part of #963.
74 lines
2.5 KiB
Java
74 lines
2.5 KiB
Java
package de.dennisguse.opentracks.settings;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.stream.Collectors;
|
|
|
|
import de.dennisguse.opentracks.R;
|
|
import de.dennisguse.opentracks.ui.customRecordingLayout.CsvLayoutUtils;
|
|
|
|
class PreferencesOpenHelper {
|
|
|
|
private final int version;
|
|
|
|
private PreferencesOpenHelper(int version) {
|
|
this.version = version;
|
|
}
|
|
|
|
static PreferencesOpenHelper newInstance(int version) {
|
|
return new PreferencesOpenHelper(version);
|
|
}
|
|
|
|
void check() {
|
|
int lastVersion = PreferencesUtils.getInt(R.string.prefs_last_version_key, 0);
|
|
if (version > lastVersion) {
|
|
onUpgrade();
|
|
} else if (version < lastVersion) {
|
|
onDowngrade();
|
|
}
|
|
}
|
|
|
|
private void onUpgrade() {
|
|
PreferencesUtils.setInt(R.string.prefs_last_version_key, version);
|
|
for (int i = 1; i <= version; i++) {
|
|
switch (i) {
|
|
case 1:
|
|
upgradeFrom0to1();
|
|
break;
|
|
case 2:
|
|
upgradeFrom1to2();
|
|
break;
|
|
default:
|
|
throw new RuntimeException("Not implemented: upgrade to " + version);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void upgradeFrom0to1() {
|
|
String preferenceValue = PreferencesUtils.getString(R.string.stats_custom_layouts_key, "");
|
|
if (preferenceValue.isEmpty()) {
|
|
PreferencesUtils.setString(R.string.stats_custom_layouts_key, PreferencesUtils.buildDefaultLayout());
|
|
}
|
|
}
|
|
|
|
private void upgradeFrom1to2() {
|
|
String csvVersion1CustomLayout = PreferencesUtils.getString(R.string.stats_custom_layouts_key, PreferencesUtils.buildDefaultLayout());
|
|
ArrayList<String> parts = new ArrayList<>();
|
|
Collections.addAll(parts, csvVersion1CustomLayout.split(CsvLayoutUtils.ITEM_SEPARATOR));
|
|
|
|
if (parts.size() < 2) {
|
|
PreferencesUtils.setString(R.string.stats_custom_layouts_key, PreferencesUtils.buildDefaultLayout());
|
|
return;
|
|
}
|
|
|
|
if (!parts.get(1).matches("\\d+")) {
|
|
parts.add(1, String.valueOf(PreferencesUtils.getLayoutColumnsByDefault()));
|
|
}
|
|
PreferencesUtils.setString(R.string.stats_custom_layouts_key, parts.stream().collect(Collectors.joining(CsvLayoutUtils.ITEM_SEPARATOR)));
|
|
}
|
|
|
|
private void onDowngrade() {
|
|
PreferencesUtils.setString(R.string.stats_custom_layouts_key, PreferencesUtils.buildDefaultLayout());
|
|
}
|
|
}
|