diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-09-11 22:03:25 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-09-11 22:05:01 +0200 |
commit | b0d6fb2e4cb53269b5e5186837cadfb7121d1540 (patch) | |
tree | 5650b5eba377273108d28770ca7f80e2e2bf10d9 | |
parent | 52f266ecbd34ce298a4bce93992ffbb631ae90f8 (diff) | |
download | kube-b0d6fb2e4cb53269b5e5186837cadfb7121d1540.tar.gz kube-b0d6fb2e4cb53269b5e5186837cadfb7121d1540.zip |
Synchronize drafts and contacts when opening the composer.
-rw-r--r-- | components/kube/contents/ui/ComposerView.qml | 7 | ||||
-rw-r--r-- | framework/src/sinkfabric.cpp | 20 |
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 | ||
21 | import QtQuick 2.7 | 21 | import QtQuick 2.7 |
22 | import QtQuick.Controls 1.3 | 22 | import QtQuick.Controls 1.3 |
23 | import QtQuick.Controls 2.0 as Controls2 | ||
23 | import QtQuick.Layouts 1.1 | 24 | import QtQuick.Layouts 1.1 |
24 | import QtQuick.Dialogs 1.0 as Dialogs | 25 | import 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 | } |