File indexing completed on 2024-05-12 16:42:19
0001 /* 0002 SPDX-FileCopyrightText: 2014-2015 Christian Dávid <christian-david@web.de> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef PAYEEIDENTIFIERCONTAINERMODEL_H 0007 #define PAYEEIDENTIFIERCONTAINERMODEL_H 0008 0009 #include "kmm_models_export.h" 0010 0011 #include <QAbstractListModel> 0012 #include <QSharedPointer> 0013 0014 #include "mymoney/payeeidentifiermodel.h" 0015 #include "mymoney/mymoneypayeeidentifiercontainer.h" 0016 #include "payeeidentifier/payeeidentifier.h" 0017 0018 /** 0019 * @brief Model for MyMoneyPayeeIdentifierContainer 0020 * 0021 * Changes the user does have internal effect only. 0022 * 0023 * @see payeeIdentifierModel 0024 */ 0025 class MyMoneyPayeeIdentifierContainer; 0026 class payeeIdentifier; 0027 class KMM_MODELS_EXPORT payeeIdentifierContainerModel : public QAbstractListModel 0028 { 0029 Q_OBJECT 0030 0031 public: 0032 /** 0033 * @brief Roles for this model 0034 * 0035 * They are equal to payeeIdentifierModel::roles 0036 */ 0037 enum roles { 0038 payeeIdentifierType = payeeIdentifierModel::payeeIdentifierType, /**< type of payeeIdentifier */ 0039 payeeIdentifier = payeeIdentifierModel::payeeIdentifier, /**< actual payeeIdentifier */ 0040 }; 0041 0042 explicit payeeIdentifierContainerModel(QObject* parent = 0); 0043 0044 QVariant data(const QModelIndex& index, int role) const final override; 0045 0046 /** 0047 * This model only supports to edit payeeIdentifier role with a QVariant of type 0048 * payeeIdentifier. 0049 */ 0050 bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) final override; 0051 0052 Qt::ItemFlags flags(const QModelIndex& index) const final override; 0053 0054 int rowCount(const QModelIndex& parent) const final override; 0055 0056 bool insertRows(int row, int count, const QModelIndex& parent) final override; 0057 bool removeRows(int row, int count, const QModelIndex& parent) final override; 0058 0059 /** 0060 * @brief Set source of data 0061 * 0062 * This makes the model editable. 0063 */ 0064 void setSource(MyMoneyPayeeIdentifierContainer data); 0065 0066 /** @brief Get stored data */ 0067 QList< ::payeeIdentifier > identifiers() const; 0068 0069 public Q_SLOTS: 0070 /** 0071 * @brief Removes all data from the model 0072 * 0073 * The model is not editable afterwards. 0074 */ 0075 void closeSource(); 0076 0077 private: 0078 /** @internal 0079 * The use of a shared pointer makes this future prof. Because using identifier() causes 0080 * some unnecessary work. 0081 */ 0082 QSharedPointer<MyMoneyPayeeIdentifierContainer> m_data; 0083 }; 0084 0085 #endif // PAYEEIDENTIFIERCONTAINERMODEL_H