migrate "Only on Wifi" preference to "Over Wi-Fi" and "Over data"
This migrates the old "Only on Wifi" checkbox to something similar with the new preferences layout.
This commit is contained in:
parent
9c7d97a379
commit
94e5519d23
@ -1,5 +1,6 @@
|
|||||||
package org.fdroid.fdroid;
|
package org.fdroid.fdroid;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@ -193,14 +194,26 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Migrate old preferences to new preferences. These need to be processed
|
||||||
|
* and committed before {@code preferences.xml} is loaded.
|
||||||
|
*/
|
||||||
|
@SuppressLint("ApplySharedPref")
|
||||||
|
public void migrateOldPreferences() {
|
||||||
|
SharedPreferences.Editor editor = preferences.edit();
|
||||||
|
if (migrateUpdateIntervalStringToInt(editor) || migrateOnlyOnWifi(editor)) {
|
||||||
|
editor.commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The original preference was a {@link String}, now it must be a {@link Integer}
|
* The original preference was a {@link String}, now it must be a {@link Integer}
|
||||||
* since {@link android.support.v7.preference.SeekBarPreference} uses it
|
* since {@link android.support.v7.preference.SeekBarPreference} uses it
|
||||||
* directly.
|
* directly.
|
||||||
*/
|
*/
|
||||||
public void migrateUpdateIntervalStringToInt() {
|
private boolean migrateUpdateIntervalStringToInt(SharedPreferences.Editor editor) {
|
||||||
if (!preferences.contains(OLD_PREF_UPDATE_INTERVAL)) {
|
if (!preferences.contains(OLD_PREF_UPDATE_INTERVAL)) {
|
||||||
return; // already completed
|
return false; // already completed
|
||||||
}
|
}
|
||||||
int updateInterval = DEFAULT_UPDATE_INTERVAL;
|
int updateInterval = DEFAULT_UPDATE_INTERVAL;
|
||||||
String value = preferences.getString(OLD_PREF_UPDATE_INTERVAL, String.valueOf(24));
|
String value = preferences.getString(OLD_PREF_UPDATE_INTERVAL, String.valueOf(24));
|
||||||
@ -219,13 +232,33 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
|
|||||||
} else if ("0".equals(value)) { // never
|
} else if ("0".equals(value)) { // never
|
||||||
updateInterval = 0;
|
updateInterval = 0;
|
||||||
}
|
}
|
||||||
|
editor
|
||||||
// TODO migrate OLD_PREF_UPDATE_ON_WIFI_ONLY
|
|
||||||
|
|
||||||
preferences.edit()
|
|
||||||
.putInt(PREF_UPDATE_INTERVAL, updateInterval)
|
.putInt(PREF_UPDATE_INTERVAL, updateInterval)
|
||||||
.remove(OLD_PREF_UPDATE_INTERVAL)
|
.remove(OLD_PREF_UPDATE_INTERVAL);
|
||||||
.apply();
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The original preference was just a "Only on Wifi" checkbox.
|
||||||
|
*/
|
||||||
|
private boolean migrateOnlyOnWifi(SharedPreferences.Editor editor) {
|
||||||
|
if (!preferences.contains(OLD_PREF_UPDATE_ON_WIFI_ONLY)) {
|
||||||
|
return false; // already completed
|
||||||
|
}
|
||||||
|
int wifi;
|
||||||
|
int data;
|
||||||
|
if (preferences.getBoolean(OLD_PREF_UPDATE_ON_WIFI_ONLY, true)) {
|
||||||
|
wifi = OVER_NETWORK_ALWAYS;
|
||||||
|
data = OVER_NETWORK_NEVER;
|
||||||
|
} else {
|
||||||
|
wifi = OVER_NETWORK_ALWAYS;
|
||||||
|
data = OVER_NETWORK_ON_DEMAND;
|
||||||
|
}
|
||||||
|
editor
|
||||||
|
.putInt(PREF_OVER_WIFI, wifi)
|
||||||
|
.putInt(PREF_OVER_DATA, data)
|
||||||
|
.remove(OLD_PREF_UPDATE_ON_WIFI_ONLY);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -79,7 +79,7 @@ public class PreferencesFragment extends PreferenceFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onCreatePreferences(Bundle bundle, String s) {
|
public void onCreatePreferences(Bundle bundle, String s) {
|
||||||
|
|
||||||
Preferences.get().migrateUpdateIntervalStringToInt();
|
Preferences.get().migrateOldPreferences();
|
||||||
|
|
||||||
addPreferencesFromResource(R.xml.preferences);
|
addPreferencesFromResource(R.xml.preferences);
|
||||||
useTorCheckPref = (SwitchPreference) findPreference(Preferences.PREF_USE_TOR);
|
useTorCheckPref = (SwitchPreference) findPreference(Preferences.PREF_USE_TOR);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user