diff options
Diffstat (limited to 'framework/domain/folderlistmodel.cpp')
-rw-r--r-- | framework/domain/folderlistmodel.cpp | 25 |
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 | |||
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>() |