package com.jasonrobinson.racer.util;
import android.content.Context;
import android.content.SharedPreferences;
import com.jasonrobinson.racer.R;
import com.jasonrobinson.racer.model.RaceMode;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class SettingsManager {
private static final int KEY_KEEP_SCREEN_ON = R.string.key_keep_screen_on;
private static final int KEY_AUTO_REFRESH = R.string.key_auto_refresh;
private static final int KEY_LAST_RACE_FETCH = R.string.key_last_race_fetch;
private static final int KEY_RACE_MODE = R.string.key_race_mode;
private final Context mContext;
private final SharedPreferences mPrefs;
@Inject
public SettingsManager(Context context, SharedPreferences prefs) {
mContext = context;
mPrefs = prefs;
}
public boolean isKeepScreenOn() {
return getBoolean(KEY_KEEP_SCREEN_ON, false);
}
public void setKeepScreenOn(boolean enable) {
putBoolean(KEY_KEEP_SCREEN_ON, enable);
}
public void setAutoRefresh(boolean enable) {
putBoolean(KEY_AUTO_REFRESH, enable);
}
public boolean isAutoRefreshEnabled() {
return getBoolean(KEY_AUTO_REFRESH, true);
}
public void updateLastRaceFetch() {
putLong(KEY_LAST_RACE_FETCH, System.currentTimeMillis());
}
public long getLastRaceFetch() {
return getLong(KEY_LAST_RACE_FETCH, 0L);
}
public void setRaceMode(RaceMode mode) {
putInt(KEY_RACE_MODE, mode.ordinal());
}
public RaceMode getRaceMode() {
return RaceMode.values()[getInt(KEY_RACE_MODE, RaceMode.LIST.ordinal())];
}
private void putBoolean(int key, boolean value) {
mPrefs.edit().putBoolean(mContext.getString(key), value).apply();
}
private boolean getBoolean(int key, boolean defValue) {
return mPrefs.getBoolean(mContext.getString(key), defValue);
}
private void putLong(int key, long value) {
mPrefs.edit().putLong(mContext.getString(key), value).apply();
}
private long getLong(int key, long defValue) {
return mPrefs.getLong(mContext.getString(key), defValue);
}
private void putInt(int key, int value) {
mPrefs.edit().putInt(mContext.getString(key), value).apply();
}
private int getInt(int key, int defValue) {
return mPrefs.getInt(mContext.getString(key), defValue);
}
}