From 41927399c33eae952f78b8361d145c00c5f744d2 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 10 Jan 2017 12:45:30 +0100 Subject: Move to folder action --- framework/domain/foldercontroller.cpp | 18 ++++++++++++++---- framework/domain/foldercontroller.h | 2 ++ framework/domain/mailcontroller.cpp | 12 +++++++++++- framework/domain/mailcontroller.h | 2 ++ 4 files changed, 29 insertions(+), 5 deletions(-) (limited to 'framework/domain') diff --git a/framework/domain/foldercontroller.cpp b/framework/domain/foldercontroller.cpp index d06ccb52..65c34dba 100644 --- a/framework/domain/foldercontroller.cpp +++ b/framework/domain/foldercontroller.cpp @@ -23,20 +23,22 @@ SINK_DEBUG_AREA("foldercontroller"); +using namespace Sink; +using namespace Sink::ApplicationDomain; + FolderController::FolderController() : Kube::Controller(), - action_synchronize{new Kube::ControllerAction{this, &FolderController::synchronize}} + action_synchronize{new Kube::ControllerAction{this, &FolderController::synchronize}}, + action_moveToFolder{new Kube::ControllerAction{this, &FolderController::moveToFolder}} { } void FolderController::synchronize() { - using namespace Sink; - using namespace Sink::ApplicationDomain; auto job = [&] { if (auto folder = getFolder()) { SinkLog() << "Synchronizing folder " << folder->resourceInstanceIdentifier() << folder->identifier(); - auto scope = SyncScope().resourceFilter(folder->resourceInstanceIdentifier()).filter(QVariant::fromValue(folder->identifier())); + auto scope = SyncScope().resourceFilter(folder->resourceInstanceIdentifier()).filter(QVariant::fromValue(folder->identifier())); scope.setType(); return Store::synchronize(scope); } else { @@ -47,3 +49,11 @@ void FolderController::synchronize() run(job); } +void FolderController::moveToFolder() +{ + auto mail = getMail(); + auto targetFolder = getFolder(); + mail->setFolder(*targetFolder); + SinkLog() << "Moving to folder " << mail->identifier() << targetFolder->identifier(); + run(Store::modify(*mail)); +} diff --git a/framework/domain/foldercontroller.h b/framework/domain/foldercontroller.h index 24d6929c..b56e08e8 100644 --- a/framework/domain/foldercontroller.h +++ b/framework/domain/foldercontroller.h @@ -26,7 +26,9 @@ class FolderController : public Kube::Controller { Q_OBJECT KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Folder::Ptr, Folder, folder) + KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Mail::Ptr, Mail, mail) KUBE_CONTROLLER_ACTION(synchronize) + KUBE_CONTROLLER_ACTION(moveToFolder) public: explicit FolderController(); diff --git a/framework/domain/mailcontroller.cpp b/framework/domain/mailcontroller.cpp index 3e5e6ed4..a5d7efb7 100644 --- a/framework/domain/mailcontroller.cpp +++ b/framework/domain/mailcontroller.cpp @@ -33,7 +33,8 @@ MailController::MailController() action_markAsImportant{new Kube::ControllerAction{this, &MailController::markAsImportant}}, action_moveToTrash{new Kube::ControllerAction{this, &MailController::moveToTrash}}, action_restoreFromTrash{new Kube::ControllerAction{this, &MailController::restoreFromTrash}}, - action_remove{new Kube::ControllerAction{this, &MailController::remove}} + action_remove{new Kube::ControllerAction{this, &MailController::remove}}, + action_moveToFolder{new Kube::ControllerAction{this, &MailController::moveToFolder}} { QObject::connect(this, &MailController::mailChanged, &MailController::updateActions); updateActions(); @@ -95,3 +96,12 @@ void MailController::remove() run(Store::remove(*mail)); } +void MailController::moveToFolder() +{ + auto mail = getMail(); + auto targetFolder = getTargetFolder(); + mail->setFolder(*targetFolder); + SinkLog() << "Moving to folder " << mail->identifier() << targetFolder->identifier(); + run(Store::modify(*mail)); +} + diff --git a/framework/domain/mailcontroller.h b/framework/domain/mailcontroller.h index b92fd566..b4f08aac 100644 --- a/framework/domain/mailcontroller.h +++ b/framework/domain/mailcontroller.h @@ -26,12 +26,14 @@ class MailController : public Kube::Controller { Q_OBJECT KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Mail::Ptr, Mail, mail) + KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Folder::Ptr, TargetFolder, targetFolder) KUBE_CONTROLLER_ACTION(markAsRead) KUBE_CONTROLLER_ACTION(markAsUnread) KUBE_CONTROLLER_ACTION(markAsImportant) KUBE_CONTROLLER_ACTION(moveToTrash) KUBE_CONTROLLER_ACTION(restoreFromTrash) KUBE_CONTROLLER_ACTION(remove) + KUBE_CONTROLLER_ACTION(moveToFolder) public: explicit MailController(); -- cgit v1.2.3