/** * */ package gilday.android.powerhour.data; import gilday.android.powerhour.PowerHourPreferences; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; /** * Encapsulates operations for retrieving the Power Hour application * settings. These setting are backed by Android shared preferences but the * repository pattern hides this from the rest of the application * @author jgilday * */ public class PreferenceRepository { private final String defaultDuration = "60"; private final boolean defaultShuffle = true; private final int defaultOffset = 0; private final boolean defaultUseAlert = true; private final boolean defaultUseArnold = true; private final String defaultAlertPath = "arnold"; private final boolean defaultQuickLoad = true; private SharedPreferences prefs; public PreferenceRepository(Context appContext){ prefs = PreferenceManager.getDefaultSharedPreferences(appContext); } /** * * @return Number of minutes this power hour is set to run */ public int getDuration() { String durationString = prefs.getString(Keys.PREF_DURATION, defaultDuration); int duration; try { duration = Integer.parseInt(durationString); } catch (NumberFormatException e){ duration = 60; } return duration; } public boolean isShuffle() { return prefs.getBoolean(Keys.PREF_SHUFFLE, defaultShuffle); } public double getOffset() { int percent = prefs.getInt(Keys.PREF_OFFSET, defaultOffset); // Validation check if(percent > 99) { // default to 0 percent = 0; } // Any negative number means use random if(percent < 0) { percent = PowerHourPreferences.RANDOM; } return (double)percent / 100; } public boolean getUseArnold() { return prefs.getBoolean(Keys.PREF_ARNOLD, defaultUseArnold); } public boolean getUseAlert() { return prefs.getBoolean(Keys.PREF_USEALERT, defaultUseAlert); } public String getAlertPath() { return prefs.getString(Keys.PREF_ALERTPATH, defaultAlertPath); } public boolean getQuickLoad() { return prefs.getBoolean(Keys.PREF_QUICKLOAD, defaultQuickLoad); } }