summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-10 12:45:30 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-10 12:46:33 +0100
commit41927399c33eae952f78b8361d145c00c5f744d2 (patch)
treee0d905f5b70e557e0d1dc8198231d62ac57cffe1
parent229492f0550730a62d74935e45087683cb5f88e9 (diff)
downloadkube-41927399c33eae952f78b8361d145c00c5f744d2.tar.gz
kube-41927399c33eae952f78b8361d145c00c5f744d2.zip
Move to folder action
-rw-r--r--framework/domain/foldercontroller.cpp18
-rw-r--r--framework/domain/foldercontroller.h2
-rw-r--r--framework/domain/mailcontroller.cpp12
-rw-r--r--framework/domain/mailcontroller.h2
4 files changed, 29 insertions, 5 deletions
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 @@
23 23
24SINK_DEBUG_AREA("foldercontroller"); 24SINK_DEBUG_AREA("foldercontroller");
25 25
26using namespace Sink;
27using namespace Sink::ApplicationDomain;
28
26FolderController::FolderController() 29FolderController::FolderController()
27 : Kube::Controller(), 30 : Kube::Controller(),
28 action_synchronize{new Kube::ControllerAction{this, &FolderController::synchronize}} 31 action_synchronize{new Kube::ControllerAction{this, &FolderController::synchronize}},
32 action_moveToFolder{new Kube::ControllerAction{this, &FolderController::moveToFolder}}
29{ 33{
30} 34}
31 35
32void FolderController::synchronize() 36void FolderController::synchronize()
33{ 37{
34 using namespace Sink;
35 using namespace Sink::ApplicationDomain;
36 auto job = [&] { 38 auto job = [&] {
37 if (auto folder = getFolder()) { 39 if (auto folder = getFolder()) {
38 SinkLog() << "Synchronizing folder " << folder->resourceInstanceIdentifier() << folder->identifier(); 40 SinkLog() << "Synchronizing folder " << folder->resourceInstanceIdentifier() << folder->identifier();
39 auto scope = SyncScope().resourceFilter(folder->resourceInstanceIdentifier()).filter<Mail::Folder>(QVariant::fromValue(folder->identifier())); 41 auto scope = SyncScope().resourceFilter(folder->resourceInstanceIdentifier()).filter<ApplicationDomain::Mail::Folder>(QVariant::fromValue(folder->identifier()));
40 scope.setType<ApplicationDomain::Mail>(); 42 scope.setType<ApplicationDomain::Mail>();
41 return Store::synchronize(scope); 43 return Store::synchronize(scope);
42 } else { 44 } else {
@@ -47,3 +49,11 @@ void FolderController::synchronize()
47 run(job); 49 run(job);
48} 50}
49 51
52void FolderController::moveToFolder()
53{
54 auto mail = getMail();
55 auto targetFolder = getFolder();
56 mail->setFolder(*targetFolder);
57 SinkLog() << "Moving to folder " << mail->identifier() << targetFolder->identifier();
58 run(Store::modify(*mail));
59}
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
26{ 26{
27 Q_OBJECT 27 Q_OBJECT
28 KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Folder::Ptr, Folder, folder) 28 KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Folder::Ptr, Folder, folder)
29 KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Mail::Ptr, Mail, mail)
29 KUBE_CONTROLLER_ACTION(synchronize) 30 KUBE_CONTROLLER_ACTION(synchronize)
31 KUBE_CONTROLLER_ACTION(moveToFolder)
30 32
31public: 33public:
32 explicit FolderController(); 34 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()
33 action_markAsImportant{new Kube::ControllerAction{this, &MailController::markAsImportant}}, 33 action_markAsImportant{new Kube::ControllerAction{this, &MailController::markAsImportant}},
34 action_moveToTrash{new Kube::ControllerAction{this, &MailController::moveToTrash}}, 34 action_moveToTrash{new Kube::ControllerAction{this, &MailController::moveToTrash}},
35 action_restoreFromTrash{new Kube::ControllerAction{this, &MailController::restoreFromTrash}}, 35 action_restoreFromTrash{new Kube::ControllerAction{this, &MailController::restoreFromTrash}},
36 action_remove{new Kube::ControllerAction{this, &MailController::remove}} 36 action_remove{new Kube::ControllerAction{this, &MailController::remove}},
37 action_moveToFolder{new Kube::ControllerAction{this, &MailController::moveToFolder}}
37{ 38{
38 QObject::connect(this, &MailController::mailChanged, &MailController::updateActions); 39 QObject::connect(this, &MailController::mailChanged, &MailController::updateActions);
39 updateActions(); 40 updateActions();
@@ -95,3 +96,12 @@ void MailController::remove()
95 run(Store::remove(*mail)); 96 run(Store::remove(*mail));
96} 97}
97 98
99void MailController::moveToFolder()
100{
101 auto mail = getMail();
102 auto targetFolder = getTargetFolder();
103 mail->setFolder(*targetFolder);
104 SinkLog() << "Moving to folder " << mail->identifier() << targetFolder->identifier();
105 run(Store::modify(*mail));
106}
107
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
26{ 26{
27 Q_OBJECT 27 Q_OBJECT
28 KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Mail::Ptr, Mail, mail) 28 KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Mail::Ptr, Mail, mail)
29 KUBE_CONTROLLER_PROPERTY(Sink::ApplicationDomain::Folder::Ptr, TargetFolder, targetFolder)
29 KUBE_CONTROLLER_ACTION(markAsRead) 30 KUBE_CONTROLLER_ACTION(markAsRead)
30 KUBE_CONTROLLER_ACTION(markAsUnread) 31 KUBE_CONTROLLER_ACTION(markAsUnread)
31 KUBE_CONTROLLER_ACTION(markAsImportant) 32 KUBE_CONTROLLER_ACTION(markAsImportant)
32 KUBE_CONTROLLER_ACTION(moveToTrash) 33 KUBE_CONTROLLER_ACTION(moveToTrash)
33 KUBE_CONTROLLER_ACTION(restoreFromTrash) 34 KUBE_CONTROLLER_ACTION(restoreFromTrash)
34 KUBE_CONTROLLER_ACTION(remove) 35 KUBE_CONTROLLER_ACTION(remove)
36 KUBE_CONTROLLER_ACTION(moveToFolder)
35 37
36public: 38public:
37 explicit MailController(); 39 explicit MailController();