diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-03-27 11:50:25 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-03-27 11:50:25 +0200 |
commit | 99293aec6986cd2a6e6022c5882a8f9de0335621 (patch) | |
tree | f4aafd9f9391e974c612a6fa67fa7f957a605c2f /framework/domain | |
parent | 5a5a8c11ed1b1a90452c4f7ed36650be36fbaa2c (diff) | |
download | kube-99293aec6986cd2a6e6022c5882a8f9de0335621.tar.gz kube-99293aec6986cd2a6e6022c5882a8f9de0335621.zip |
Show folder sync status
Diffstat (limited to 'framework/domain')
-rw-r--r-- | framework/domain/folderlistmodel.cpp | 25 | ||||
-rw-r--r-- | framework/domain/folderlistmodel.h | 11 |
2 files changed, 29 insertions, 7 deletions
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() | |||
32 | sort(0, Qt::AscendingOrder); | 32 | sort(0, Qt::AscendingOrder); |
33 | 33 | ||
34 | Query query; | 34 | Query query; |
35 | query.setFlags(Sink::Query::LiveQuery); | 35 | query.setFlags(Sink::Query::LiveQuery | Sink::Query::UpdateStatus); |
36 | query.request<Folder::Name>().request<Folder::Icon>().request<Folder::Parent>().request<Folder::SpecialPurpose>(); | 36 | query.request<Folder::Name>().request<Folder::Icon>().request<Folder::Parent>().request<Folder::SpecialPurpose>(); |
37 | query.requestTree<Folder::Parent>(); | 37 | query.requestTree<Folder::Parent>(); |
38 | query.setId("foldertree"); | 38 | query.setId("foldertree"); |
@@ -52,6 +52,7 @@ QHash< int, QByteArray > FolderListModel::roleNames() const | |||
52 | roles[Icon] = "icon"; | 52 | roles[Icon] = "icon"; |
53 | roles[Id] = "id"; | 53 | roles[Id] = "id"; |
54 | roles[DomainObject] = "domainObject"; | 54 | roles[DomainObject] = "domainObject"; |
55 | roles[Status] = "status"; | ||
55 | 56 | ||
56 | return roles; | 57 | return roles; |
57 | } | 58 | } |
@@ -59,15 +60,27 @@ QHash< int, QByteArray > FolderListModel::roleNames() const | |||
59 | QVariant FolderListModel::data(const QModelIndex &idx, int role) const | 60 | QVariant FolderListModel::data(const QModelIndex &idx, int role) const |
60 | { | 61 | { |
61 | auto srcIdx = mapToSource(idx); | 62 | auto srcIdx = mapToSource(idx); |
63 | auto folder = srcIdx.data(Sink::Store::DomainObjectRole).value<Sink::ApplicationDomain::Folder::Ptr>(); | ||
62 | switch (role) { | 64 | switch (role) { |
63 | case Name: | 65 | case Name: |
64 | return srcIdx.sibling(srcIdx.row(), 0).data(Qt::DisplayRole).toString(); | 66 | return folder->getName(); |
65 | case Icon: | 67 | case Icon: |
66 | return srcIdx.sibling(srcIdx.row(), 1).data(Qt::DisplayRole).toString(); | 68 | return folder->getIcon(); |
67 | case Id: | 69 | case Id: |
68 | return srcIdx.data(Store::DomainObjectBaseRole).value<ApplicationDomainType::Ptr>()->identifier(); | 70 | return folder->identifier(); |
69 | case DomainObject: | 71 | case DomainObject: |
70 | return srcIdx.data(Store::DomainObjectRole); | 72 | return QVariant::fromValue(folder); |
73 | case Status: { | ||
74 | switch (srcIdx.data(Sink::Store::StatusRole).toInt()) { | ||
75 | case Sink::ApplicationDomain::SyncStatus::SyncInProgress: | ||
76 | return InProgressStatus; | ||
77 | case Sink::ApplicationDomain::SyncStatus::SyncError: | ||
78 | return ErrorStatus; | ||
79 | case Sink::ApplicationDomain::SyncStatus::SyncSuccess: | ||
80 | return SuccessStatus; | ||
81 | } | ||
82 | return NoStatus; | ||
83 | } | ||
71 | } | 84 | } |
72 | return QSortFilterProxyModel::data(idx, role); | 85 | return QSortFilterProxyModel::data(idx, role); |
73 | } | 86 | } |
@@ -85,7 +98,7 @@ void FolderListModel::setAccountId(const QVariant &accountId) | |||
85 | //Get all folders of an account | 98 | //Get all folders of an account |
86 | auto query = Query(); | 99 | auto query = Query(); |
87 | query.resourceFilter<SinkResource::Account>(account); | 100 | query.resourceFilter<SinkResource::Account>(account); |
88 | query.setFlags(Sink::Query::LiveQuery); | 101 | query.setFlags(Sink::Query::LiveQuery | Sink::Query::UpdateStatus); |
89 | query.requestTree<Folder::Parent>(); | 102 | query.requestTree<Folder::Parent>(); |
90 | query.request<Folder::Name>() | 103 | query.request<Folder::Name>() |
91 | .request<Folder::Icon>() | 104 | .request<Folder::Icon>() |
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 | |||
36 | Q_PROPERTY (QVariant accountId READ accountId WRITE setAccountId) | 36 | Q_PROPERTY (QVariant accountId READ accountId WRITE setAccountId) |
37 | 37 | ||
38 | public: | 38 | public: |
39 | enum Status { | ||
40 | NoStatus, | ||
41 | InProgressStatus, | ||
42 | ErrorStatus, | ||
43 | SuccessStatus, | ||
44 | }; | ||
45 | Q_ENUMS(Status) | ||
46 | |||
39 | FolderListModel(QObject *parent = Q_NULLPTR); | 47 | FolderListModel(QObject *parent = Q_NULLPTR); |
40 | ~FolderListModel(); | 48 | ~FolderListModel(); |
41 | 49 | ||
@@ -45,7 +53,8 @@ public: | |||
45 | Name = Qt::UserRole + 1, | 53 | Name = Qt::UserRole + 1, |
46 | Icon, | 54 | Icon, |
47 | Id, | 55 | Id, |
48 | DomainObject | 56 | DomainObject, |
57 | Status | ||
49 | }; | 58 | }; |
50 | Q_ENUMS(Roles) | 59 | Q_ENUMS(Roles) |
51 | 60 | ||