package com.lateensoft.pathfinder.toolkit.pref;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
/**
* Preferences for the application, which are stored in SharedPreferences
*/
public class AppPreferences implements Preferences {
private static final String KEY_APP_SHARED_PREFS_NAME = "ptUserPrefs";
private SharedPreferences sharedPreferences;
private Editor editor;
public AppPreferences(Context context) {
sharedPreferences = context.getSharedPreferences(
KEY_APP_SHARED_PREFS_NAME, Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
@Override
public <T> boolean put(Preference<T> pref, T value) {
if (pref.getType() == Boolean.class) {
return putBoolean(pref.getKey(), (Boolean) value);
} else if (pref.getType() == Integer.class) {
return putInt(pref.getKey(), (Integer) value);
} else if (pref.getType() == Long.class) {
return putLong(pref.getKey(), (Long) value);
} else if (pref.getType() == String.class) {
return putString(pref.getKey(), (String) value);
} else {
throw new IllegalArgumentException("Preferences of type " + pref.getType() + " are not supported.");
}
}
@Override
@SuppressWarnings("unchecked")
public <T> T get(Preference<T> pref, T defaultVal) {
if (pref.getType() == Boolean.class) {
return (T) Boolean.valueOf(getBoolean(pref.getKey(), (Boolean) defaultVal));
} else if (pref.getType() == Integer.class) {
return (T) Integer.valueOf(getInt(pref.getKey(), (Integer) defaultVal));
} else if (pref.getType() == Long.class) {
return (T) Long.valueOf(getLong(pref.getKey(), (Long) defaultVal));
} else if (pref.getType() == String.class) {
return (T) getString(pref.getKey(), (String) defaultVal);
} else {
throw new IllegalArgumentException("Preferences of type " + pref.getType() + " are not supported.");
}
}
@Override
public boolean putInt(String key, int value) {
editor.putInt(key, value);
return editor.commit();
}
@Override
public boolean putLong(String key, long value) {
editor.putLong(key, value);
return editor.commit();
}
@Override
public boolean putBoolean(String key, boolean value) {
editor.putBoolean(key, value);
return editor.commit();
}
@Override
public boolean putString(String key, String value) {
editor.putString(key, value);
return editor.commit();
}
@Override
public int getInt(String key, int defValue) {
return sharedPreferences.getInt(key, defValue);
}
@Override
public long getLong(String key, long defValue) {
return sharedPreferences.getLong(key, defValue);
}
@Override
public boolean getBoolean(String key, boolean defValue) {
return sharedPreferences.getBoolean(key, defValue);
}
@Override
public String getString(String key, String defValue) {
return sharedPreferences.getString(key, defValue);
}
@Override
public void remove(String key) {
editor.remove(key);
}
@Override
public void remove(Preference pref) {
remove(pref.getKey());
}
}