From d530b20e2b3e0db1917df9a3f10d70c5cbc57e3f Mon Sep 17 00:00:00 2001 From: cketti Date: Sat, 3 Nov 2012 08:30:32 +0100 Subject: [PATCH] Copy/move all messages in a thread when copying/moving placeholder --- .../k9/controller/MessagingController.java | 38 +++++++++++++++++++ .../fsck/k9/fragment/MessageListFragment.java | 12 +++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/com/fsck/k9/controller/MessagingController.java b/src/com/fsck/k9/controller/MessagingController.java index 3f3ae2f84..890d40053 100644 --- a/src/com/fsck/k9/controller/MessagingController.java +++ b/src/com/fsck/k9/controller/MessagingController.java @@ -3442,6 +3442,27 @@ public class MessagingController implements Runnable { }); } + public void moveMessagesInThread(final Account account, final String srcFolder, + final List messages, final String destFolder) { + + for (Message message : messages) { + suppressMessage(account, srcFolder, message); + } + + putBackground("moveMessagesInThread", null, new Runnable() { + @Override + public void run() { + try { + List messagesInThreads = collectMessagesInThreads(account, messages); + moveOrCopyMessageSynchronous(account, srcFolder, messagesInThreads, destFolder, + false, null); + } catch (MessagingException e) { + addErrorMessage(account, "Exception while moving messages", e); + } + } + }); + } + public void moveMessage(final Account account, final String srcFolder, final Message message, final String destFolder, final MessagingListener listener) { @@ -3461,6 +3482,23 @@ public class MessagingController implements Runnable { }); } + public void copyMessagesInThread(final Account account, final String srcFolder, + final List messages, final String destFolder) { + + putBackground("copyMessagesInThread", null, new Runnable() { + @Override + public void run() { + try { + List messagesInThreads = collectMessagesInThreads(account, messages); + moveOrCopyMessageSynchronous(account, srcFolder, messagesInThreads, destFolder, + true, null); + } catch (MessagingException e) { + addErrorMessage(account, "Exception while copying messages", e); + } + } + }); + } + public void copyMessage(final Account account, final String srcFolder, final Message message, final String destFolder, final MessagingListener listener) { diff --git a/src/com/fsck/k9/fragment/MessageListFragment.java b/src/com/fsck/k9/fragment/MessageListFragment.java index a96eef512..f140dd994 100644 --- a/src/com/fsck/k9/fragment/MessageListFragment.java +++ b/src/com/fsck/k9/fragment/MessageListFragment.java @@ -2217,9 +2217,17 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick } if (operation == FolderOperation.MOVE) { - mController.moveMessages(account, folderName, outMessages, destination, null); + if (mThreadedList) { + mController.moveMessagesInThread(account, folderName, outMessages, destination); + } else { + mController.moveMessages(account, folderName, outMessages, destination, null); + } } else { - mController.copyMessages(account, folderName, outMessages, destination, null); + if (mThreadedList) { + mController.copyMessagesInThread(account, folderName, outMessages, destination); + } else { + mController.copyMessages(account, folderName, outMessages, destination, null); + } } }