package moe.kurumi.moegallery.model.setting; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import moe.kurumi.moegallery.R; public class SettingImpl implements Setting { private static Context sContext; private SharedPreferences mPrefs; public SettingImpl() { mPrefs = PreferenceManager.getDefaultSharedPreferences(sContext); } public static void init(Context context) { sContext = context.getApplicationContext(); } public static Setting getInstance() { if (sContext == null) { throw new IllegalStateException("Setting is not initialized!"); } return SingletonHelper.INSTANCE; } private String getString(int key, int def) { return mPrefs.getString(sContext.getString(key), sContext.getString(def)); } private boolean getBoolean(int key, boolean def) { return mPrefs.getBoolean(sContext.getString(key), def); } @Override public String provider() { return getString(R.string.provider_key, R.string.yandere_uri); } @Override public void setProvider(String provider) { mPrefs.edit().putString(sContext.getString(R.string.provider_key), provider).apply(); } @Override public String animePicturesServer() { return getString(R.string.anime_pictures_server_key, R.string.default_anime_pictures_cookie); } @Override public void setAnimePicturesServer(String server) { mPrefs.edit() .putString(sContext.getString(R.string.anime_pictures_server_key), server) .apply(); } @Override public String animePicturesToken() { return getString(R.string.anime_pictures_token_key, R.string.default_anime_pictures_cookie); } @Override public void setAnimePicturesToken(String token) { mPrefs.edit() .putString(sContext.getString(R.string.anime_pictures_token_key), token) .apply(); } @Override public boolean autoDownload() { return getBoolean(R.string.auto_download_key, true); } @Override public void setAutoDownload(boolean enable) { mPrefs.edit().putBoolean(sContext.getString(R.string.auto_download_key), enable).apply(); } @Override public boolean floatSearch() { return getBoolean(R.string.float_search_key, true); } @Override public void setFloatSearch(boolean enable) { mPrefs.edit().putBoolean(sContext.getString(R.string.float_search_key), enable).apply(); } @Override public boolean floatFavorite() { return getBoolean(R.string.float_favorite_key, true); } @Override public void setFloatFavorite(boolean enable) { mPrefs.edit().putBoolean(sContext.getString(R.string.float_favorite_key), enable).apply(); } @Override public long lastUpdate() { return mPrefs.getLong(sContext.getString(R.string.last_update_key), 0); } @Override public void setLastUpdate(long time) { mPrefs.edit().putLong(sContext.getString(R.string.last_update_key), time).apply(); } @Override public boolean autoRotate() { return getBoolean(R.string.auto_rotate_key, true); } @Override public void setAutoRotate(boolean enable) { mPrefs.edit().putBoolean(sContext.getString(R.string.auto_rotate_key), enable).apply(); } private static class SingletonHelper { private final static SettingImpl INSTANCE = new SettingImpl(); } }