[pim/kmail] src: Continue to implement undoredomanager

Laurent Montel <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 42361f427063fbe7290ce227c6a208299e7c2471 by Laurent Montel.
Committed on 26/07/2026 at 19:34.
Pushed by mlaurent into branch 'master'.

Continue to implement undoredomanager

M  +36   -1    src/kmundoredomanager.cpp
M  +7    -0    src/kmundoredomanager.h

https://invent.kde.org/pim/kmail/-/commit/42361f427063fbe7290ce227c6a208299e7c2471

diff --git a/src/kmundoredomanager.cpp b/src/kmundoredomanager.cpp
index b66519f5e..4b73de531 100644
--- a/src/kmundoredomanager.cpp
+++ b/src/kmundoredomanager.cpp
@@ -7,7 +7,10 @@
 #include "kmundoredomanager.h"
 #include "kmkernel.h"
 #include <Akonadi/ItemMoveJob>
+#include <KLocalizedString>
+#include <KMessageBox>
 #include <QUndoStack>
+
 using namespace KMail;
 KMUndoRedoManager::KMUndoRedoManager(QObject *parent)
     : QObject{parent}
@@ -17,9 +20,26 @@ KMUndoRedoManager::KMUndoRedoManager(QObject *parent)
 
 KMUndoRedoManager::~KMUndoRedoManager() = default;
 
+void KMUndoRedoManager::moveItems()
+{
+#if 0
+    auto job = new Akonadi::ItemMoveJob(mItems, mSrcFolder, nullptr);
+    connect(job, &Akonadi::ItemMoveJob::result, this, &KMUndoRedoManager::slotMoveResult);
+#endif
+    // TODO
+}
+
+void KMUndoRedoManager::slotMoveResult(KJob *job)
+{
+    if (job->error()) {
+        KMessageBox::error(kmkernel->mainWin(), i18n("Cannot move message. %1", job->errorString()));
+    }
+}
+
 int KMUndoRedoManager::newUndoMoveAction(const Akonadi::Collection &srcFolder, const Akonadi::Collection &destFolder)
 {
-    auto info = new KMUndoInfoMoveItems;
+    auto info = new KMUndoInfoMoveItems(this);
+    mUndoStack->push(info);
 #if 0
     info->id = ++mLastId;
     info->srcFolder = srcFolder;
@@ -43,8 +63,18 @@ void KMUndoRedoManager::addMsgToMoveAction(int undoId, const Akonadi::Item &item
     // TODO
 }
 
+KMUndoInfoMoveItems::KMUndoInfoMoveItems(KMUndoRedoManager *manager, QUndoCommand *parent)
+    : QUndoCommand(parent)
+    , mManager(manager)
+{
+}
+
 void KMUndoInfoMoveItems::undo()
 {
+#if 0
+    auto job = new Akonadi::ItemMoveJob(mItems, mSrcFolder, nullptr);
+    connect(job, &Akonadi::ItemMoveJob::result, this, &KMUndoInfoMoveItems::slotMoveResult);
+#endif
     // TODO
 }
 
@@ -63,6 +93,11 @@ void KMUndoInfoMoveItems::setItems(const Akonadi::Item::List &newItems)
     mItems = newItems;
 }
 
+void KMUndoInfoMoveItems::addItem(const Akonadi::Item &item)
+{
+    mItems.append(item);
+}
+
 Akonadi::Collection KMUndoInfoMoveItems::srcFolder() const
 {
     return mSrcFolder;
diff --git a/src/kmundoredomanager.h b/src/kmundoredomanager.h
index 4e3f5ffc8..d7b2a5020 100644
--- a/src/kmundoredomanager.h
+++ b/src/kmundoredomanager.h
@@ -22,6 +22,9 @@ public:
     [[nodiscard]] int newUndoMoveAction(const Akonadi::Collection &srcFolder, const Akonadi::Collection &destFolder);
     void addMsgToMoveAction(int undoId, const Akonadi::Item &item);
 
+    void moveItems();
+    void slotMoveResult(KJob *job);
+
 private:
     QUndoStack *const mUndoStack;
 };
@@ -29,11 +32,14 @@ private:
 class KMUndoInfoMoveItems : public QUndoCommand
 {
 public:
+    explicit KMUndoInfoMoveItems(KMUndoRedoManager *manager, QUndoCommand *parent = nullptr);
+
     void undo() override;
     void redo() override;
 
     [[nodiscard]] Akonadi::Item::List items() const;
     void setItems(const Akonadi::Item::List &newItems);
+    void addItem(const Akonadi::Item &item);
 
     [[nodiscard]] Akonadi::Collection srcFolder() const;
     void setSrcFolder(const Akonadi::Collection &newSrcFolder);
@@ -45,6 +51,7 @@ public:
     void setMoveToTrash(bool newMoveToTrash);
 
 private:
+    KMUndoRedoManager *const mManager;
     Akonadi::Item::List mItems;
     Akonadi::Collection mSrcFolder;
     Akonadi::Collection mDestFolder;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.