File indexing completed on 2024-05-12 16:42:38

0001 /*
0002     SPDX-FileCopyrightText: 2014-2016 Christian Dávid <christian-david@web.de>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef MYMONEYPAYEEIDENTIFIERCONTAINER_H
0007 #define MYMONEYPAYEEIDENTIFIERCONTAINER_H
0008 
0009 #include "kmm_mymoney_export.h"
0010 
0011 #include <QList>
0012 
0013 #include "payeeidentifier/payeeidentifier.h"
0014 
0015 /**
0016  *
0017  *
0018  * @internal payeeIdentifiers should get their own id. So they can be created as all other MyMoneyObjects.
0019  * But adding a MyMoneyObject to MyMoneyFile and its storage backends is so time-consuming,
0020  * I won't do that - sorry. So all payeeIdentifiers have to be created when a MyMoneyPayeeIdentifierContainer
0021  * is loaded. Optimal would be if they are only created if needed (which won't be often).
0022  */
0023 template <class T> class payeeIdentifierTyped;
0024 class KMM_MYMONEY_EXPORT MyMoneyPayeeIdentifierContainer
0025 {
0026 public:
0027     MyMoneyPayeeIdentifierContainer();
0028 
0029     unsigned int payeeIdentifierCount() const;
0030     ::payeeIdentifier payeeIdentifier(unsigned int) const;
0031     QList< ::payeeIdentifier > payeeIdentifiers() const;
0032 
0033     template< class type >
0034     QList< ::payeeIdentifierTyped<type> > payeeIdentifiersByType() const;
0035 
0036     void addPayeeIdentifier(const ::payeeIdentifier& ident);
0037     void addPayeeIdentifier(const unsigned int position, const ::payeeIdentifier& ident);
0038 
0039     void removePayeeIdentifier(const ::payeeIdentifier& ident);
0040     void removePayeeIdentifier(const int index);
0041 
0042     void modifyPayeeIdentifier(const ::payeeIdentifier& ident);
0043     void modifyPayeeIdentifier(const int index, const ::payeeIdentifier& ident);
0044 
0045     void resetPayeeIdentifiers(const QList< ::payeeIdentifier >& list = QList< ::payeeIdentifier >());
0046 
0047     void loadXML(QDomElement node);
0048     void writeXML(QDomDocument document, QDomElement parent) const;
0049 
0050 protected:
0051     QList< ::payeeIdentifier > m_payeeIdentifiers;
0052 };
0053 
0054 template< class type >
0055 QList< payeeIdentifierTyped<type> > MyMoneyPayeeIdentifierContainer::payeeIdentifiersByType() const
0056 {
0057     QList< payeeIdentifierTyped<type> > typedList;
0058     return typedList;
0059 }
0060 
0061 #endif // MYMONEYPAYEEIDENTIFIERCONTAINER_H