summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/mail/browse/SelectedConversationsActionMenu.java4
-rw-r--r--src/com/android/mail/ui/AbstractActivityController.java20
-rw-r--r--src/com/android/mail/ui/FoldersSelectionDialog.java9
3 files changed, 21 insertions, 12 deletions
diff --git a/src/com/android/mail/browse/SelectedConversationsActionMenu.java b/src/com/android/mail/browse/SelectedConversationsActionMenu.java
index 1e7bf04b2..b3a9488ac 100644
--- a/src/com/android/mail/browse/SelectedConversationsActionMenu.java
+++ b/src/com/android/mail/browse/SelectedConversationsActionMenu.java
@@ -158,8 +158,8 @@ public class SelectedConversationsActionMenu implements ActionMode.Callback,
}
break;
case R.id.change_folder:
- new FoldersSelectionDialog(mContext, mAccount, mController, mSelectionSet.values())
- .show();
+ new FoldersSelectionDialog(mContext, mAccount, mController, mSelectionSet.values(),
+ true).show();
break;
case R.id.mark_important:
markConversationsImportant(true);
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index 07efd27ba..55a5d0ba6 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -675,7 +675,7 @@ public abstract class AbstractActivityController implements ActivityController,
break;
case R.id.change_folder:
new FoldersSelectionDialog(mActivity.getActivityContext(), mAccount, this,
- Conversation.listOf(mCurrentConversation)).show();
+ Conversation.listOf(mCurrentConversation), false).show();
break;
default:
handled = false;
@@ -1585,7 +1585,7 @@ public abstract class AbstractActivityController implements ActivityController,
// conversations to.
@Override
public final void onFolderChangesCommit(
- Collection<Folder> folders, Collection<Conversation> target) {
+ Collection<Folder> folders, Collection<Conversation> target, boolean batch) {
final boolean isDestructive = !Folder.containerIncludes(folders, mFolder);
LogUtils.d(LOG_TAG, "onFolderChangesCommit: isDestructive = %b", isDestructive);
if (isDestructive) {
@@ -1593,7 +1593,8 @@ public abstract class AbstractActivityController implements ActivityController,
c.localDeleteOnUpdate = true;
}
}
- final DestructiveAction folderChange = getFolderChange(target, folders, isDestructive);
+ final DestructiveAction folderChange = getFolderChange(target, folders, isDestructive,
+ batch);
// Update the UI elements depending no their visibility and availability
// TODO(viki): Consolidate this into a single method requestDelete.
if (isDestructive) {
@@ -1798,7 +1799,7 @@ public abstract class AbstractActivityController implements ActivityController,
final Collection<Conversation> conversations = mSelectedSet.values();
final Collection<Folder> dropTarget = Folder.listOf(folder);
// Drag and drop is destructive: we remove conversations from the current folder.
- final DestructiveAction action = getFolderChange(conversations, dropTarget, true);
+ final DestructiveAction action = getFolderChange(conversations, dropTarget, true, true);
requestDelete(conversations, action);
}
@@ -1961,16 +1962,18 @@ public abstract class AbstractActivityController implements ActivityController,
private final boolean mIsDestructive;
/** Whether this destructive action has already been performed */
private boolean mCompleted;
+ private boolean mIsSelectedSet;
/**
* Create a new folder destruction object to act on the given conversations.
* @param target
*/
private FolderDestruction(final Collection<Conversation> target,
- final Collection<Folder> folders, boolean isDestructive) {
+ final Collection<Folder> folders, boolean isDestructive, boolean isBatch) {
mTarget.addAll(target);
mFolderList.addAll(folders);
mIsDestructive = isDestructive;
+ mIsSelectedSet = isBatch;
}
@Override
@@ -1988,6 +1991,9 @@ public abstract class AbstractActivityController implements ActivityController,
ConversationColumns.RAW_FOLDERS,
Folder.getSerializedFolderString(mFolder, mFolderList));
refreshConversationList();
+ if (mIsSelectedSet) {
+ mSelectedSet.clear();
+ }
}
/**
* Returns true if this action has been performed, false otherwise.
@@ -2003,8 +2009,8 @@ public abstract class AbstractActivityController implements ActivityController,
}
private final DestructiveAction getFolderChange(Collection<Conversation> target,
- Collection<Folder> folders, boolean isDestructive){
- final DestructiveAction da = new FolderDestruction(target, folders, isDestructive);
+ Collection<Folder> folders, boolean isDestructive, boolean isBatch){
+ final DestructiveAction da = new FolderDestruction(target, folders, isDestructive, isBatch);
registerDestructiveAction(da);
return da;
}
diff --git a/src/com/android/mail/ui/FoldersSelectionDialog.java b/src/com/android/mail/ui/FoldersSelectionDialog.java
index 6ae279aa0..b971c4c62 100644
--- a/src/com/android/mail/ui/FoldersSelectionDialog.java
+++ b/src/com/android/mail/ui/FoldersSelectionDialog.java
@@ -47,6 +47,7 @@ public class FoldersSelectionDialog implements OnClickListener, OnMultiChoiceCli
private boolean mSingle = false;
private FolderSelectorAdapter mAdapter;
private final Collection<Conversation> mTarget;
+ private boolean mBatch;
public interface FolderChangeCommitListener {
/**
@@ -54,16 +55,18 @@ public class FoldersSelectionDialog implements OnClickListener, OnMultiChoiceCli
* folders that they might be assigned to.
* @param folders the folders to assign the conversations to.
* @param target the conversations to act upon.
+ * @param batch whether this is a batch operation
*/
public void onFolderChangesCommit(
- Collection<Folder> folders, Collection<Conversation> target);
+ Collection<Folder> folders, Collection<Conversation> target, boolean batch);
}
public FoldersSelectionDialog(final Context context, Account account,
final FolderChangeCommitListener commitListener,
- Collection<Conversation> target) {
+ Collection<Conversation> target, boolean isBatch) {
mCommitListener = commitListener;
mTarget = target;
+ mBatch = isBatch;
// Mapping of a folder's uri to its checked state
mCheckedState = new HashMap<Folder, Boolean>();
@@ -150,7 +153,7 @@ public class FoldersSelectionDialog implements OnClickListener, OnMultiChoiceCli
}
}
if (mCommitListener != null) {
- mCommitListener.onFolderChangesCommit(folders, mTarget);
+ mCommitListener.onFolderChangesCommit(folders, mTarget, mBatch);
}
break;
case DialogInterface.BUTTON_NEGATIVE: