From 99293aec6986cd2a6e6022c5882a8f9de0335621 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 27 Mar 2017 11:50:25 +0200 Subject: Show folder sync status --- framework/domain/folderlistmodel.cpp | 25 +++++++++++++++++++------ framework/domain/folderlistmodel.h | 11 ++++++++++- 2 files changed, 29 insertions(+), 7 deletions(-) (limited to 'framework/domain') diff --git a/framework/domain/folderlistmodel.cpp b/framework/domain/folderlistmodel.cpp index 3ce2cea3..14405beb 100644 --- a/framework/domain/folderlistmodel.cpp +++ b/framework/domain/folderlistmodel.cpp @@ -32,7 +32,7 @@ FolderListModel::FolderListModel(QObject *parent) : QSortFilterProxyModel() sort(0, Qt::AscendingOrder); Query query; - query.setFlags(Sink::Query::LiveQuery); + query.setFlags(Sink::Query::LiveQuery | Sink::Query::UpdateStatus); query.request().request().request().request(); query.requestTree(); query.setId("foldertree"); @@ -52,6 +52,7 @@ QHash< int, QByteArray > FolderListModel::roleNames() const roles[Icon] = "icon"; roles[Id] = "id"; roles[DomainObject] = "domainObject"; + roles[Status] = "status"; return roles; } @@ -59,15 +60,27 @@ QHash< int, QByteArray > FolderListModel::roleNames() const QVariant FolderListModel::data(const QModelIndex &idx, int role) const { auto srcIdx = mapToSource(idx); + auto folder = srcIdx.data(Sink::Store::DomainObjectRole).value(); switch (role) { case Name: - return srcIdx.sibling(srcIdx.row(), 0).data(Qt::DisplayRole).toString(); + return folder->getName(); case Icon: - return srcIdx.sibling(srcIdx.row(), 1).data(Qt::DisplayRole).toString(); + return folder->getIcon(); case Id: - return srcIdx.data(Store::DomainObjectBaseRole).value()->identifier(); + return folder->identifier(); case DomainObject: - return srcIdx.data(Store::DomainObjectRole); + return QVariant::fromValue(folder); + case Status: { + switch (srcIdx.data(Sink::Store::StatusRole).toInt()) { + case Sink::ApplicationDomain::SyncStatus::SyncInProgress: + return InProgressStatus; + case Sink::ApplicationDomain::SyncStatus::SyncError: + return ErrorStatus; + case Sink::ApplicationDomain::SyncStatus::SyncSuccess: + return SuccessStatus; + } + return NoStatus; + } } return QSortFilterProxyModel::data(idx, role); } @@ -85,7 +98,7 @@ void FolderListModel::setAccountId(const QVariant &accountId) //Get all folders of an account auto query = Query(); query.resourceFilter(account); - query.setFlags(Sink::Query::LiveQuery); + query.setFlags(Sink::Query::LiveQuery | Sink::Query::UpdateStatus); query.requestTree(); query.request() .request() diff --git a/framework/domain/folderlistmodel.h b/framework/domain/folderlistmodel.h index a2adc9a9..17645bb5 100644 --- a/framework/domain/folderlistmodel.h +++ b/framework/domain/folderlistmodel.h @@ -36,6 +36,14 @@ class FolderListModel : public QSortFilterProxyModel Q_PROPERTY (QVariant accountId READ accountId WRITE setAccountId) public: + enum Status { + NoStatus, + InProgressStatus, + ErrorStatus, + SuccessStatus, + }; + Q_ENUMS(Status) + FolderListModel(QObject *parent = Q_NULLPTR); ~FolderListModel(); @@ -45,7 +53,8 @@ public: Name = Qt::UserRole + 1, Icon, Id, - DomainObject + DomainObject, + Status }; Q_ENUMS(Roles) -- cgit v1.2.3