diff --git a/res/xml/general_preferences.xml b/res/xml/general_preferences.xml index 31f0f2eb7..0bd26fcac 100644 --- a/res/xml/general_preferences.xml +++ b/res/xml/general_preferences.xml @@ -18,19 +18,20 @@ - diff --git a/src/com/android/email/Preferences.java b/src/com/android/email/Preferences.java index 9bf54c92b..49df5fa33 100644 --- a/src/com/android/email/Preferences.java +++ b/src/com/android/email/Preferences.java @@ -38,6 +38,7 @@ public class Preferences { public static final String PREFERENCES_FILE = "AndroidMail.Main"; // Preferences field names + @Deprecated private static final String ACCOUNT_UUIDS = "accountUuids"; private static final String ENABLE_DEBUG_LOGGING = "enableDebugLogging"; private static final String ENABLE_EXCHANGE_LOGGING = "enableExchangeLogging"; @@ -45,27 +46,42 @@ public class Preferences { private static final String ENABLE_STRICT_MODE = "enableStrictMode"; private static final String DEVICE_UID = "deviceUID"; private static final String ONE_TIME_INITIALIZATION_PROGRESS = "oneTimeInitializationProgress"; - private static final String AUTO_ADVANCE_DIRECTION = "autoAdvance"; - private static final String TRUSTED_SENDERS = "trustedSenders"; private static final String LAST_ACCOUNT_USED = "lastAccountUsed"; + // The following are only used for migration + @Deprecated + private static final String AUTO_ADVANCE_DIRECTION = "autoAdvance"; + @Deprecated + private static final String TRUSTED_SENDERS = "trustedSenders"; + @Deprecated private static final String CONFIRM_DELETE = "confirm_delete"; + @Deprecated private static final String CONFIRM_SEND = "confirm_send"; @Deprecated private static final String SWIPE_DELETE = "swipe_delete"; + @Deprecated private static final String CONV_LIST_ICON = "conversation_list_icons"; @Deprecated private static final String REPLY_ALL = "reply_all"; + @Deprecated public static final int AUTO_ADVANCE_NEWER = 0; + @Deprecated public static final int AUTO_ADVANCE_OLDER = 1; + @Deprecated public static final int AUTO_ADVANCE_MESSAGE_LIST = 2; // "move to older" was the behavior on older versions. + @Deprecated private static final int AUTO_ADVANCE_DEFAULT = AUTO_ADVANCE_OLDER; + @Deprecated private static final boolean CONFIRM_DELETE_DEFAULT = false; + @Deprecated private static final boolean CONFIRM_SEND_DEFAULT = false; + @Deprecated public static final String CONV_LIST_ICON_SENDER_IMAGE = "senderimage"; + @Deprecated public static final String CONV_LIST_ICON_NONE = "none"; + @Deprecated public static final String CONV_LIST_ICON_DEFAULT = CONV_LIST_ICON_SENDER_IMAGE; private static Preferences sPreferences; @@ -155,36 +171,30 @@ public class Preferences { mSharedPreferences.edit().putInt(ONE_TIME_INITIALIZATION_PROGRESS, progress).apply(); } + /** @deprecated Only used for migration */ + @Deprecated public int getAutoAdvanceDirection() { return mSharedPreferences.getInt(AUTO_ADVANCE_DIRECTION, AUTO_ADVANCE_DEFAULT); } - public void setAutoAdvanceDirection(int direction) { - mSharedPreferences.edit().putInt(AUTO_ADVANCE_DIRECTION, direction).apply(); - } - /** @deprecated Only used for migration */ @Deprecated public String getConversationListIcon() { return mSharedPreferences.getString(CONV_LIST_ICON, CONV_LIST_ICON_SENDER_IMAGE); } + /** @deprecated Only used for migration */ + @Deprecated public boolean getConfirmDelete() { return mSharedPreferences.getBoolean(CONFIRM_DELETE, CONFIRM_DELETE_DEFAULT); } - public void setConfirmDelete(boolean set) { - mSharedPreferences.edit().putBoolean(CONFIRM_DELETE, set).apply(); - } - + /** @deprecated Only used for migration */ + @Deprecated public boolean getConfirmSend() { return mSharedPreferences.getBoolean(CONFIRM_SEND, CONFIRM_SEND_DEFAULT); } - public void setConfirmSend(boolean set) { - mSharedPreferences.edit().putBoolean(CONFIRM_SEND, set).apply(); - } - /** @deprecated Only used for migration */ @Deprecated public boolean hasSwipeDelete() { @@ -267,11 +277,4 @@ public class Preferences { } } } - - /** - * Utility method for creating a per account preference key. - */ - private static String makeKey(String account, String key) { - return account != null ? account + "-" + key : key; - } } diff --git a/src/com/android/email/activity/setup/GeneralPreferences.java b/src/com/android/email/activity/setup/GeneralPreferences.java index 66a1cf5a0..f59bc43b8 100644 --- a/src/com/android/email/activity/setup/GeneralPreferences.java +++ b/src/com/android/email/activity/setup/GeneralPreferences.java @@ -18,18 +18,15 @@ package com.android.email.activity.setup; import android.content.ContentResolver; import android.os.Bundle; -import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; -import android.text.TextUtils; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import com.android.email.Preferences; import com.android.email.R; import com.android.email.provider.EmailProvider; import com.android.mail.preferences.MailPrefs; @@ -38,18 +35,10 @@ import com.android.mail.ui.settings.ClearPictureApprovalsDialogFragment; public class GeneralPreferences extends PreferenceFragment implements OnPreferenceChangeListener { - private static final String PREFERENCE_KEY_AUTO_ADVANCE = "auto_advance"; - private static final String PREFERENCE_KEY_CONFIRM_DELETE = "confirm_delete"; - private static final String PREFERENCE_KEY_CONFIRM_SEND = "confirm_send"; - private static final String PREFERENCE_KEY_CONV_LIST_ICON = "conversation_list_icon"; + private static final String AUTO_ADVANCE_MODE_WIDGET = "auto-advance-mode-widget"; private MailPrefs mMailPrefs; - private Preferences mPreferences; private ListPreference mAutoAdvance; - private CheckBoxPreference mConfirmDelete; - private CheckBoxPreference mConfirmSend; - //private CheckBoxPreference mConvListAttachmentPreviews; - private CheckBoxPreference mSwipeDelete; private boolean mSettingsChanged = false; @@ -59,7 +48,7 @@ public class GeneralPreferences extends PreferenceFragment implements setHasOptionsMenu(true); mMailPrefs = MailPrefs.get(getActivity()); - getPreferenceManager().setSharedPreferencesName(Preferences.PREFERENCES_FILE); + getPreferenceManager().setSharedPreferencesName(mMailPrefs.getSharedPreferencesName()); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.general_preferences); @@ -87,14 +76,8 @@ public class GeneralPreferences extends PreferenceFragment implements String key = preference.getKey(); // Indicate we need to send notifications to UI mSettingsChanged = true; - if (PREFERENCE_KEY_AUTO_ADVANCE.equals(key)) { - mPreferences.setAutoAdvanceDirection(mAutoAdvance.findIndexOfValue((String) newValue)); - return true; - } else if (MailPrefs.PreferenceKeys.DEFAULT_REPLY_ALL.equals(key)) { - mMailPrefs.setDefaultReplyAll((Boolean) newValue); - return true; - } else if (PREFERENCE_KEY_CONV_LIST_ICON.equals(key)) { - mMailPrefs.setShowSenderImages((Boolean) newValue); + if (AUTO_ADVANCE_MODE_WIDGET.equals(key)) { + mMailPrefs.setAutoAdvanceMode(mAutoAdvance.findIndexOfValue((String) newValue) + 1); return true; } return false; @@ -106,45 +89,15 @@ public class GeneralPreferences extends PreferenceFragment implements // Guard against monkeys. return false; } + // Indicate we need to send notifications to UI mSettingsChanged = true; - String key = preference.getKey(); - if (PREFERENCE_KEY_CONFIRM_DELETE.equals(key)) { - mPreferences.setConfirmDelete(mConfirmDelete.isChecked()); - return true; - } else if (PREFERENCE_KEY_CONFIRM_SEND.equals(key)) { - mPreferences.setConfirmSend(mConfirmSend.isChecked()); - return true; - } else if (MailPrefs.PreferenceKeys.CONVERSATION_LIST_SWIPE.equals(key)) { - mMailPrefs.setConversationListSwipeEnabled(mSwipeDelete.isChecked()); - return true; - } return false; } private void loadSettings() { - mPreferences = Preferences.getPreferences(getActivity()); - mAutoAdvance = (ListPreference) findPreference(PREFERENCE_KEY_AUTO_ADVANCE); - mAutoAdvance.setValueIndex(mPreferences.getAutoAdvanceDirection()); + mAutoAdvance = (ListPreference) findPreference(AUTO_ADVANCE_MODE_WIDGET); + mAutoAdvance.setValueIndex(mMailPrefs.getAutoAdvanceMode() - 1); mAutoAdvance.setOnPreferenceChangeListener(this); - - final CheckBoxPreference convListIcon = - (CheckBoxPreference) findPreference(PREFERENCE_KEY_CONV_LIST_ICON); - if (convListIcon != null) { - final boolean showSenderImage = mMailPrefs.getShowSenderImages(); - convListIcon.setChecked(showSenderImage); - convListIcon.setOnPreferenceChangeListener(this); - } - - mConfirmDelete = (CheckBoxPreference) findPreference(PREFERENCE_KEY_CONFIRM_DELETE); - mConfirmSend = (CheckBoxPreference) findPreference(PREFERENCE_KEY_CONFIRM_SEND); - mSwipeDelete = (CheckBoxPreference) - findPreference(MailPrefs.PreferenceKeys.CONVERSATION_LIST_SWIPE); - mSwipeDelete.setChecked(mMailPrefs.getIsConversationListSwipeEnabled()); - - final CheckBoxPreference replyAllPreference = - (CheckBoxPreference) findPreference(MailPrefs.PreferenceKeys.DEFAULT_REPLY_ALL); - replyAllPreference.setChecked(mMailPrefs.getDefaultReplyAll()); - replyAllPreference.setOnPreferenceChangeListener(this); } @Override diff --git a/src/com/android/email/preferences/EmailPreferenceMigrator.java b/src/com/android/email/preferences/EmailPreferenceMigrator.java index 034a6fa02..1d746e7d3 100644 --- a/src/com/android/email/preferences/EmailPreferenceMigrator.java +++ b/src/com/android/email/preferences/EmailPreferenceMigrator.java @@ -67,6 +67,7 @@ public class EmailPreferenceMigrator extends BasePreferenceMigrator { migrate(context, oldVersion, newVersion, accounts); } + @SuppressWarnings("deprecation") protected static void migrate(final Context context, final int oldVersion, final int newVersion, final List accounts) { final Preferences preferences = Preferences.getPreferences(context); @@ -74,19 +75,15 @@ public class EmailPreferenceMigrator extends BasePreferenceMigrator { if (oldVersion < 1) { // Move global settings - @SuppressWarnings("deprecation") final boolean hasSwipeDelete = preferences.hasSwipeDelete(); if (hasSwipeDelete) { - @SuppressWarnings("deprecation") final boolean swipeDelete = preferences.getSwipeDelete(); mailPrefs.setConversationListSwipeEnabled(swipeDelete); } // Move reply-all setting - @SuppressWarnings("deprecation") final boolean isReplyAllSet = preferences.hasReplyAll(); if (isReplyAllSet) { - @SuppressWarnings("deprecation") final boolean replyAll = preferences.getReplyAll(); mailPrefs.setDefaultReplyAll(replyAll); } @@ -148,16 +145,13 @@ public class EmailPreferenceMigrator extends BasePreferenceMigrator { new FolderPreferences(context, account.getEmailAddress(), folder, true /* inbox */); - @SuppressWarnings("deprecation") final boolean notify = (ecAccount.getFlags() & com.android.emailcommon.provider.Account.FLAGS_NOTIFY_NEW_MAIL) != 0; folderPreferences.setNotificationsEnabled(notify); - @SuppressWarnings("deprecation") final String ringtoneUri = ecAccount.getRingtone(); folderPreferences.setNotificationRingtoneUri(ringtoneUri); - @SuppressWarnings("deprecation") final boolean vibrate = (ecAccount.getFlags() & com.android.emailcommon.provider.Account.FLAGS_VIBRATE) != 0; folderPreferences.setNotificationVibrateEnabled(vibrate); @@ -167,17 +161,34 @@ public class EmailPreferenceMigrator extends BasePreferenceMigrator { } if (oldVersion < 2) { - @SuppressWarnings("deprecation") final Set whitelistedAddresses = preferences.getWhitelistedSenderAddresses(); mailPrefs.setSenderWhitelist(whitelistedAddresses); } if (oldVersion < 3) { - @SuppressWarnings("deprecation") // The default for the conversation list icon is the sender image. final boolean showSenderImages = !TextUtils.equals( Preferences.CONV_LIST_ICON_NONE, preferences.getConversationListIcon()); mailPrefs.setShowSenderImages(showSenderImages); } + + if (oldVersion < 4) { + final boolean confirmDelete = preferences.getConfirmDelete(); + mailPrefs.setConfirmDelete(confirmDelete); + + final boolean confirmSend = preferences.getConfirmSend(); + mailPrefs.setConfirmSend(confirmSend); + + final int autoAdvance = preferences.getAutoAdvanceDirection(); + switch(autoAdvance) { + case Preferences.AUTO_ADVANCE_OLDER: + mailPrefs.setAutoAdvanceMode(UIProvider.AutoAdvance.OLDER); + case Preferences.AUTO_ADVANCE_NEWER: + mailPrefs.setAutoAdvanceMode(UIProvider.AutoAdvance.NEWER); + case Preferences.AUTO_ADVANCE_MESSAGE_LIST: + default: + mailPrefs.setAutoAdvanceMode(UIProvider.AutoAdvance.LIST); + } + } } } diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java index b022a978e..7e1d1449c 100644 --- a/src/com/android/email/provider/EmailProvider.java +++ b/src/com/android/email/provider/EmailProvider.java @@ -3430,15 +3430,16 @@ public class EmailProvider extends ContentProvider { values.put(UIProvider.AccountColumns.COLOR, ACCOUNT_COLOR); } - final Preferences prefs = Preferences.getPreferences(getContext()); + // TODO: if we're getting the values out of MailPrefs then we don't need to be passing the + // values this way final MailPrefs mailPrefs = MailPrefs.get(getContext()); if (projectionColumns.contains(UIProvider.AccountColumns.SettingsColumns.CONFIRM_DELETE)) { values.put(UIProvider.AccountColumns.SettingsColumns.CONFIRM_DELETE, - prefs.getConfirmDelete() ? "1" : "0"); + mailPrefs.getConfirmDelete() ? "1" : "0"); } if (projectionColumns.contains(UIProvider.AccountColumns.SettingsColumns.CONFIRM_SEND)) { values.put(UIProvider.AccountColumns.SettingsColumns.CONFIRM_SEND, - prefs.getConfirmSend() ? "1" : "0"); + mailPrefs.getConfirmSend() ? "1" : "0"); } if (projectionColumns.contains(UIProvider.AccountColumns.SettingsColumns.SWIPE)) { values.put(UIProvider.AccountColumns.SettingsColumns.SWIPE, @@ -3455,9 +3456,8 @@ public class EmailProvider extends ContentProvider { "0"); } if (projectionColumns.contains(UIProvider.AccountColumns.SettingsColumns.AUTO_ADVANCE)) { - int autoAdvance = prefs.getAutoAdvanceDirection(); values.put(UIProvider.AccountColumns.SettingsColumns.AUTO_ADVANCE, - autoAdvanceToUiValue(autoAdvance)); + Integer.toString(mailPrefs.getAutoAdvanceMode())); } // Set default inbox, if we've got an inbox; otherwise, say initial sync needed final long inboxMailboxId = @@ -3552,18 +3552,6 @@ public class EmailProvider extends ContentProvider { return sb.toString(); } - private static int autoAdvanceToUiValue(int autoAdvance) { - switch(autoAdvance) { - case Preferences.AUTO_ADVANCE_OLDER: - return UIProvider.AutoAdvance.OLDER; - case Preferences.AUTO_ADVANCE_NEWER: - return UIProvider.AutoAdvance.NEWER; - case Preferences.AUTO_ADVANCE_MESSAGE_LIST: - default: - return UIProvider.AutoAdvance.LIST; - } - } - /** * Generate a Uri string for a combined mailbox uri * @param type the uri command type (e.g. "uimessages") @@ -3670,11 +3658,9 @@ public class EmailProvider extends ContentProvider { getExternalUriStringEmail2("compose", Long.toString(id)); } - // TODO: Get these from default account? - Preferences prefs = Preferences.getPreferences(getContext()); if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.AUTO_ADVANCE)) { values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.AUTO_ADVANCE)] = - Integer.toString(UIProvider.AutoAdvance.NEWER); + Integer.toString(mailPrefs.getAutoAdvanceMode()); } if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.SNAP_HEADERS)) { values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.SNAP_HEADERS)] = @@ -3698,7 +3684,7 @@ public class EmailProvider extends ContentProvider { } if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.CONFIRM_DELETE)) { values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.CONFIRM_DELETE)] = - prefs.getConfirmDelete() ? 1 : 0; + mailPrefs.getConfirmDelete() ? 1 : 0; } if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.CONFIRM_ARCHIVE)) { values[colPosMap.get( @@ -3706,7 +3692,7 @@ public class EmailProvider extends ContentProvider { } if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.CONFIRM_SEND)) { values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.CONFIRM_SEND)] = - prefs.getConfirmSend() ? 1 : 0; + mailPrefs.getConfirmSend() ? 1 : 0; } if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.DEFAULT_INBOX)) { values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.DEFAULT_INBOX)] =