package com.mechinn.android.ouralliance; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.pm.PackageManager.NameNotFoundException; import android.preference.PreferenceManager; import com.mechinn.android.ouralliance.data.Event; import com.mechinn.android.ouralliance.data.EventTeam; import com.mechinn.android.ouralliance.data.Match; import java.util.Map; import de.greenrobot.event.EventBus; public class Prefs { public static final String TAG = "Prefs"; private SharedPreferences prefs; private int currentVersion; private String dbSetupPref; private String dbSetupDefault; private String compPref; private String compDefault; private String measurePref; private String measureDefault; private String versionPref; private String versionDefault; private String practicePref; private String practiceDefault; private String adsPref; private String adsDefault; private String yearPref; private String yearDefault; private String analysisDrawerLearned; private String analysisDrawerLearnedDefault; private String googlePlayServicesPrompted; private String googlePlayServicesPromptedDefault; private Editor editor; private String changedKey; public Prefs(Context context) { this(context,null); } public Prefs(Context context, String changedKey) { this.analysisDrawerLearned = context.getString(R.string.pref_analysis_drawer_learned); this.analysisDrawerLearnedDefault = context.getString(R.string.pref_analysis_drawer_learned_default); this.googlePlayServicesPrompted = context.getString(R.string.pref_google_play_services_prompted); this.googlePlayServicesPromptedDefault = context.getString(R.string.pref_google_play_services_prompted_default); this.dbSetupPref = context.getString(R.string.pref_resetDB); this.dbSetupDefault = context.getString(R.string.pref_resetDB_default); this.compPref = context.getString(R.string.pref_comp); this.compDefault = context.getString(R.string.pref_comp_default); this.measurePref = context.getString(R.string.pref_measure); this.measureDefault = context.getString(R.string.pref_measure_default); this.versionPref = context.getString(R.string.pref_about); this.versionDefault = context.getString(R.string.pref_about_default); this.practicePref = context.getString(R.string.pref_practice); this.practiceDefault = context.getString(R.string.pref_practice_default); this.adsPref = context.getString(R.string.pref_ads); this.adsDefault = context.getString(R.string.pref_ads_default); this.yearPref = context.getString(R.string.pref_year); this.yearDefault = context.getString(R.string.pref_year_default); this.yearPref = context.getString(R.string.pref_year); this.yearDefault = context.getString(R.string.pref_year_default); try { this.currentVersion = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode; } catch (NameNotFoundException e) { this.currentVersion = 0; } prefs = PreferenceManager.getDefaultSharedPreferences(context); editor = prefs.edit(); this.changedKey = changedKey; } public static void changed(Context context, String key) { EventBus.getDefault().post(new Prefs(context,key)); } public String getKeyChanged() { return changedKey; } public int getCurrentVersion() { return currentVersion; } public void clear() { editor.clear(); editor.apply(); } public void setDbSetup(Boolean setup) { editor.putString(dbSetupPref, setup?"true":"false"); editor.apply(); } public boolean getDbSetup() { return Boolean.parseBoolean(prefs.getString(dbSetupPref, dbSetupDefault)); } public void setAnalysisDrawerLearned(Boolean learned) { editor.putString(analysisDrawerLearned, learned?"true":"false"); editor.apply(); } public boolean isAnalysisDrawerLearned() { return Boolean.parseBoolean(prefs.getString(analysisDrawerLearned, analysisDrawerLearnedDefault)); } public void setGooglePlayServicesPrompted(Boolean learned) { editor.putString(googlePlayServicesPrompted, learned?"true":"false"); editor.apply(); } public boolean isGooglePlayServicesPrompted() { return Boolean.parseBoolean(prefs.getString(googlePlayServicesPrompted, googlePlayServicesPromptedDefault)); } public void setEventsDownloaded(Boolean downloaded) { editor.putString(Event.TAG+"_"+getYear(), downloaded?"true":"false"); editor.apply(); } public boolean isEventsDownloaded() { return Boolean.parseBoolean(prefs.getString(Event.TAG+"_"+getYear(), "false")); } public void clearEventsDownloaded() { final Map<String, ?> all = prefs.getAll(); for(Map.Entry<String,?> entry : all.entrySet()) { if(entry.getKey().startsWith(Event.TAG+"_")) { editor.remove(entry.getKey()); } } editor.apply(); } public void setEventTeamsDownloaded(Boolean downloaded) { editor.putString(EventTeam.TAG+"_"+getYear()+"_"+getComp(), downloaded?"true":"false"); editor.apply(); } public boolean isEventTeamsDownloaded() { return Boolean.parseBoolean(prefs.getString(EventTeam.TAG+"_"+getYear()+"_"+getComp(), "false")); } public void clearEventTeamsDownloaded() { final Map<String, ?> all = prefs.getAll(); for(Map.Entry<String,?> entry : all.entrySet()) { if(entry.getKey().startsWith(EventTeam.TAG+"_")) { editor.remove(entry.getKey()); } } editor.apply(); } public void setTeamListSort(int year, Integer position) { editor.putString("Sort_"+year, String.valueOf(position)); editor.apply(); } public int getTeamListSort(int year) { return Integer.parseInt(prefs.getString("Sort_"+year, "0")); } public void clearTeamListSort() { final Map<String, ?> all = prefs.getAll(); for(Map.Entry<String,?> entry : all.entrySet()) { if(entry.getKey().startsWith("Sort_")) { editor.remove(entry.getKey()); } } editor.apply(); } public void setMatchesDownloaded(Boolean downloaded) { editor.putString(Match.TAG+"_"+getYear()+"_"+getComp(), downloaded?"true":"false"); editor.apply(); } public boolean isMatchesDownloaded() { return Boolean.parseBoolean(prefs.getString(Match.TAG+"_"+getYear()+"_"+getComp(), "false")); } public void clearMatchesDownloaded() { final Map<String, ?> all = prefs.getAll(); for(Map.Entry<String,?> entry : all.entrySet()) { if(entry.getKey().startsWith(Match.TAG+"_")) { editor.remove(entry.getKey()); } } editor.apply(); } public void setYear(String year) { editor.putString(yearPref, year); editor.apply(); } public String getYearString() { return prefs.getString(yearPref, yearDefault); } public int getYear() { return Integer.parseInt(getYearString()); } public String getCompString() { return prefs.getString(compPref, compDefault); } public long getComp() { return Long.parseLong(getCompString()); } public String getMeasure() { return prefs.getString(measurePref, measureDefault); } public boolean isInches() { return getMeasure().equals(measureDefault); } public boolean isPractice() { return prefs.getBoolean(practicePref, Boolean.parseBoolean(practiceDefault)); } public void setPractice(boolean practice) { editor.putBoolean(practicePref, practice); editor.apply(); } public boolean isAdsDisabled() { return prefs.getBoolean(adsPref, Boolean.parseBoolean(adsDefault)); } public void setAdsDisabled(boolean adsDisabled) { editor.putBoolean(adsPref, adsDisabled); editor.apply(); } public int getVersion() { return Integer.parseInt(prefs.getString(versionPref, versionDefault)); } public void setVersion(int version) { editor.putString(versionPref, Integer.toString(version)); editor.apply(); } public void increaseVersion() { editor.putString(versionPref, Integer.toString(getVersion()+1)); editor.apply(); } public void setChangeListener(OnSharedPreferenceChangeListener listener) { prefs.registerOnSharedPreferenceChangeListener(listener); } public void unsetChangeListener(OnSharedPreferenceChangeListener listener) { prefs.unregisterOnSharedPreferenceChangeListener(listener); } }