Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d530b20e authored by cketti's avatar cketti
Browse files

Copy/move all messages in a thread when copying/moving placeholder

parent dfbfaf48
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -3442,6 +3442,27 @@ public class MessagingController implements Runnable {
        });
    }

    public void moveMessagesInThread(final Account account, final String srcFolder,
            final List<Message> messages, final String destFolder) {

        for (Message message : messages) {
            suppressMessage(account, srcFolder, message);
        }

        putBackground("moveMessagesInThread", null, new Runnable() {
            @Override
            public void run() {
                try {
                    List<Message> 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<Message> messages, final String destFolder) {

        putBackground("copyMessagesInThread", null, new Runnable() {
            @Override
            public void run() {
                try {
                    List<Message> 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) {

+10 −2
Original line number Diff line number Diff line
@@ -2217,11 +2217,19 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
        }

        if (operation == FolderOperation.MOVE) {
            if (mThreadedList) {
                mController.moveMessagesInThread(account, folderName, outMessages, destination);
            } else {
                mController.moveMessages(account, folderName, outMessages, destination, null);
            }
        } else {
            if (mThreadedList) {
                mController.copyMessagesInThread(account, folderName, outMessages, destination);
            } else {
                mController.copyMessages(account, folderName, outMessages, destination, null);
            }
        }
    }


    class ActionModeCallback implements ActionMode.Callback {