Move all general prefs values to UnifiedEmail

b/9566150

Change-Id: Id7058586c71c3c1cc4933dc28532a02df90c29bc
This commit is contained in:
Tony Mantler 2014-06-12 16:20:14 -07:00
parent 8183be889f
commit 988ad6e002
5 changed files with 67 additions and 114 deletions

View File

@ -18,19 +18,20 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="confirm_delete"
android:key="confirm-delete"
android:persistent="true"
android:defaultValue="false"
android:title="@string/general_preference_confirm_delete_label" />
<CheckBoxPreference
android:key="confirm_send"
android:key="confirm-send"
android:persistent="true"
android:defaultValue="false"
android:title="@string/general_preference_confirm_send_label" />
<ListPreference
android:key="auto_advance"
android:key="auto-advance-mode-widget"
android:persistent="false"
android:title="@string/auto_advance_label"
android:summary="@string/auto_advance_summary"
android:entries="@array/prefEntries_autoAdvance"
@ -38,23 +39,22 @@
android:dialogTitle="@string/auto_advance_help_title" />
<CheckBoxPreference
android:key="conversation_list_icon"
android:persistent="false"
android:key="conversation-list-sender-image"
android:persistent="true"
android:defaultValue="true"
android:title="@string/preference_sender_image_title"
android:summary="@string/preference_sender_image_description" />
<!-- This may be removed in GeneralPreferences.java -->
<CheckBoxPreference
android:key="default-reply-all"
android:persistent="false"
android:persistent="true"
android:defaultValue="false"
android:title="@string/preferences_default_reply_all_title"
android:summary="@string/preferences_default_reply_all_summary" />
<CheckBoxPreference
android:key="conversation-list-swipe"
android:persistent="false"
android:persistent="true"
android:defaultValue="true"
android:title="@string/preference_swipe_title_delete"
android:summary="@string/preference_swipe_description" />

View File

@ -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;
}
}

View File

@ -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

View File

@ -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<Account> 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<String> 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);
}
}
}
}

View File

@ -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)] =