diff options
Diffstat (limited to 'framework/domain/accountsmodel.cpp')
-rw-r--r-- | framework/domain/accountsmodel.cpp | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/framework/domain/accountsmodel.cpp b/framework/domain/accountsmodel.cpp index b5eafd53..8a3ab317 100644 --- a/framework/domain/accountsmodel.cpp +++ b/framework/domain/accountsmodel.cpp | |||
@@ -17,15 +17,14 @@ | |||
17 | 02110-1301, USA. | 17 | 02110-1301, USA. |
18 | */ | 18 | */ |
19 | #include "accountsmodel.h" | 19 | #include "accountsmodel.h" |
20 | #include <sink/store.h> | ||
20 | 21 | ||
21 | #include <settings/settings.h> | 22 | AccountsModel::AccountsModel(QObject *parent) : QIdentityProxyModel() |
22 | |||
23 | #include <QVariant> | ||
24 | |||
25 | AccountsModel::AccountsModel(QObject *parent) : QAbstractListModel() | ||
26 | { | 23 | { |
27 | Kube::Settings settings("accounts"); | 24 | Sink::Query query; |
28 | mAccounts = settings.property("accounts").toStringList(); | 25 | query.liveQuery = true; |
26 | query.requestedProperties << "name" << "icon"; | ||
27 | runQuery(query); | ||
29 | } | 28 | } |
30 | 29 | ||
31 | AccountsModel::~AccountsModel() | 30 | AccountsModel::~AccountsModel() |
@@ -46,20 +45,20 @@ QHash< int, QByteArray > AccountsModel::roleNames() const | |||
46 | 45 | ||
47 | QVariant AccountsModel::data(const QModelIndex &idx, int role) const | 46 | QVariant AccountsModel::data(const QModelIndex &idx, int role) const |
48 | { | 47 | { |
49 | const auto identifier = mAccounts.at(idx.row()); | 48 | auto srcIdx = mapToSource(idx); |
50 | Kube::Account accountSettings(identifier.toLatin1()); | ||
51 | switch (role) { | 49 | switch (role) { |
52 | case Name: | 50 | case Name: |
53 | return accountSettings.property("accountName").toString(); | 51 | return srcIdx.sibling(srcIdx.row(), 0).data(Qt::DisplayRole).toString(); |
54 | case Icon: | 52 | case Icon: |
55 | return accountSettings.property("icon").toString(); | 53 | return srcIdx.sibling(srcIdx.row(), 1).data(Qt::DisplayRole).toString(); |
56 | case AccountId: | 54 | case AccountId: |
57 | return identifier; | 55 | return srcIdx.data(Sink::Store::DomainObjectBaseRole).value<Sink::ApplicationDomain::ApplicationDomainType::Ptr>()->identifier(); |
58 | } | 56 | } |
59 | return QVariant(); | 57 | return QIdentityProxyModel::data(idx, role); |
60 | } | 58 | } |
61 | 59 | ||
62 | int AccountsModel::rowCount(const QModelIndex &idx) const | 60 | void AccountsModel::runQuery(const Sink::Query &query) |
63 | { | 61 | { |
64 | return mAccounts.size(); | 62 | mModel = Sink::Store::loadModel<Sink::ApplicationDomain::SinkAccount>(query); |
63 | setSourceModel(mModel.data()); | ||
65 | } | 64 | } |