File indexing completed on 2024-04-21 04:56:32

0001 /*
0002  *  SPDX-FileCopyrightText: 2020 Dan Leinir Turthra Jensen <admin@leinir.dk>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef PROVIDERS_MODEL_H
0008 #define PROVIDERS_MODEL_H
0009 
0010 #include "kaccounts_export.h"
0011 
0012 #include <QAbstractListModel>
0013 
0014 namespace KAccounts
0015 {
0016 
0017 /**
0018  * @brief A model which represents the available providers
0019  *
0020  * # Roles
0021  *
0022  * The role names available in this model are:
0023  *
0024  * * name: The internal name identifying this provider
0025  * * displayName: The human-readable name for this provider
0026  * * description: A (usually single sentence) description of this provider
0027  * * iconName: An XDG Icon specification icon name for this provider
0028  * * supportsMultipleAccounts: Whether or not this provider supports multiple simultaneous accounts
0029  * * accountsCount: The number of accounts which already exist on the system for this provider
0030  */
0031 class KACCOUNTS_EXPORT ProvidersModel : public QAbstractListModel
0032 {
0033     Q_OBJECT
0034 public:
0035     enum Roles {
0036         NameRole = Qt::UserRole + 1, ///< The unique name identifier for this provider
0037         DisplayNameRole, ///< The human-readable name for this provider
0038         DescriptionRole, ///< A (usually single sentence) description of this provider
0039         IconNameRole, ///< The name of the icon to be used for this provider (an XDG Icon Spec style name)
0040         SupportsMultipleAccountsRole, ///< Whether or not this provider supports multiple simultaneous accounts
0041         AccountsCountRole, ///< The number of accounts which already exist for this provider
0042     };
0043     explicit ProvidersModel(QObject *parent = nullptr);
0044     ~ProvidersModel() override;
0045 
0046     QHash<int, QByteArray> roleNames() const override;
0047     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0048     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0049 
0050 private:
0051     class Private;
0052     Private *d;
0053 };
0054 
0055 };
0056 
0057 #endif // PROVIDERS_MODEL_H