package org.dodgybits.shuffle.android.preference.model; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import org.dodgybits.shuffle.android.core.model.persistence.selector.Flag; public class ListPreferenceSettings { private static final String cTag = "ListPreferenceSettings"; public static final String LIST_FILTER_ACTIVE = ".list_active"; public static final String LIST_FILTER_COMPLETED = ".list_completed"; public static final String LIST_FILTER_DELETED = ".list_deleted"; public static final String LIST_FILTER_PENDING = ".list_pending"; private static final String PREFIX = "prefix"; private static final String BUNDLE = "list-preference-settings"; private static final String DEFAULT_COMPLETED = "defaultCompleted"; private static final String DEFAULT_PENDING = "defaultPending"; private static final String DEFAULT_DELETED = "defaultDeleted"; private static final String DEFAULT_ACTIVE = "defaultActive"; private String prefix; private Flag defaultCompleted = Flag.ignored; private Flag defaultPending = Flag.ignored; private Flag defaultDeleted = Flag.no; private Flag defaultActive = Flag.yes; public ListPreferenceSettings(String prefix) { this.prefix = prefix; } public void addToIntent(Intent intent) { Bundle bundle = new Bundle(); bundle.putString(PREFIX, prefix); bundle.putString(DEFAULT_COMPLETED, defaultCompleted.name()); bundle.putString(DEFAULT_PENDING, defaultPending.name()); bundle.putString(DEFAULT_DELETED, defaultDeleted.name()); bundle.putString(DEFAULT_ACTIVE, defaultActive.name()); intent.putExtra(BUNDLE, bundle); } public String getPrefix() { return prefix; } private static SharedPreferences getSharedPreferences(Context context) { return PreferenceManager.getDefaultSharedPreferences(context); } public Flag getDefaultCompleted() { return defaultCompleted; } public Flag getDefaultPending() { return defaultPending; } public Flag getDefaultDeleted() { return defaultDeleted; } public Flag getDefaultActive() { return defaultActive; } public ListPreferenceSettings setDefaultCompleted(Flag value) { defaultCompleted = value; return this; } public ListPreferenceSettings setDefaultPending(Flag value) { defaultPending = value; return this; } public ListPreferenceSettings setDefaultDeleted(Flag value) { defaultDeleted = value; return this; } public ListPreferenceSettings setDefaultActive(Flag value) { defaultActive = value; return this; } public Flag getActive(Context context) { return getValue(context, LIST_FILTER_ACTIVE, defaultActive); } public Flag getCompleted(Context context) { return getValue(context, LIST_FILTER_COMPLETED, defaultCompleted); } public Flag getDeleted(Context context) { return getValue(context, LIST_FILTER_DELETED, defaultDeleted); } public Flag getPending(Context context) { return getValue(context, LIST_FILTER_PENDING, defaultPending); } private Flag getValue(Context context, String setting, Flag defaultValue) { Flag value = Flag.valueOf(getSharedPreferences(context).getString(prefix + setting, defaultValue.name())); Log.d(cTag, "Got value " + value + " for settings " + prefix + setting + " with default " + defaultValue); return value; } public static ListPreferenceSettings fromIntent(Intent intent) { Bundle bundle = intent.getBundleExtra(BUNDLE); ListPreferenceSettings settings = new ListPreferenceSettings(bundle.getString(PREFIX)); settings.defaultCompleted = Flag.valueOf(bundle.getString(DEFAULT_COMPLETED)); settings.defaultPending = Flag.valueOf(bundle.getString(DEFAULT_PENDING)); settings.defaultDeleted = Flag.valueOf(bundle.getString(DEFAULT_DELETED)); settings.defaultActive = Flag.valueOf(bundle.getString(DEFAULT_ACTIVE)); return settings; } }