File indexing completed on 2025-01-19 04:51:59

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 
0022 #include <QObject>
0023 #include <QIdentityProxyModel>
0024 #include <QSharedPointer>
0025 #include <QStringList>
0026 
0027 namespace Sink {
0028     class Query;
0029 }
0030 
0031 class IdentitiesModel : public QIdentityProxyModel
0032 {
0033     Q_OBJECT
0034 
0035 public:
0036     IdentitiesModel(QObject *parent = Q_NULLPTR);
0037     ~IdentitiesModel();
0038 
0039     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
0040 
0041     enum Roles {
0042         Name  = Qt::UserRole + 1,
0043         Username,
0044         Address,
0045         IdentityId,
0046         AccountId,
0047         AccountName,
0048         AccountIcon,
0049         DisplayName
0050     };
0051     Q_ENUMS(Roles)
0052 
0053     QHash<int, QByteArray> roleNames() const;
0054 
0055 private:
0056     void runQuery(const Sink::Query &query);
0057     QSharedPointer<QAbstractItemModel> mModel;
0058     QHash <QByteArray, QString> mAccountNames;
0059     QHash <QByteArray, QString> mAccountIcons;
0060 };