Merge "Update settings per latest UX spec." into jb-ub-mail-ur9
diff --git a/res/menu/conversation_list_selection_actions_menu.xml b/res/menu/conversation_list_selection_actions_menu.xml
index c8823ae..d97d6ab 100644
--- a/res/menu/conversation_list_selection_actions_menu.xml
+++ b/res/menu/conversation_list_selection_actions_menu.xml
@@ -53,17 +53,17 @@
android:icon="@drawable/trash"
android:visible="false" />
- <!-- Only one of mark read or mark unread is shown. Both of these are set as always. -->
+ <!-- Only one of mark read or mark unread is shown. -->
<item
android:id="@+id/read"
android:title="@string/mark_read"
- android:showAsAction="always"
+ android:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_mark_read_holo_light" />
<item
android:id="@+id/unread"
android:title="@string/mark_unread"
- android:showAsAction="always"
+ android:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_mark_unread_holo_light" />
<item
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8754154..58a56a6 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -838,33 +838,38 @@
<string name="silent_ringtone">Silent</string>
<!-- Settings screen, preference name for archive vs. delete [CHAR LIMIT=50] -->
- <string name="preference_archive_vs_delete_title">Remove action</string>
+ <string name="preference_removal_action_title">Archive & delete actions</string>
<!-- Options to select from for whether to have archive or delete as the remove action [CHAR LIMIT=50] -->
- <string-array name="prefEntries_archive_vs_delete">
- <item>Archive conversations</item>
- <item>Delete conversations</item>
+ <string-array name="prefEntries_removal_action">
+ <item>Show archive only</item>
+ <item>Show delete only</item>
+ <item>Show archive & delete</item>
</string-array>
<!-- Description of currently selected option of whether to use archive or delete as remove action [CHAR LIMIT=200] -->
- <string-array name="prefSummaries_archive_vs_delete_summary">
- <item>Archive rather than delete conversations</item>
- <item>Delete rather than archive conversations</item>
+ <string-array name="prefSummaries_removal_action_summary">
+ <item>Show archive only</item>
+ <item>Show delete only</item>
+ <item>Show archive & delete</item>
</string-array>
- <string-array translatable="false" name="prefValues_archive_vs_delete">
+ <string-array translatable="false" name="prefValues_removal_action">
<item>archive</item>
<item>delete</item>
+ <item>archive-and-delete</item>
</string-array>
<!-- Dialog title for the choosing whether to use archive or delete as remove action [CHAR LIMIT=150] -->
- <string name="prefDialogTitle_archive_vs_delete">Remove action</string>
+ <string name="prefDialogTitle_removal_action">Archive & delete actions</string>
<!-- The default value -->
- <string translatable="false" name="prefDefault_archive_vs_delete">archive</string>
+ <string translatable="false" name="prefDefault_removal_action">archive</string>
<!-- Settings screen, Reply to all default setting title [CHAR LIMIT=30] -->
<string name="preferences_default_reply_all_title">Reply all</string>
<!-- Settings screen, Reply to all default setting summary [CHAR LIMIT=70] -->
<string name="preferences_default_reply_all_summary">Use as default for message replies</string>
- <!-- Preference name for swipe action [CHAR LIMIT=100]-->
- <string name="preference_swipe_title">Swipe to remove</string>
+ <!-- Preference name for swipe action when action is archive [CHAR LIMIT=100]-->
+ <string name="preference_swipe_title_archive">Swipe to archive</string>
+ <!-- Preference name for swipe action when action is delete [CHAR LIMIT=100]-->
+ <string name="preference_swipe_title_delete">Swipe to delete</string>
<!-- Preference description swiping in conversation list option [CHAR LIMIT=100] -->
<string name="preference_swipe_description">In conversation list</string>
diff --git a/src/com/android/mail/preferences/FolderPreferences.java b/src/com/android/mail/preferences/FolderPreferences.java
index 4da2089..00d7048 100644
--- a/src/com/android/mail/preferences/FolderPreferences.java
+++ b/src/com/android/mail/preferences/FolderPreferences.java
@@ -252,7 +252,8 @@
account.supportsCapability(AccountCapabilities.ARCHIVE)
&& (mFolder.supportsCapability(FolderCapabilities.ARCHIVE)
|| mFolder.supportsCapability(FolderCapabilities.ALLOWS_REMOVE_CONVERSATION));
- final boolean preferDelete = MailPrefs.get(getContext()).getPreferDelete();
+ final boolean preferDelete = MailPrefs.RemovalActions.DELETE.equals(
+ MailPrefs.get(getContext()).getRemovalAction());
final NotificationActionType destructiveActionType =
supportsArchiveRemoveLabel && !preferDelete ?
NotificationActionType.ARCHIVE_REMOVE_LABEL : NotificationActionType.DELETE;
diff --git a/src/com/android/mail/preferences/MailPrefs.java b/src/com/android/mail/preferences/MailPrefs.java
index ff4e0f8..10da3fd 100644
--- a/src/com/android/mail/preferences/MailPrefs.java
+++ b/src/com/android/mail/preferences/MailPrefs.java
@@ -59,9 +59,9 @@
public static final String CONVERSATION_LIST_SWIPE = "conversation-list-swipe";
/**
- * A boolean indicating whether the user prefers delete or archive.
+ * A string indicating the user's removal action preference.
*/
- public static final String PREFER_DELETE = "prefer-delete";
+ public static final String REMOVAL_ACTION = "removal-action";
/** Hidden preference used to cache the active notification set */
private static final String CACHED_ACTIVE_NOTIFICATION_SET =
@@ -71,7 +71,7 @@
new ImmutableSet.Builder<String>()
.add(DEFAULT_REPLY_ALL)
.add(CONVERSATION_LIST_SWIPE)
- .add(PREFER_DELETE)
+ .add(REMOVAL_ACTION)
.build();
}
@@ -82,6 +82,12 @@
public static final String DISABLED = "disabled";
}
+ public static final class RemovalActions {
+ public static final String ARCHIVE = "archive";
+ public static final String DELETE = "delete";
+ public static final String ARCHIVE_AND_DELETE = "archive-and-delete";
+ }
+
public static MailPrefs get(Context c) {
if (sInstance == null) {
sInstance = new MailPrefs(c);
@@ -157,15 +163,20 @@
}
/**
- * Gets a boolean indicating whether delete is preferred over archive.
+ * Returns a string indicating the preferred removal action.
+ * Should be one of the {@link RemovalActions}.
*/
- public boolean getPreferDelete() {
+ public String getRemovalAction() {
final SharedPreferences sharedPreferences = getSharedPreferences();
- return sharedPreferences.getBoolean(PreferenceKeys.PREFER_DELETE, false);
+ return sharedPreferences.getString(PreferenceKeys.REMOVAL_ACTION, RemovalActions.ARCHIVE);
}
- public void setPreferDelete(final boolean preferDelete) {
- getEditor().putBoolean(PreferenceKeys.PREFER_DELETE, preferDelete).apply();
+ /**
+ * Sets the removal action preference.
+ * @param removalAction The preferred {@link RemovalActions}.
+ */
+ public void setRemovalAction(final String removalAction) {
+ getEditor().putString(PreferenceKeys.REMOVAL_ACTION, removalAction).apply();
MailIntentService.broadcastBackupDataChanged(getContext());
}
@@ -191,7 +202,7 @@
*/
public int getConversationListSwipeActionInteger(final boolean allowArchive) {
final boolean swipeEnabled = getIsConversationListSwipeEnabled();
- final boolean archive = !getPreferDelete() && allowArchive;
+ final boolean archive = !RemovalActions.DELETE.equals(getRemovalAction()) && allowArchive;
if (swipeEnabled) {
return archive ? UIProvider.Swipe.ARCHIVE : UIProvider.Swipe.DELETE;
diff --git a/src/com/android/mail/ui/MailActionBarView.java b/src/com/android/mail/ui/MailActionBarView.java
index 2ed3870..80f114c 100644
--- a/src/com/android/mail/ui/MailActionBarView.java
+++ b/src/com/android/mail/ui/MailActionBarView.java
@@ -452,7 +452,11 @@
* preference.
*/
public static void reorderMenu(final Context context, final Menu menu) {
- final boolean preferDelete = MailPrefs.get(context).getPreferDelete();
+ final String removalAction = MailPrefs.get(context).getRemovalAction();
+ final boolean showArchive = MailPrefs.RemovalActions.ARCHIVE.equals(removalAction) ||
+ MailPrefs.RemovalActions.ARCHIVE_AND_DELETE.equals(removalAction);
+ final boolean showDelete = MailPrefs.RemovalActions.DELETE.equals(removalAction) ||
+ MailPrefs.RemovalActions.ARCHIVE_AND_DELETE.equals(removalAction);
// Do a first pass to extract necessary information on what is safe to move to the overflow
boolean archiveVisibleEnabled = false;
@@ -474,15 +478,23 @@
final MenuItem menuItem = menu.getItem(i);
final int itemId = menuItem.getItemId();
- if (preferDelete && deleteVisibleEnabled) {
+ if (!showArchive && deleteVisibleEnabled) {
if (itemId == R.id.archive || itemId == R.id.remove_folder) {
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
- } else if (!preferDelete && archiveVisibleEnabled) {
+ }
+
+ if (!showDelete && archiveVisibleEnabled) {
if (itemId == R.id.delete || itemId == R.id.discard_drafts) {
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
}
+
+ if (showArchive && archiveVisibleEnabled && showDelete && deleteVisibleEnabled) {
+ if (itemId == R.id.move_to) {
+ menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ }
+ }
}
}