File indexing completed on 2024-05-12 16:42:44
0001 /* 0002 SPDX-FileCopyrightText: 2015-2016 Christian Dávid <christian-david@web.de> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef PAYEEIDENTIFIERMODEL_H 0007 #define PAYEEIDENTIFIERMODEL_H 0008 0009 #include "kmm_mymoney_export.h" 0010 0011 #include <QAbstractItemModel> 0012 #include <QStringList> 0013 0014 #include "mymoney/mymoneypayee.h" 0015 0016 /** 0017 * @brief Read-only model for stored payeeIdentifiers 0018 * 0019 * @note You must set an filter 0020 * 0021 * @internal if needed this can be extended to an read/write model 0022 */ 0023 class KMM_MYMONEY_EXPORT payeeIdentifierModel : public QAbstractItemModel 0024 { 0025 Q_OBJECT 0026 0027 public: 0028 enum roles { 0029 payeeName = Qt::UserRole, /**< MyMoneyPayee::name() */ 0030 isPayeeIdentifier = Qt::UserRole + 1, /**< refers index to payeeIdentifier (true) or MyMoneyPayee (false) */ 0031 payeeIdentifierType = Qt::UserRole + 2, /**< type of payeeIdentifier */ 0032 payeeIdentifier = Qt::UserRole + 3, /**< actual payeeIdentifier */ 0033 payeeIdentifierUserRole = Qt::UserRole + 4, /**< role to start with for inheriting models */ 0034 }; 0035 0036 explicit payeeIdentifierModel(QObject* parent = 0); 0037 QVariant data(const QModelIndex& index, int role) const final override; 0038 int columnCount(const QModelIndex& parent) const final override; 0039 int rowCount(const QModelIndex& parent) const final override; 0040 QModelIndex parent(const QModelIndex& child) const final override; 0041 QModelIndex index(int row, int column, const QModelIndex &parent) const final override; 0042 Qt::ItemFlags flags(const QModelIndex &index) const final override; 0043 0044 /** 0045 * @brief Set which payeeIdentifier types to show 0046 * 0047 * @param filter list of payeeIdentifier types. An empty list leads to an empty model. 0048 */ 0049 void setTypeFilter(QStringList filter); 0050 0051 /** convenience overload for setTypeFilter(QStringList) */ 0052 void setTypeFilter(QString type); 0053 0054 void loadData(); 0055 0056 private: 0057 typedef QPair<QString, int> identId_t; 0058 inline MyMoneyPayee payeeByIndex(const QModelIndex& index) const; 0059 QStringList m_payeeIdentifierIds; 0060 QStringList m_typeFilter; 0061 }; 0062 0063 #endif // PAYEEIDENTIFIERMODEL_H