/** * Copyright (c) 2012 Todoroo Inc * * See the file "LICENSE" for the full license governing this code. */ package com.todoroo.astrid.utility; import android.content.Context; import android.content.SharedPreferences; import com.timsu.astrid.R; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.User; import com.todoroo.astrid.service.UpgradeService; import com.todoroo.astrid.tags.reusable.FeaturedListFilterExposer; public class AstridPreferences { private static final String P_CURRENT_VERSION = "cv"; //$NON-NLS-1$ private static final String P_CURRENT_VERSION_NAME = "cvname"; //$NON-NLS-1$ public static final String P_FIRST_TASK = "ft"; //$NON-NLS-1$ public static final String P_FIRST_LIST = "fl"; //$NON-NLS-1$ public static final String P_UPGRADE_FROM = "uf"; //$NON-NLS-1$ public static final String P_FIRST_LAUNCH = "fltime"; //$NON-NLS-1$ public static final String P_LAST_POPOVER = "lpopover"; //$NON-NLS-1$ private static final long MIN_POPOVER_TIME = 3 * 1000L; public static final String P_SUBTASKS_HELP = "sthelp"; //$NON-NLS-1$ /** Set preference defaults, if unset. called at startup */ public static void setPreferenceDefaults() { AstridPreferenceSpec spec; if (Constants.ASTRID_LITE) spec = new AstridLitePreferenceSpec(); else spec = new AstridDefaultPreferenceSpec(); spec.setIfUnset(); setShowFriendsView(); setShowFeaturedLists(); } public static void resetToDefaults() { AstridPreferenceSpec spec; if (Constants.ASTRID_LITE) spec = new AstridLitePreferenceSpec(); else spec = new AstridDefaultPreferenceSpec(); spec.resetDefaults(); } /** * Reset preferences based on archived AB tests * @param fromVersion */ public static void resetPreferencesFromAbTests(long fromVersion) { Context context = ContextManager.getContext(); if (fromVersion < UpgradeService.V4_4_2) { Preferences.clear(context.getString(R.string.p_calendar_reminders)); } } private static void setShowFriendsView() { // Show friends view if necessary boolean showFriends = false; TodorooCursor<User> users = PluginServices.getUserDao().query(Query.select(User.ID).limit(1)); try { showFriends = users.getCount() > 0; } finally { users.close(); } Preferences.setBoolean(R.string.p_show_friends_view, showFriends); } private static void setShowFeaturedLists() { Preferences.setBoolean(FeaturedListFilterExposer.PREF_SHOULD_SHOW_FEATURED_LISTS, false); } /* ====================================================================== * ========================================================= public prefs * ====================================================================== */ /** Get publicly readable preferences */ public static SharedPreferences getPublicPrefs(Context context) { context = context.getApplicationContext(); return context.getSharedPreferences(AstridApiConstants.PUBLIC_PREFS, Context.MODE_WORLD_READABLE); } /* ====================================================================== * ========================================================= system prefs * ====================================================================== */ /** CurrentVersion: the currently installed version of Astrid */ public static int getCurrentVersion() { return Preferences.getInt(P_CURRENT_VERSION, 0); } /** CurrentVersion: the currently installed version of Astrid */ public static void setCurrentVersion(int version) { Preferences.setInt(P_CURRENT_VERSION, version); } /** The name (e.g. 4.0.1) of the currently installed version of astrid*/ public static String getCurrentVersionName() { String versionName = Preferences.getStringValue(P_CURRENT_VERSION_NAME); if (versionName == null) versionName = "0"; //$NON-NLS-1$ return versionName; } public static void setCurrentVersionName(String versionName) { Preferences.setString(P_CURRENT_VERSION_NAME, versionName); } /** If true, can show a help popover. If false, another one was recently shown */ public static boolean canShowPopover() { long last = Preferences.getLong(P_LAST_POPOVER, 0); if(System.currentTimeMillis() - last < MIN_POPOVER_TIME) return false; Preferences.setLong(P_LAST_POPOVER, System.currentTimeMillis()); return true; } public static boolean useTabletLayout(Context context) { return AndroidUtilities.isTabletSized(context) && !Preferences.getBoolean(R.string.p_force_phone_layout, false); } }