From 5f1cf5b7926c568998f213beba9d7932ef7742ef Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 27 Mar 2017 09:43:37 +0200 Subject: Use states for the account status icon --- components/mail/contents/ui/Mail.qml | 19 +++++++++++++++++-- components/package/contents/ui/AccountSwitcher.qml | 19 +++++++++++++++++-- framework/accounts/accountsmodel.cpp | 20 ++++++++------------ framework/accounts/accountsmodel.h | 12 +++++++++--- 4 files changed, 51 insertions(+), 19 deletions(-) diff --git a/components/mail/contents/ui/Mail.qml b/components/mail/contents/ui/Mail.qml index c5078877..0643287f 100644 --- a/components/mail/contents/ui/Mail.qml +++ b/components/mail/contents/ui/Mail.qml @@ -291,9 +291,24 @@ Controls2.ApplicationWindow { } ToolButton { - visible: model.showStatus - iconName: model.statusIcon + id: statusIcon + visible: false + iconName: "" enabled: false + states: [ + State { + name: "busy"; when: model.status == KubeAccountsFramework.AccountsModel.BusyStatus + PropertyChanges { target: statusIcon; iconName: "view-refresh"; visible: true } + }, + State { + name: "error"; when: model.status == KubeAccountsFramework.AccountsModel.ErrorStatus + PropertyChanges { target: statusIcon; iconName: "emblem-error"; visible: true } + }, + State { + name: "checkmark"; when: model.status == KubeAccountsFramework.AccountsModel.ConnectedStatus + PropertyChanges { target: statusIcon; iconName: "checkmark"; visible: true } + } + ] } } } diff --git a/components/package/contents/ui/AccountSwitcher.qml b/components/package/contents/ui/AccountSwitcher.qml index 74b6c1ff..8e82dc03 100644 --- a/components/package/contents/ui/AccountSwitcher.qml +++ b/components/package/contents/ui/AccountSwitcher.qml @@ -163,9 +163,24 @@ Controls.ToolButton { } Controls.ToolButton { + id: statusIcon + visible: false + iconName: "" enabled: false - visible: model.showStatus - iconName: model.statusIcon + states: [ + State { + name: "busy"; when: model.status == KubeAccountsFramework.AccountsModel.BusyStatus + PropertyChanges { target: statusIcon; iconName: "view-refresh"; visible: true } + }, + State { + name: "error"; when: model.status == KubeAccountsFramework.AccountsModel.ErrorStatus + PropertyChanges { target: statusIcon; iconName: "emblem-error"; visible: true } + }, + State { + name: "checkmark"; when: model.status == KubeAccountsFramework.AccountsModel.ConnectedStatus + PropertyChanges { target: statusIcon; iconName: "checkmark"; visible: true } + } + ] } } Controls2.Button { diff --git a/framework/accounts/accountsmodel.cpp b/framework/accounts/accountsmodel.cpp index f0487f4f..d999bdbd 100644 --- a/framework/accounts/accountsmodel.cpp +++ b/framework/accounts/accountsmodel.cpp @@ -45,8 +45,6 @@ QHash< int, QByteArray > AccountsModel::roleNames() const roles[Icon] = "icon"; roles[AccountId] = "accountId"; roles[Status] = "status"; - roles[StatusIcon] = "statusIcon"; - roles[ShowStatus] = "showStatus"; return roles; } @@ -63,17 +61,15 @@ QVariant AccountsModel::data(const QModelIndex &idx, int role) const case AccountId: 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"; + switch (account->getStatus()) { + case Sink::ApplicationDomain::ErrorStatus: + return ErrorStatus; + case Sink::ApplicationDomain::BusyStatus: + return BusyStatus; + case Sink::ApplicationDomain::ConnectedStatus: + return ConnectedStatus; } - case ShowStatus: - return (account->getStatus() != Sink::ApplicationDomain::OfflineStatus); + return OfflineStatus; } return QIdentityProxyModel::data(idx, role); } diff --git a/framework/accounts/accountsmodel.h b/framework/accounts/accountsmodel.h index 3a2dd712..a32e2c79 100644 --- a/framework/accounts/accountsmodel.h +++ b/framework/accounts/accountsmodel.h @@ -34,6 +34,14 @@ class AccountsModel : public QIdentityProxyModel Q_PROPERTY (QByteArray accountId READ accountId WRITE setAccountId) public: + enum Status { + OfflineStatus, + ConnectedStatus, + BusyStatus, + ErrorStatus + }; + Q_ENUMS(Status) + AccountsModel(QObject *parent = Q_NULLPTR); ~AccountsModel(); @@ -43,9 +51,7 @@ public: Name = Qt::UserRole + 1, Icon, AccountId, - Status, - StatusIcon, - ShowStatus + Status }; Q_ENUMS(Roles) -- cgit v1.2.3