summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/kube/contents/ui/ComposerView.qml7
-rw-r--r--framework/src/sinkfabric.cpp20
2 files changed, 26 insertions, 1 deletions
diff --git a/components/kube/contents/ui/ComposerView.qml b/components/kube/contents/ui/ComposerView.qml
index 0a517e03..464322cf 100644
--- a/components/kube/contents/ui/ComposerView.qml
+++ b/components/kube/contents/ui/ComposerView.qml
@@ -20,6 +20,7 @@
20 20
21import QtQuick 2.7 21import QtQuick 2.7
22import QtQuick.Controls 1.3 22import QtQuick.Controls 1.3
23import QtQuick.Controls 2.0 as Controls2
23import QtQuick.Layouts 1.1 24import QtQuick.Layouts 1.1
24import QtQuick.Dialogs 1.0 as Dialogs 25import QtQuick.Dialogs 1.0 as Dialogs
25 26
@@ -45,6 +46,12 @@ Kube.View {
45 46
46 Component.onCompleted: loadMessage(root.message, root.loadAsDraft) 47 Component.onCompleted: loadMessage(root.message, root.loadAsDraft)
47 48
49 Controls2.StackView.onActivated: {
50 Kube.Fabric.postMessage(Kube.Messages.synchronize, {"type": "mail", "specialPurpose": "drafts"})
51 //For autocompletion
52 Kube.Fabric.postMessage(Kube.Messages.synchronize, {"type": "contacts"})
53 }
54
48 function loadMessage(message, loadAsDraft) { 55 function loadMessage(message, loadAsDraft) {
49 if (message) { 56 if (message) {
50 composerController.loadMessage(message, loadAsDraft) 57 composerController.loadMessage(message, loadAsDraft)
diff --git a/framework/src/sinkfabric.cpp b/framework/src/sinkfabric.cpp
index 766380af..79afd33b 100644
--- a/framework/src/sinkfabric.cpp
+++ b/framework/src/sinkfabric.cpp
@@ -45,6 +45,24 @@ public:
45 auto scope = SyncScope().resourceFilter(folder->resourceInstanceIdentifier()).filter<Mail::Folder>(QVariant::fromValue(folder->identifier())); 45 auto scope = SyncScope().resourceFilter(folder->resourceInstanceIdentifier()).filter<Mail::Folder>(QVariant::fromValue(folder->identifier()));
46 scope.setType<ApplicationDomain::Mail>(); 46 scope.setType<ApplicationDomain::Mail>();
47 Store::synchronize(scope).exec(); 47 Store::synchronize(scope).exec();
48 } else if (message.contains("specialPurpose")) {
49 auto specialPurpose = message["specialPurpose"].value<QString>();
50 //Synchronize all drafts folders
51 if (specialPurpose == "drafts") {
52 //TODO or rather just synchronize draft mails and have resource figure out what that means?
53 Sink::Query folderQuery{};
54 folderQuery.containsFilter<Sink::ApplicationDomain::Folder::SpecialPurpose>(Sink::ApplicationDomain::SpecialPurpose::Mail::drafts);
55 folderQuery.request<Sink::ApplicationDomain::Folder::SpecialPurpose>();
56 folderQuery.request<Sink::ApplicationDomain::Folder::Name>();
57 Store::fetch<Sink::ApplicationDomain::Folder>(folderQuery)
58 .then([] (const QList<Sink::ApplicationDomain::Folder::Ptr> &folders) {
59 for (const auto f : folders) {
60 auto scope = SyncScope().resourceFilter(f->resourceInstanceIdentifier()).filter<Mail::Folder>(QVariant::fromValue(f->identifier()));
61 scope.setType<ApplicationDomain::Mail>();
62 Store::synchronize(scope).exec();
63 }
64 }).exec();
65 }
48 } else { 66 } else {
49 auto accountId = message["accountId"].value<QString>(); 67 auto accountId = message["accountId"].value<QString>();
50 auto type = message["type"].value<QString>(); 68 auto type = message["type"].value<QString>();
@@ -63,7 +81,7 @@ public:
63 //Only synchronize folders by default for now 81 //Only synchronize folders by default for now
64 scope.setType<ApplicationDomain::Folder>(); 82 scope.setType<ApplicationDomain::Folder>();
65 } 83 }
66 SinkLog() << "Synchronizing all. AccountId: " << accountId << " Type: " << scope.type(); 84 SinkLog() << "Synchronizing... AccountId: " << accountId << " Type: " << scope.type();
67 Store::synchronize(scope).exec(); 85 Store::synchronize(scope).exec();
68 } 86 }
69 } 87 }