Support "Move to" functionality alongside "Change labels"
Cherry-picking Rohan's original change since I messed something up
while fixing conflicts.
User cannot move an email from one defined label to another.
Change label is a hassle to use to only select one and a
menu item for moving is preferable.
This change introduces the "Move to" as part of the overflow
menu. It allows for users to move emails from folders, excluding
Starred/Important.
Bug: 8157593
Change-Id: Iaf8660fb01f731f5cbcb2253a3768b0d7b429132
diff --git a/src/com/android/mail/browse/SelectedConversationsActionMenu.java b/src/com/android/mail/browse/SelectedConversationsActionMenu.java
index 5fd1414..43efc86 100644
--- a/src/com/android/mail/browse/SelectedConversationsActionMenu.java
+++ b/src/com/android/mail/browse/SelectedConversationsActionMenu.java
@@ -163,6 +163,8 @@
starConversations(false);
}
break;
+ case R.id.move_to:
+ /* fall through */
case R.id.change_folder:
boolean cantMove = false;
Account acct = mAccount;
@@ -187,7 +189,8 @@
}
if (!cantMove) {
final FolderSelectionDialog dialog = FolderSelectionDialog.getInstance(
- mContext, acct, mUpdater, mSelectionSet.values(), true, mFolder);
+ mContext, acct, mUpdater, mSelectionSet.values(), true, mFolder,
+ item.getItemId() == R.id.move_to);
if (dialog != null) {
dialog.show();
}
@@ -369,10 +372,14 @@
// 3) If we show neither archive or remove folder, then show a disabled
// archive icon if the setting for that is true.
final MenuItem removeFolder = menu.findItem(R.id.remove_folder);
+ final MenuItem moveTo = menu.findItem(R.id.move_to);
final boolean showRemoveFolder = mFolder != null && mFolder.type == FolderType.DEFAULT
&& mFolder.supportsCapability(FolderCapabilities.CAN_ACCEPT_MOVED_MESSAGES)
&& !mFolder.isProviderFolder();
+ final boolean showMoveTo = mFolder != null
+ && mFolder.supportsCapability(FolderCapabilities.ALLOWS_REMOVE_CONVERSATION);
removeFolder.setVisible(showRemoveFolder);
+ moveTo.setVisible(showMoveTo);
if (mFolder != null && showRemoveFolder) {
removeFolder.setTitle(mActivity.getActivityContext().getString(R.string.remove_folder,
mFolder.name));