package org.emdev.common.settings.base;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import java.io.File;
import java.util.LinkedHashSet;
import java.util.Set;
import org.emdev.BaseDroidApp;
import org.emdev.utils.StringUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class FileListPreferenceDefinition extends BasePreferenceDefinition<Set<String>> {
private final String defValue;
public FileListPreferenceDefinition(final int keyRes, final int defValRes) {
super(keyRes);
defValue = BaseDroidApp.context.getString(defValRes);
}
@Override
public Set<String> getPreferenceValue(final SharedPreferences prefs) {
if (!prefs.contains(key)) {
prefs.edit().putString(key, defValue).commit();
}
return StringUtils.split(File.pathSeparator, prefs.getString(key, defValue));
}
public void setPreferenceValue(final Editor edit, final Set<String> paths) {
edit.putString(key, StringUtils.merge(File.pathSeparator, paths));
}
@Override
public void backup(final JSONObject root, final SharedPreferences prefs) throws JSONException {
final Set<String> values = getPreferenceValue(prefs);
final JSONArray arr = new JSONArray();
for (final String v : values) {
arr.put(v);
}
root.put(key, arr);
}
@Override
public void restore(final JSONObject root, final Editor edit) throws JSONException {
final Set<String> values = new LinkedHashSet<String>();
final JSONArray arr = root.optJSONArray(key);
if (arr != null) {
for (int i = 0, n = arr.length(); i < n; i++) {
values.add(arr.getString(i));
}
}
setPreferenceValue(edit, values);
}
}