File indexing completed on 2025-01-05 04:54:55

0001 /*
0002     Copyright (c) 2016 Christian Mollekopf <mollekopf@kolabsys.com>
0003 
0004     This library is free software; you can redistribute it and/or modify it
0005     under the terms of the GNU Library General Public License as published by
0006     the Free Software Foundation; either version 2 of the License, or (at your
0007     option) any later version.
0008 
0009     This library is distributed in the hope that it will be useful, but WITHOUT
0010     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0011     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
0012     License for more details.
0013 
0014     You should have received a copy of the GNU Library General Public License
0015     along with this library; see the file COPYING.LIB.  If not, write to the
0016     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
0017     02110-1301, USA.
0018 */
0019 
0020 #pragma once
0021 #include "kube_export.h"
0022 #include <QObject>
0023 #include <QIdentityProxyModel>
0024 #include <QSharedPointer>
0025 #include <QStringList>
0026 
0027 namespace Sink {
0028     class Query;
0029 }
0030 
0031 class KUBE_EXPORT AccountsModel : public QIdentityProxyModel
0032 {
0033     Q_OBJECT
0034 
0035     Q_PROPERTY (QByteArray accountId READ accountId WRITE setAccountId)
0036     Q_PROPERTY (QByteArray resourceId READ resourceId WRITE setResourceId)
0037 public:
0038     enum Status {
0039         OfflineStatus,
0040         ConnectedStatus,
0041         BusyStatus,
0042         ErrorStatus,
0043         NoStatus
0044     };
0045     Q_ENUMS(Status)
0046 
0047     AccountsModel(QObject *parent = Q_NULLPTR);
0048     ~AccountsModel();
0049 
0050     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
0051 
0052     enum Roles {
0053         Name  = Qt::UserRole + 1,
0054         Icon,
0055         AccountId,
0056         Status
0057     };
0058     Q_ENUMS(Roles)
0059 
0060     QHash<int, QByteArray> roleNames() const;
0061 
0062     void setAccountId(const QByteArray &id);
0063     QByteArray accountId() const;
0064 
0065     void setResourceId(const QByteArray &id);
0066     QByteArray resourceId() const;
0067 
0068 private:
0069     void runQuery(const Sink::Query &query);
0070     QSharedPointer<QAbstractItemModel> mModel;
0071 };