Refactored preferences to be able to reset to defaults of a particular mode

pull/14/head
Sam Bosley 12 years ago
parent 6a00c97729
commit 14d8682578

@ -29,6 +29,7 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.AstridPreferences;
/**
* Displays the preference screen for users to manage their old tasks and events
@ -111,6 +112,8 @@ public class OldTaskPreferences extends TodorooPreferenceActivity {
deleteDatabase(database.getName());
AstridPreferences.setPreferenceDefaults();
System.exit(0);
}
},

@ -0,0 +1,111 @@
package com.todoroo.astrid.utility;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.ThemeService;
public class AstridDefaultPreferenceSpec extends AstridPreferenceSpec {
public static interface PreferenceExtras {
public void setExtras(Context context, SharedPreferences prefs, Editor editor, Resources r, boolean ifUnset);
}
@Override
public void setIfUnset() {
PreferenceExtras extras = new PreferenceExtras() {
@Override
public void setExtras(Context context, SharedPreferences prefs, Editor editor, Resources r, boolean ifUnset) {
String dragDropTestInitialized = "android_drag_drop_initialized"; //$NON-NLS-1$
if (!Preferences.getBoolean(dragDropTestInitialized, false)) {
SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context);
if (publicPrefs != null) {
Editor edit = publicPrefs.edit();
if (edit != null) {
edit.putInt(SortHelper.PREF_SORT_FLAGS, SortHelper.FLAG_DRAG_DROP);
edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO);
edit.commit();
Preferences.setInt(AstridPreferences.P_SUBTASKS_HELP, 1);
}
}
Preferences.setBoolean(dragDropTestInitialized, true);
}
if ("white-blue".equals(Preferences.getStringValue(R.string.p_theme))) { //$NON-NLS-1$ migrate from when white-blue wasn't the default
Preferences.setString(R.string.p_theme, ThemeService.THEME_WHITE);
}
if (Constants.MARKET_STRATEGY.defaultPhoneLayout()) {
setPreference(prefs, editor, r, R.string.p_force_phone_layout, true, ifUnset);
}
}
};
setPrefs(extras, true);
}
@Override
public void resetDefaults() {
PreferenceExtras extras = new PreferenceExtras() {
@Override
public void setExtras(Context context, SharedPreferences prefs, Editor editor, Resources r, boolean ifUnset) {
SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context);
if (publicPrefs != null) {
Editor edit = publicPrefs.edit();
if (edit != null) {
edit.putInt(SortHelper.PREF_SORT_FLAGS, SortHelper.FLAG_DRAG_DROP);
edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO);
edit.commit();
Preferences.setInt(AstridPreferences.P_SUBTASKS_HELP, 1);
}
}
Preferences.setString(R.string.p_theme, ThemeService.THEME_WHITE);
setPreference(prefs, editor, r, R.string.p_force_phone_layout, Constants.MARKET_STRATEGY.defaultPhoneLayout(), ifUnset);
}
};
setPrefs(extras, false);
}
private static void setPrefs(PreferenceExtras extras, boolean ifUnset) {
Context context = ContextManager.getContext();
SharedPreferences prefs = Preferences.getPrefs(context);
Editor editor = prefs.edit();
Resources r = context.getResources();
setPreference(prefs, editor, r, R.string.p_default_urgency_key, 0, ifUnset);
setPreference(prefs, editor, r, R.string.p_default_importance_key, 2, ifUnset);
setPreference(prefs, editor, r, R.string.p_default_hideUntil_key, 0, ifUnset);
setPreference(prefs, editor, r, R.string.p_default_reminders_key, Task.NOTIFY_AT_DEADLINE | Task.NOTIFY_AFTER_DEADLINE, ifUnset);
setPreference(prefs, editor, r, R.string.p_rmd_default_random_hours, 0, ifUnset);
setPreference(prefs, editor, r, R.string.p_fontSize, 16, ifUnset);
setPreference(prefs, editor, r, R.string.p_showNotes, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_use_contact_picker, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_field_missed_calls, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_third_party_addons, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_end_at_deadline, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_rmd_persistent, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_ideas_tab_enabled, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_show_featured_lists, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_taskRowStyle, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_calendar_reminders, true, ifUnset);
extras.setExtras(context, prefs, editor, r, ifUnset);
editor.commit();
}
}

@ -0,0 +1,116 @@
package com.todoroo.astrid.utility;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.BeastModePreferences;
import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.utility.AstridDefaultPreferenceSpec.PreferenceExtras;
public class AstridLitePreferenceSpec extends AstridPreferenceSpec {
@Override
public void setIfUnset() {
PreferenceExtras extras = new PreferenceExtras() {
@Override
public void setExtras(Context context, SharedPreferences prefs, Editor editor, Resources r, boolean ifUnset) {
String dragDropTestInitialized = "android_drag_drop_initialized"; //$NON-NLS-1$
if (!Preferences.getBoolean(dragDropTestInitialized, false)) {
SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context);
if (publicPrefs != null) {
Editor edit = publicPrefs.edit();
if (edit != null) {
edit.putInt(SortHelper.PREF_SORT_FLAGS, SortHelper.FLAG_DRAG_DROP);
edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO);
edit.commit();
Preferences.setInt(AstridPreferences.P_SUBTASKS_HELP, 1);
}
}
Preferences.setBoolean(dragDropTestInitialized, true);
}
BeastModePreferences.setDefaultLiteModeOrder(context);
}
};
setPrefs(extras, true);
}
@Override
public void resetDefaults() {
PreferenceExtras extras = new PreferenceExtras() {
@Override
public void setExtras(Context context, SharedPreferences prefs, Editor editor, Resources r, boolean ifUnset) {
SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context);
if (publicPrefs != null) {
Editor edit = publicPrefs.edit();
if (edit != null) {
edit.putInt(SortHelper.PREF_SORT_FLAGS, SortHelper.FLAG_DRAG_DROP);
edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO);
edit.commit();
Preferences.setInt(AstridPreferences.P_SUBTASKS_HELP, 1);
}
}
BeastModePreferences.setDefaultLiteModeOrder(context);
}
};
setPrefs(extras, false);
}
private static void setPrefs(PreferenceExtras extras, boolean ifUnset) {
Context context = ContextManager.getContext();
SharedPreferences prefs = Preferences.getPrefs(context);
Editor editor = prefs.edit();
Resources r = context.getResources();
setPreference(prefs, editor, r, R.string.p_default_urgency_key, 4, ifUnset);
setPreference(prefs, editor, r, R.string.p_default_importance_key, 2, ifUnset);
setPreference(prefs, editor, r, R.string.p_default_hideUntil_key, 0, ifUnset);
setPreference(prefs, editor, r, R.string.p_default_reminders_key, Task.NOTIFY_AT_DEADLINE | Task.NOTIFY_AFTER_DEADLINE, ifUnset);
setPreference(prefs, editor, r, R.string.p_default_reminders_mode_key, 16, ifUnset);
setPreference(prefs, editor, r, R.string.p_rmd_default_random_hours, 0, ifUnset);
setPreference(prefs, editor, r, R.string.p_fontSize, 18, ifUnset);
setPreference(prefs, editor, r, R.string.p_showNotes, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_use_contact_picker, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_field_missed_calls, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_third_party_addons, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_end_at_deadline, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_rmd_persistent, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_ideas_tab_enabled, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_autoIdea, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_show_featured_lists, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_taskRowStyle, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_calendar_reminders, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_use_filters, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_simple_input_boxes, true, ifUnset);
setPreference(prefs, editor, r, R.string.p_show_list_members, false, ifUnset);
setPreference(prefs, editor, r, R.string.p_theme, ThemeService.THEME_WHITE_RED, ifUnset);
setPreference(prefs, editor, r, R.string.p_force_phone_layout, true, ifUnset);
extras.setExtras(context, prefs, editor, r, ifUnset);
editor.commit();
}
}

@ -0,0 +1,33 @@
package com.todoroo.astrid.utility;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import com.todoroo.andlib.utility.Preferences;
public abstract class AstridPreferenceSpec {
public abstract void setIfUnset();
public abstract void resetDefaults();
protected static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, int value, boolean ifUnset) {
if (ifUnset)
Preferences.setIfUnset(prefs, editor, r, key, value);
else
Preferences.setInt(r.getString(key), value);
}
protected static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, boolean value, boolean ifUnset) {
if (ifUnset)
Preferences.setIfUnset(prefs, editor, r, key, value);
else
Preferences.setBoolean(r.getString(key), value);
}
protected static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, String value, boolean ifUnset) {
if (ifUnset)
Preferences.setIfUnset(prefs, editor, r, key, value);
else
Preferences.setString(r.getString(key), value);
}
}

@ -8,8 +8,6 @@ package com.todoroo.astrid.utility;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
@ -18,14 +16,10 @@ import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.BeastModePreferences;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.service.UpgradeService;
import com.todoroo.astrid.tags.reusable.FeaturedListFilterExposer;
@ -51,137 +45,28 @@ public class AstridPreferences {
/** Set preference defaults, if unset. called at startup */
public static void setPreferenceDefaults() {
AstridPreferenceSpec spec;
if (Constants.ASTRID_LITE)
setLitePreferenceDefaults();
spec = new AstridLitePreferenceSpec();
else
setNormalPreferenceDefaults();
}
private static void setNormalPreferenceDefaults() {
Context context = ContextManager.getContext();
SharedPreferences prefs = Preferences.getPrefs(context);
Editor editor = prefs.edit();
Resources r = context.getResources();
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_urgency_key, 0);
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_importance_key, 2);
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_hideUntil_key, 0);
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_reminders_key, Task.NOTIFY_AT_DEADLINE | Task.NOTIFY_AFTER_DEADLINE);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_default_random_hours, 0);
Preferences.setIfUnset(prefs, editor, r, R.string.p_fontSize, 16);
Preferences.setIfUnset(prefs, editor, r, R.string.p_showNotes, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_use_contact_picker, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_field_missed_calls, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_third_party_addons, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_end_at_deadline, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_persistent, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_ideas_tab_enabled, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_show_featured_lists, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_taskRowStyle, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_calendar_reminders, true);
String dragDropTestInitialized = "android_drag_drop_initialized"; //$NON-NLS-1$
if (!Preferences.getBoolean(dragDropTestInitialized, false)) {
SharedPreferences publicPrefs = getPublicPrefs(context);
if (publicPrefs != null) {
Editor edit = publicPrefs.edit();
if (edit != null) {
edit.putInt(SortHelper.PREF_SORT_FLAGS, SortHelper.FLAG_DRAG_DROP);
edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO);
edit.commit();
Preferences.setInt(P_SUBTASKS_HELP, 1);
}
}
Preferences.setBoolean(dragDropTestInitialized, true);
}
spec = new AstridDefaultPreferenceSpec();
if ("white-blue".equals(Preferences.getStringValue(R.string.p_theme))) { //$NON-NLS-1$ migrate from when white-blue wasn't the default
Preferences.setString(R.string.p_theme, ThemeService.THEME_WHITE);
}
if (Constants.MARKET_STRATEGY.defaultPhoneLayout()) {
Preferences.setIfUnset(prefs, editor, r, R.string.p_force_phone_layout, true);
}
spec.setIfUnset();
setShowFriendsView();
setShowFeaturedLists();
editor.commit();
}
private static void setLitePreferenceDefaults() {
Context context = ContextManager.getContext();
SharedPreferences prefs = Preferences.getPrefs(context);
Editor editor = prefs.edit();
Resources r = context.getResources();
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_urgency_key, 4);
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_importance_key, 2);
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_hideUntil_key, 0);
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_reminders_key, Task.NOTIFY_AT_DEADLINE | Task.NOTIFY_AFTER_DEADLINE);
Preferences.setIfUnset(prefs, editor, r, R.string.p_default_reminders_mode_key, 16);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_default_random_hours, 0);
Preferences.setIfUnset(prefs, editor, r, R.string.p_fontSize, 18);
Preferences.setIfUnset(prefs, editor, r, R.string.p_showNotes, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_use_contact_picker, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_field_missed_calls, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_third_party_addons, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_end_at_deadline, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_persistent, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_ideas_tab_enabled, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_autoIdea, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_show_featured_lists, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_taskRowStyle, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_calendar_reminders, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_use_filters, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_simple_input_boxes, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_show_list_members, false);
String dragDropTestInitialized = "android_drag_drop_initialized"; //$NON-NLS-1$
if (!Preferences.getBoolean(dragDropTestInitialized, false)) {
SharedPreferences publicPrefs = getPublicPrefs(context);
if (publicPrefs != null) {
Editor edit = publicPrefs.edit();
if (edit != null) {
edit.putInt(SortHelper.PREF_SORT_FLAGS, SortHelper.FLAG_DRAG_DROP);
edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO);
edit.commit();
Preferences.setInt(P_SUBTASKS_HELP, 1);
}
}
Preferences.setBoolean(dragDropTestInitialized, true);
}
BeastModePreferences.setDefaultLiteModeOrder(context);
Preferences.setIfUnset(prefs, editor, r, R.string.p_theme, ThemeService.THEME_WHITE_RED);
Preferences.setIfUnset(prefs, editor, r, R.string.p_force_phone_layout, true);
setShowFriendsView();
setShowFeaturedLists();
public static void resetToDefaults() {
AstridPreferenceSpec spec;
if (Constants.ASTRID_LITE)
spec = new AstridLitePreferenceSpec();
else
spec = new AstridDefaultPreferenceSpec();
editor.commit();
spec.resetDefaults();
}
/**

Loading…
Cancel
Save