From f8b7fca3671b6458f1fac8e59769920da1e2aaea Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 20 Mar 2017 16:14:36 +0100 Subject: Show the account status next to the account name --- components/mail/contents/ui/Mail.qml | 32 ++++++++++++++++++++++++-------- framework/accounts/accountsmodel.cpp | 33 +++++++++++++++++++++++++++------ framework/accounts/accountsmodel.h | 4 ++++ 3 files changed, 55 insertions(+), 14 deletions(-) diff --git a/components/mail/contents/ui/Mail.qml b/components/mail/contents/ui/Mail.qml index 528c9073..1ae4062d 100644 --- a/components/mail/contents/ui/Mail.qml +++ b/components/mail/contents/ui/Mail.qml @@ -28,6 +28,7 @@ import org.kube.framework.actions 1.0 as KubeAction import org.kube.framework.settings 1.0 as KubeSettings import org.kube.framework.domain 1.0 as KubeFramework import org.kube.framework.notifications 1.0 as KubeNotifications +import org.kube.framework.accounts 1.0 as KubeAccountsFramework import org.kube.components 1.0 as KubeComponents import org.kube.components.accounts 1.0 as KubeAccounts @@ -270,16 +271,31 @@ Controls2.ApplicationWindow { } } - Text { - anchors { - bottom: parent.bottom - left: parent.left - leftMargin: Kirigami.Units.smallSpacing + Repeater { + model: KubeAccountsFramework.AccountsModel { + accountId: accountSwitcher.accountId } - text: accountSwitcher.accountName - font.weight: Font.DemiBold - color: "white" + RowLayout { + anchors { + bottom: parent.bottom + left: parent.left + leftMargin: Kirigami.Units.smallSpacing + } + Layout.fillHeight: true + + Text { + text: model.name + font.weight: Font.DemiBold + color: "white" + } + + ToolButton { + visible: model.showStatus + iconName: model.statusIcon + enabled: false + } + } } } diff --git a/framework/accounts/accountsmodel.cpp b/framework/accounts/accountsmodel.cpp index ea37784b..f0487f4f 100644 --- a/framework/accounts/accountsmodel.cpp +++ b/framework/accounts/accountsmodel.cpp @@ -19,13 +19,16 @@ #include "accountsmodel.h" #include +using namespace Sink; +using namespace Sink::ApplicationDomain; + AccountsModel::AccountsModel(QObject *parent) : QIdentityProxyModel() { Sink::Query query; - query.setFlags(Sink::Query::LiveQuery); - query.request(); - query.request(); - query.request(); + query.setFlags(Query::LiveQuery); + query.request(); + query.request(); + query.request(); runQuery(query); } @@ -51,7 +54,7 @@ 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(); + auto account = srcIdx.data(Sink::Store::DomainObjectRole).value(); switch (role) { case Name: return account->getName(); @@ -77,6 +80,24 @@ QVariant AccountsModel::data(const QModelIndex &idx, int role) const void AccountsModel::runQuery(const Sink::Query &query) { - mModel = Sink::Store::loadModel(query); + mModel = Sink::Store::loadModel(query); setSourceModel(mModel.data()); } + +void AccountsModel::setAccountId(const QByteArray &accountId) +{ + qWarning() << "Setting account id" << accountId; + //Get all folders of an account + Sink::Query query; + query.filter(accountId); + query.setFlags(Query::LiveQuery); + query.request(); + query.request(); + query.request(); + runQuery(query); +} + +QByteArray AccountsModel::accountId() const +{ + return {}; +} diff --git a/framework/accounts/accountsmodel.h b/framework/accounts/accountsmodel.h index e3c08cd4..3a2dd712 100644 --- a/framework/accounts/accountsmodel.h +++ b/framework/accounts/accountsmodel.h @@ -32,6 +32,7 @@ class AccountsModel : public QIdentityProxyModel { Q_OBJECT + Q_PROPERTY (QByteArray accountId READ accountId WRITE setAccountId) public: AccountsModel(QObject *parent = Q_NULLPTR); ~AccountsModel(); @@ -50,6 +51,9 @@ public: QHash roleNames() const; + void setAccountId(const QByteArray &id); + QByteArray accountId() const; + private: void runQuery(const Sink::Query &query); QSharedPointer mModel; -- cgit v1.2.3