package org.emdev.common.settings.base; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import org.json.JSONException; import org.json.JSONObject; public class JsonObjectPreferenceDefinition extends BasePreferenceDefinition<JSONObject> { public JsonObjectPreferenceDefinition(final int keyRes) { super(keyRes); } public JsonObjectPreferenceDefinition(final String key) { super(key); } @Override public JSONObject getPreferenceValue(final SharedPreferences prefs) { return getPreferenceValue(prefs, "{}"); } public JSONObject getPreferenceValue(final SharedPreferences prefs, final String defValue) { try { final String value = prefs.getString(key, defValue); return new JSONObject(value); } catch (final JSONException ex) { LCTX.e("Settings processing error: [" + key + "] " + ex.getMessage()); } return new JSONObject(); } public void setPreferenceValue(final Editor edit, final JSONObject value) { edit.putString(key, value != null ? value.toString() : "{}"); } @Override public void backup(final JSONObject root, final SharedPreferences prefs) throws JSONException { final JSONObject obj = getPreferenceValue(prefs); root.put(key, obj); } @Override public void restore(final JSONObject root, final Editor edit) throws JSONException { setPreferenceValue(edit, root.getJSONObject(key)); } }