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