diff options
| author | Alice Yang <alice@google.com> | 2013-04-11 14:16:01 -0700 |
|---|---|---|
| committer | Alice Yang <alice@google.com> | 2013-04-11 14:16:01 -0700 |
| commit | 9f1cff0659e4b9a179690d9c31f7a9bf56aad228 (patch) | |
| tree | 3fa53ce65e85d641ac65a9d0b5173257d3eb260e | |
| parent | bb3a938d613824851e4060ef61ed00cb44a183f8 (diff) | |
| download | android_packages_apps_Email-9f1cff0659e4b9a179690d9c31f7a9bf56aad228.tar.gz android_packages_apps_Email-9f1cff0659e4b9a179690d9c31f7a9bf56aad228.tar.bz2 android_packages_apps_Email-9f1cff0659e4b9a179690d9c31f7a9bf56aad228.zip | |
Checkbox vs. sender image setting
Replace the current "Hide checkbox" setting with a tri-state setting with
choice of:
- Show checkboxes
- Show sender image
- Show neither
Bug: 8512959
Change-Id: Ifa233b6d65f8c37388edeed71dbfbfdf1295d6fc
| -rw-r--r-- | res/values/strings.xml | 25 | ||||
| -rw-r--r-- | res/xml/general_preferences.xml | 13 | ||||
| -rw-r--r-- | src/com/android/email/Preferences.java | 37 | ||||
| -rw-r--r-- | src/com/android/email/activity/setup/GeneralPreferences.java | 18 | ||||
| -rw-r--r-- | src/com/android/email/provider/EmailProvider.java | 28 |
5 files changed, 89 insertions, 32 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index d53cfd618..f6f12f559 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1027,6 +1027,24 @@ as <xliff:g id="filename">%s</xliff:g>.</string> <!-- On mailbox settings screen: Mailbox sync window (the number of days to synchronize email for) setting label [CHAR LIMIT=none] --> <string name="mailbox_settings_mailbox_sync_window_label">Days to sync</string> + <!-- Settings screen, title for whether to show checkboxes or sender image or neither [CHAR LIMIT=150] --> + <string name="preference_conversation_list_icon_title">Checkbox/sender image</string> + <!-- Options to select from for whether to show checkboxes or sender images [CHAR LIMIT=50] --> + <string-array name="prefEntries_conversationListIconName"> + <item>Show checkbox</item> + <item>Show image (not working yet)</item> + <item>Show neither</item> + </string-array> + <!-- Description of setting for whether to show checkboxes or sender images [CHAR LIMIT=200] --> + <string name="preference_conversation_list_icon_summary">Choose whether to show checkboxes or sender images in conversation view</string> + <string-array translatable="false" name="prefValues_conversationListIcon"> + <item>checkbox</item> + <item>senderimage</item> + <item>none</item> + </string-array> + <!-- Dialog title for the choosing whether to show checkboxes or sender image [CHAR LIMIT=200] --> + <string name="prefDialogTitle_conversationListIcon">Checkbox/sender image</string> + <!-- Strings used for account shortcut picker --> <!-- String displayed in launcher [CHAR_LIMIT=10] --> <string name="account_shortcut_picker_name">Email account</string> @@ -1095,13 +1113,6 @@ as <xliff:g id="filename">%s</xliff:g>.</string> <!-- First category in general preferences [CHAR LIMIT=64] --> <string name="category_general_preferences">Application</string> - <!-- General preference: Label of the setting for hiding checkboxes in the - message list [CHAR LIMIT=32] --> - <string name="general_preference_hide_checkboxes_label">Hide checkboxes</string> - <!-- General preference: Description of the setting for hiding checkboxes in the - message list [CHAR LIMIT=64] --> - <string name="general_preference_hide_checkboxes_summary">In lists of messages, touch and - hold to select</string> <!-- General preference: Label of the setting for requiring confirmation before message deletion [CHAR LIMIT=32] --> <string name="general_preference_confirm_delete_label">Confirm before deleting</string> diff --git a/res/xml/general_preferences.xml b/res/xml/general_preferences.xml index 3a6415057..e48d6288e 100644 --- a/res/xml/general_preferences.xml +++ b/res/xml/general_preferences.xml @@ -47,12 +47,13 @@ android:entryValues="@array/general_preference_text_zoom_values" android:dialogTitle="@string/general_preference_text_zoom_dialog_title" /> - <CheckBoxPreference - android:key="hide_checkboxes" - android:persistent="true" - android:defaultValue="false" - android:title="@string/general_preference_hide_checkboxes_label" - android:summary="@string/general_preference_hide_checkboxes_summary" /> + <ListPreference + android:key="conversation_list_icon" + android:title="@string/preference_conversation_list_icon_title" + android:summary="@string/preference_conversation_list_icon_summary" + android:entries="@array/prefEntries_conversationListIconName" + android:entryValues="@array/prefValues_conversationListIcon" + android:dialogTitle="@string/prefDialogTitle_conversationListIcon" /> <!-- This may be removed in GeneralPreferences.java --> <CheckBoxPreference diff --git a/src/com/android/email/Preferences.java b/src/com/android/email/Preferences.java index 3cc977986..7048e730f 100644 --- a/src/com/android/email/Preferences.java +++ b/src/com/android/email/Preferences.java @@ -23,6 +23,7 @@ import android.util.Log; import com.android.emailcommon.Logging; import com.android.emailcommon.provider.Account; +import com.android.mail.providers.UIProvider; import org.json.JSONArray; import org.json.JSONException; @@ -55,7 +56,9 @@ public class Preferences { private static final String CONFIRM_SEND = "confirm_send"; @Deprecated private static final String SWIPE_DELETE = "swipe_delete"; + @Deprecated private static final String HIDE_CHECKBOXES = "hide_checkboxes"; + private static final String CONV_LIST_ICON = "conversation_list_icon"; public static final int AUTO_ADVANCE_NEWER = 0; public static final int AUTO_ADVANCE_OLDER = 1; @@ -64,6 +67,7 @@ public class Preferences { private static final int AUTO_ADVANCE_DEFAULT = AUTO_ADVANCE_OLDER; private static final boolean CONFIRM_DELETE_DEFAULT = false; private static final boolean CONFIRM_SEND_DEFAULT = false; + @Deprecated private static final boolean HIDE_CHECKBOXES_DEFAULT = false; // The following constants are used as offsets into R.array.general_preference_text_zoom_size. @@ -75,6 +79,11 @@ public class Preferences { // "normal" will be the default public static final int TEXT_ZOOM_DEFAULT = TEXT_ZOOM_NORMAL; + public static final String CONV_LIST_ICON_CHECKBOX = "checkbox"; + public static final String CONV_LIST_ICON_SENDER_IMAGE = "senderimage"; + public static final String CONV_LIST_ICON_NONE = "none"; + public static final String CONV_LIST_ICON_DEFAULT = CONV_LIST_ICON_CHECKBOX; + private static Preferences sPreferences; private final SharedPreferences mSharedPreferences; @@ -193,12 +202,34 @@ public class Preferences { mSharedPreferences.edit().putInt(AUTO_ADVANCE_DIRECTION, direction).apply(); } - public boolean getHideCheckboxes() { + /** @deprecated Only used for migration */ + @Deprecated + private boolean hasHideCheckboxes() { + return mSharedPreferences.contains(HIDE_CHECKBOXES); + } + + /** @deprecated Only used for migration */ + @Deprecated + private boolean getHideCheckboxes() { return mSharedPreferences.getBoolean(HIDE_CHECKBOXES, HIDE_CHECKBOXES_DEFAULT); } - public void setHideCheckboxes(boolean set) { - mSharedPreferences.edit().putBoolean(HIDE_CHECKBOXES, set).apply(); + public String getConversationListIcon() { + if (!mSharedPreferences.contains(CONV_LIST_ICON)) { + if (hasHideCheckboxes()) { + // Migrate to new settings + if (getHideCheckboxes()) { + setConversationListIcon(CONV_LIST_ICON_NONE); + } else { + setConversationListIcon(CONV_LIST_ICON_CHECKBOX); + } + } + } + return mSharedPreferences.getString(CONV_LIST_ICON, "checkbox"); + } + + public void setConversationListIcon(String value) { + mSharedPreferences.edit().putString(CONV_LIST_ICON, value).apply(); } public boolean getConfirmDelete() { diff --git a/src/com/android/email/activity/setup/GeneralPreferences.java b/src/com/android/email/activity/setup/GeneralPreferences.java index b0e170590..71f376954 100644 --- a/src/com/android/email/activity/setup/GeneralPreferences.java +++ b/src/com/android/email/activity/setup/GeneralPreferences.java @@ -28,7 +28,6 @@ import android.widget.Toast; import com.android.email.Preferences; import com.android.email.R; import com.android.email.provider.EmailProvider; - import com.android.mail.preferences.MailPrefs; import com.android.mail.utils.Utils; @@ -39,7 +38,7 @@ public class GeneralPreferences extends EmailPreferenceFragment implements private static final String PREFERENCE_KEY_TEXT_ZOOM = "text_zoom"; 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_HIDE_CHECKBOXES = "hide_checkboxes"; + private static final String PREFERENCE_KEY_CONV_LIST_ICON = "conversation_list_icon"; private static final String PREFERENCE_KEY_SWIPE_DELETE = "swipe_delete"; private static final String PREFERENCE_KEY_CLEAR_TRUSTED_SENDERS = "clear_trusted_senders"; @@ -54,7 +53,7 @@ public class GeneralPreferences extends EmailPreferenceFragment implements private ListPreference mTextZoom; private CheckBoxPreference mConfirmDelete; private CheckBoxPreference mConfirmSend; - private CheckBoxPreference mHideCheckboxes; + private ListPreference mConvListIcon; private CheckBoxPreference mSwipeDelete; private boolean mSettingsChanged = false; @@ -113,6 +112,9 @@ public class GeneralPreferences extends EmailPreferenceFragment implements } else if (MailPrefs.PreferenceKeys.DEFAULT_REPLY_ALL.equals(key)) { mMailPrefs.setDefaultReplyAll((Boolean) newValue); return true; + } else if (PREFERENCE_KEY_CONV_LIST_ICON.equals(key)) { + mPreferences.setConversationListIcon((String) newValue); + return true; } return false; } @@ -136,9 +138,6 @@ public class GeneralPreferences extends EmailPreferenceFragment implements } else if (PREFERENCE_KEY_CONFIRM_SEND.equals(key)) { mPreferences.setConfirmSend(mConfirmSend.isChecked()); return true; - } else if (PREFERENCE_KEY_HIDE_CHECKBOXES.equals(key)) { - mPreferences.setHideCheckboxes(mHideCheckboxes.isChecked()); - return true; } else if (MailPrefs.PreferenceKeys.CONVERSATION_LIST_SWIPE_ACTION.equals(key)) { mMailPrefs .setConversationListSwipeAction(mSwipeDelete.isChecked() @@ -161,9 +160,14 @@ public class GeneralPreferences extends EmailPreferenceFragment implements mTextZoom.setOnPreferenceChangeListener(this); } + mConvListIcon = (ListPreference) findPreference(PREFERENCE_KEY_CONV_LIST_ICON); + if (mConvListIcon != null) { + mConvListIcon.setValue(mPreferences.getConversationListIcon()); + mConvListIcon.setOnPreferenceChangeListener(this); + } + mConfirmDelete = (CheckBoxPreference) findPreference(PREFERENCE_KEY_CONFIRM_DELETE); mConfirmSend = (CheckBoxPreference) findPreference(PREFERENCE_KEY_CONFIRM_SEND); - mHideCheckboxes = (CheckBoxPreference) findPreference(PREFERENCE_KEY_HIDE_CHECKBOXES); mSwipeDelete = (CheckBoxPreference) findPreference(MailPrefs.PreferenceKeys.CONVERSATION_LIST_SWIPE_ACTION); mSwipeDelete.setChecked(MailPrefs.ConversationListSwipeActions.DELETE.equals( diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java index da94e1085..5aef369b4 100644 --- a/src/com/android/email/provider/EmailProvider.java +++ b/src/com/android/email/provider/EmailProvider.java @@ -2824,9 +2824,10 @@ outer: ? SWIPE_DELETE : SWIPE_DISABLED); } if (projectionColumns.contains( - UIProvider.AccountColumns.SettingsColumns.HIDE_CHECKBOXES)) { - values.put(UIProvider.AccountColumns.SettingsColumns.HIDE_CHECKBOXES, - prefs.getHideCheckboxes() ? "1" : "0"); + UIProvider.AccountColumns.SettingsColumns.CONV_LIST_ICON)) { + String convListIcon = prefs.getConversationListIcon(); + values.put(UIProvider.AccountColumns.SettingsColumns.CONV_LIST_ICON, + convListIconToUiValue(convListIcon)); } if (projectionColumns.contains(UIProvider.AccountColumns.SettingsColumns.AUTO_ADVANCE)) { int autoAdvance = prefs.getAutoAdvanceDirection(); @@ -2913,6 +2914,18 @@ outer: } } + private static int convListIconToUiValue(String convListIcon) { + if (Preferences.CONV_LIST_ICON_CHECKBOX.equals(convListIcon)) { + return UIProvider.ConversationListIcon.CHECKBOX; + } else if (Preferences.CONV_LIST_ICON_SENDER_IMAGE.equals(convListIcon)) { + return UIProvider.ConversationListIcon.SENDER_IMAGE; + } else if (Preferences.CONV_LIST_ICON_NONE.equals(convListIcon)) { + return UIProvider.ConversationListIcon.NONE; + } else { + return UIProvider.ConversationListIcon.DEFAULT; + } + } + /** * Generate a Uri string for a combined mailbox uri * @param type the uri command type (e.g. "uimessages") @@ -3032,8 +3045,9 @@ outer: values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.REPLY_BEHAVIOR)] = Integer.toString(UIProvider.DefaultReplyBehavior.REPLY); } - if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.HIDE_CHECKBOXES)) { - values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.HIDE_CHECKBOXES)] = 0; + if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.CONV_LIST_ICON)) { + values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.CONV_LIST_ICON)] = + prefs.getConversationListIcon(); } if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.CONFIRM_DELETE)) { values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.CONFIRM_DELETE)] = @@ -3047,10 +3061,6 @@ outer: values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.CONFIRM_SEND)] = prefs.getConfirmSend() ? 1 : 0; } - if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.HIDE_CHECKBOXES)) { - values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.HIDE_CHECKBOXES)] = - prefs.getHideCheckboxes() ? 1 : 0; - } if (colPosMap.containsKey(UIProvider.AccountColumns.SettingsColumns.DEFAULT_INBOX)) { values[colPosMap.get(UIProvider.AccountColumns.SettingsColumns.DEFAULT_INBOX)] = combinedUriString("uifolder", combinedMailboxId(Mailbox.TYPE_INBOX)); |
