summaryrefslogtreecommitdiffstats
path: root/framework/domain
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-03-27 11:50:25 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-03-27 11:50:25 +0200
commit99293aec6986cd2a6e6022c5882a8f9de0335621 (patch)
treef4aafd9f9391e974c612a6fa67fa7f957a605c2f /framework/domain
parent5a5a8c11ed1b1a90452c4f7ed36650be36fbaa2c (diff)
downloadkube-99293aec6986cd2a6e6022c5882a8f9de0335621.tar.gz
kube-99293aec6986cd2a6e6022c5882a8f9de0335621.zip
Show folder sync status
Diffstat (limited to 'framework/domain')
-rw-r--r--framework/domain/folderlistmodel.cpp25
-rw-r--r--framework/domain/folderlistmodel.h11
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
59QVariant FolderListModel::data(const QModelIndex &idx, int role) const 60QVariant 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
38public: 38public:
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