summaryrefslogtreecommitdiffstats
path: root/framework/domain/folderlistmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'framework/domain/folderlistmodel.cpp')
-rw-r--r--framework/domain/folderlistmodel.cpp25
1 files changed, 19 insertions, 6 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>()