From c3ba13d4240005cb9e7bdaca5977114e74bd0e9a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 20 Mar 2017 09:33:42 +0100 Subject: Support synchronizing individual accounts --- components/mail/contents/ui/Mail.qml | 25 ++++++++++++++++++++++ components/package/contents/ui/AccountSwitcher.qml | 1 + framework/domain/foldercontroller.cpp | 3 +++ framework/domain/foldercontroller.h | 1 + 4 files changed, 30 insertions(+) diff --git a/components/mail/contents/ui/Mail.qml b/components/mail/contents/ui/Mail.qml index 3cc0d4f4..acb75554 100644 --- a/components/mail/contents/ui/Mail.qml +++ b/components/mail/contents/ui/Mail.qml @@ -237,6 +237,23 @@ Controls2.ApplicationWindow { Item { id: accountName + KubeFramework.FolderController { + id: accountNameFolderController + accountId: accountSwitcher.accountId + } + + Menu { + id: contextMenu + title: "Edit" + + MenuItem { + text: "Synchronize" + onTriggered: { + accountNameFolderController.synchronizeAction.execute() + } + } + } + anchors { top: newMailButton.bottom topMargin: Kirigami.Units.smallSpacing @@ -245,6 +262,14 @@ Controls2.ApplicationWindow { width: parent.width height: Kirigami.Units.gridUnit * 2 + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.RightButton + onClicked: { + contextMenu.popup() + } + } + Text { anchors { bottom: parent.bottom diff --git a/components/package/contents/ui/AccountSwitcher.qml b/components/package/contents/ui/AccountSwitcher.qml index 48bb2c1b..31c5e6d4 100644 --- a/components/package/contents/ui/AccountSwitcher.qml +++ b/components/package/contents/ui/AccountSwitcher.qml @@ -39,6 +39,7 @@ Controls.ToolButton { KubeFramework.FolderController { id: folderController + accountId: accountId } KubeAccounts.AccountsModel { diff --git a/framework/domain/foldercontroller.cpp b/framework/domain/foldercontroller.cpp index 65c34dba..3c10f773 100644 --- a/framework/domain/foldercontroller.cpp +++ b/framework/domain/foldercontroller.cpp @@ -36,11 +36,14 @@ FolderController::FolderController() void FolderController::synchronize() { auto job = [&] { + auto accountId = getAccountId(); if (auto folder = getFolder()) { SinkLog() << "Synchronizing folder " << folder->resourceInstanceIdentifier() << folder->identifier(); auto scope = SyncScope().resourceFilter(folder->resourceInstanceIdentifier()).filter(QVariant::fromValue(folder->identifier())); scope.setType(); return Store::synchronize(scope); + } else if (!accountId.isEmpty()) { + return Store::synchronize(SyncScope{}.resourceFilter(accountId)); } else { SinkLog() << "Synchronizing all"; return Store::synchronize(SyncScope()); diff --git a/framework/domain/foldercontroller.h b/framework/domain/foldercontroller.h index b56e08e8..c0815546 100644 --- a/framework/domain/foldercontroller.h +++ b/framework/domain/foldercontroller.h @@ -27,6 +27,7 @@ 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_PROPERTY(QByteArray, AccountId, accountId) KUBE_CONTROLLER_ACTION(synchronize) KUBE_CONTROLLER_ACTION(moveToFolder) -- cgit v1.2.3