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 #include "mymoneypayeeidentifiercontainer.h" 0007 0008 #include <QDebug> 0009 0010 #include "payeeidentifier/ibanbic/ibanbic.h" 0011 #include "payeeidentifier/nationalaccount/nationalaccount.h" 0012 #include "payeeidentifier/unavailableplugin/unavailableplugin.h" 0013 #include "payeeidentifier.h" 0014 0015 MyMoneyPayeeIdentifierContainer::MyMoneyPayeeIdentifierContainer() 0016 : m_payeeIdentifiers(QList< ::payeeIdentifier >()) 0017 { 0018 } 0019 0020 unsigned int MyMoneyPayeeIdentifierContainer::payeeIdentifierCount() const 0021 { 0022 return m_payeeIdentifiers.count(); 0023 } 0024 0025 payeeIdentifier MyMoneyPayeeIdentifierContainer::payeeIdentifier(unsigned int index) const 0026 { 0027 return m_payeeIdentifiers.at(index); 0028 } 0029 0030 QList<payeeIdentifier> MyMoneyPayeeIdentifierContainer::payeeIdentifiers() const 0031 { 0032 return m_payeeIdentifiers; 0033 } 0034 0035 void MyMoneyPayeeIdentifierContainer::addPayeeIdentifier(const ::payeeIdentifier& ident) 0036 { 0037 m_payeeIdentifiers.append(ident); 0038 } 0039 0040 void MyMoneyPayeeIdentifierContainer::addPayeeIdentifier(const unsigned int position, const ::payeeIdentifier& ident) 0041 { 0042 m_payeeIdentifiers.insert(position, ident); 0043 } 0044 0045 void MyMoneyPayeeIdentifierContainer::removePayeeIdentifier(const ::payeeIdentifier& ident) 0046 { 0047 m_payeeIdentifiers.removeOne(ident); 0048 } 0049 0050 void MyMoneyPayeeIdentifierContainer::removePayeeIdentifier(const int index) 0051 { 0052 Q_ASSERT(m_payeeIdentifiers.count() > index && index >= 0); 0053 m_payeeIdentifiers.removeAt(index); 0054 } 0055 0056 void MyMoneyPayeeIdentifierContainer::modifyPayeeIdentifier(const ::payeeIdentifier& ident) 0057 { 0058 QList< ::payeeIdentifier >::Iterator end = m_payeeIdentifiers.end(); 0059 for (QList< ::payeeIdentifier >::Iterator iter = m_payeeIdentifiers.begin(); iter != end; ++iter) { 0060 if (iter->id() == ident.id()) { 0061 *iter = ident; 0062 return; 0063 } 0064 } 0065 } 0066 0067 void MyMoneyPayeeIdentifierContainer::modifyPayeeIdentifier(const int index, const ::payeeIdentifier& ident) 0068 { 0069 Q_ASSERT(m_payeeIdentifiers.count() > index && index >= 0); 0070 m_payeeIdentifiers[index] = ident; 0071 } 0072 0073 void MyMoneyPayeeIdentifierContainer::resetPayeeIdentifiers(const QList< ::payeeIdentifier >& list) 0074 { 0075 m_payeeIdentifiers = list; 0076 } 0077 0078 void MyMoneyPayeeIdentifierContainer::loadXML(QDomElement node) 0079 { 0080 // Load identifiers 0081 QDomNodeList identifierNodes = node.elementsByTagName("payeeIdentifier"); 0082 const uint identifierNodesLength = identifierNodes.length(); 0083 for (uint i = 0; i < identifierNodesLength; ++i) { 0084 const QDomElement element = identifierNodes.item(i).toElement(); 0085 0086 const auto payeeIdentifierId = element.attribute("type"); 0087 payeeIdentifierData* identData; 0088 if (payeeIdentifierId == payeeIdentifiers::ibanBic::staticPayeeIdentifierIid()) { 0089 auto creator = new payeeIdentifiers::ibanBic(); 0090 identData = creator->createFromXml(element); 0091 delete creator; 0092 } else if (payeeIdentifierId == payeeIdentifiers::nationalAccount::staticPayeeIdentifierIid()) { 0093 auto creator = new payeeIdentifiers::nationalAccount(); 0094 identData = creator->createFromXml(element); 0095 delete creator; 0096 } else { 0097 identData = new payeeIdentifiers::payeeIdentifierUnavailable(element); 0098 } 0099 ::payeeIdentifier ident(identData); 0100 ident.m_id = element.attribute("id", 0).toUInt(); 0101 0102 if (ident.isNull()) { 0103 qWarning() << "Could not load payee identifier" << element.attribute("type", "*no pidid set*"); 0104 continue; 0105 } 0106 addPayeeIdentifier(ident); 0107 } 0108 } 0109 0110 void MyMoneyPayeeIdentifierContainer::writeXML(QDomDocument document, QDomElement parent) const 0111 { 0112 // Add payee identifiers 0113 foreach (const ::payeeIdentifier& ident, m_payeeIdentifiers) { 0114 if (!ident.isNull()) { 0115 ident.writeXML(document, parent); 0116 } 0117 } 0118 }