From ff132591078b8cab1008ec086cc10a5396f238f3 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 11 Jul 2016 11:52:43 +0200 Subject: Show the account status --- framework/domain/accountsmodel.cpp | 26 ++++++++++++++++++++++---- framework/domain/accountsmodel.h | 5 ++++- 2 files changed, 26 insertions(+), 5 deletions(-) (limited to 'framework') diff --git a/framework/domain/accountsmodel.cpp b/framework/domain/accountsmodel.cpp index 8a3ab317..1f034283 100644 --- a/framework/domain/accountsmodel.cpp +++ b/framework/domain/accountsmodel.cpp @@ -23,7 +23,9 @@ AccountsModel::AccountsModel(QObject *parent) : QIdentityProxyModel() { Sink::Query query; query.liveQuery = true; - query.requestedProperties << "name" << "icon"; + query.request(); + query.request(); + query.request(); runQuery(query); } @@ -39,6 +41,9 @@ QHash< int, QByteArray > AccountsModel::roleNames() const roles[Name] = "name"; roles[Icon] = "icon"; roles[AccountId] = "accountId"; + roles[Status] = "status"; + roles[StatusIcon] = "statusIcon"; + roles[ShowStatus] = "showStatus"; return roles; } @@ -46,13 +51,26 @@ QHash< int, QByteArray > AccountsModel::roleNames() const QVariant AccountsModel::data(const QModelIndex &idx, int role) const { auto srcIdx = mapToSource(idx); + auto account = srcIdx.data(Sink::Store::DomainObjectRole).value(); switch (role) { case Name: - return srcIdx.sibling(srcIdx.row(), 0).data(Qt::DisplayRole).toString(); + return account->getName(); case Icon: - return srcIdx.sibling(srcIdx.row(), 1).data(Qt::DisplayRole).toString(); + return account->getIcon(); case AccountId: - return srcIdx.data(Sink::Store::DomainObjectBaseRole).value()->identifier(); + return account->identifier(); + case Status: + return account->getStatus(); + case StatusIcon: + if (account->getStatus() == Sink::ApplicationDomain::ErrorStatus) { + return "emblem-error"; + } else if (account->getStatus() == Sink::ApplicationDomain::BusyStatus) { + return "view-refresh"; + } else if (account->getStatus() == Sink::ApplicationDomain::ConnectedStatus) { + return "checkmark"; + } + case ShowStatus: + return (account->getStatus() != Sink::ApplicationDomain::OfflineStatus); } return QIdentityProxyModel::data(idx, role); } diff --git a/framework/domain/accountsmodel.h b/framework/domain/accountsmodel.h index 9180bc09..e3c08cd4 100644 --- a/framework/domain/accountsmodel.h +++ b/framework/domain/accountsmodel.h @@ -41,7 +41,10 @@ public: enum Roles { Name = Qt::UserRole + 1, Icon, - AccountId + AccountId, + Status, + StatusIcon, + ShowStatus }; Q_ENUMS(Roles) -- cgit v1.2.3