diff options
Diffstat (limited to 'kmymoney2/mymoney/mymoneyinstitution.cpp')
-rw-r--r-- | kmymoney2/mymoney/mymoneyinstitution.cpp | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/kmymoney2/mymoney/mymoneyinstitution.cpp b/kmymoney2/mymoney/mymoneyinstitution.cpp new file mode 100644 index 0000000..9969ee7 --- /dev/null +++ b/kmymoney2/mymoney/mymoneyinstitution.cpp @@ -0,0 +1,182 @@ +/*************************************************************************** + mymoneyinstitution.cpp + ------------------- + copyright : (C) 2001 by Michael Edwardes, + 2002-2005 by Thomas Baumgart + email : mte@users.sourceforge.net, + ipwizard@users.sourceforge.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +// ---------------------------------------------------------------------------- +// QT Includes + +// ---------------------------------------------------------------------------- +// KDE Includes +#include <kglobal.h> +#include <kstandarddirs.h> + +// ---------------------------------------------------------------------------- +// Project Includes + +#include "mymoneyinstitution.h" +#include <kmymoney/mymoneyexception.h> + +MyMoneyInstitution::MyMoneyInstitution() +{ +} + +MyMoneyInstitution::MyMoneyInstitution(const QString& id, const MyMoneyInstitution& right) : + MyMoneyObject(id) +{ + *this = right; + m_id = id; +} + +MyMoneyInstitution::MyMoneyInstitution(const QString& name, + const QString& town, + const QString& street, + const QString& postcode, + const QString& telephone, + const QString& manager, + const QString& sortcode) +{ + clearId(); + m_name = name; + m_town = town; + m_street = street; + m_postcode = postcode; + m_telephone = telephone; + m_manager = manager; + m_sortcode = sortcode; +} + +MyMoneyInstitution::MyMoneyInstitution(const QDomElement& node) : + MyMoneyObject(node), + MyMoneyKeyValueContainer(node.elementsByTagName("KEYVALUEPAIRS").item(0).toElement()) +{ + if("INSTITUTION" != node.tagName()) + throw new MYMONEYEXCEPTION("Node was not INSTITUTION"); + + m_sortcode = node.attribute("sortcode"); + m_name = node.attribute("name"); + m_manager = node.attribute("manager"); + + QDomNodeList nodeList = node.elementsByTagName("ADDRESS"); + if(nodeList.count() == 0) { + QString msg = QString("No ADDRESS in institution %1").arg(m_name); + throw new MYMONEYEXCEPTION(msg); + } + + QDomElement addrNode = nodeList.item(0).toElement(); + m_street = addrNode.attribute("street"); + m_town = addrNode.attribute("city"); + m_postcode = addrNode.attribute("zip"); + m_telephone = addrNode.attribute("telephone"); + + m_accountList.clear(); + + nodeList = node.elementsByTagName("ACCOUNTIDS"); + if(nodeList.count() > 0) { + nodeList = nodeList.item(0).toElement().elementsByTagName("ACCOUNTID"); + for(unsigned int i = 0; i < nodeList.count(); ++i) { + m_accountList << nodeList.item(i).toElement().attribute("id"); + } + } +} + +MyMoneyInstitution::~MyMoneyInstitution() +{ +} + +void MyMoneyInstitution::addAccountId(const QString& account) +{ + // only add this account if it is not yet presently in the list + if(m_accountList.contains(account) == 0) + m_accountList.append(account); +} + +QString MyMoneyInstitution::removeAccountId(const QString& account) +{ + QStringList::Iterator pos; + QString rc; + + pos = m_accountList.find(account); + if(pos != m_accountList.end()) { + m_accountList.remove(pos); + rc = account; + } + return rc; +} + +bool MyMoneyInstitution::operator < (const MyMoneyInstitution& right) const +{ + return m_name < right.m_name; +} + +bool MyMoneyInstitution::operator == (const MyMoneyInstitution& right) const +{ + if (MyMoneyObject::operator==(right) && + ((m_name.length() == 0 && right.m_name.length() == 0) || (m_name == right.m_name)) && + ((m_town.length() == 0 && right.m_town.length() == 0) || (m_town == right.m_town)) && + ((m_street.length() == 0 && right.m_street.length() == 0) || (m_street == right.m_street)) && + ((m_postcode.length() == 0 && right.m_postcode.length() == 0) || (m_postcode == right.m_postcode)) && + ((m_telephone.length() == 0 && right.m_telephone.length() == 0) || (m_telephone == right.m_telephone)) && + ((m_sortcode.length() == 0 && right.m_sortcode.length() == 0) || (m_sortcode == right.m_sortcode)) && + ((m_manager.length() == 0 && right.m_manager.length() == 0) || (m_manager == right.m_manager)) && + (m_accountList == right.m_accountList) ) { + return true; + } else + return false; +} + +void MyMoneyInstitution::writeXML(QDomDocument& document, QDomElement& parent) const +{ + QDomElement el = document.createElement("INSTITUTION"); + + writeBaseXML(document, el); + + el.setAttribute("name", m_name); + el.setAttribute("manager", m_manager); + el.setAttribute("sortcode", m_sortcode); + + QDomElement address = document.createElement("ADDRESS"); + address.setAttribute("street", m_street); + address.setAttribute("city", m_town); + address.setAttribute("zip", m_postcode); + address.setAttribute("telephone", m_telephone); + el.appendChild(address); + + + QDomElement accounts = document.createElement("ACCOUNTIDS"); + for(QStringList::ConstIterator it = accountList().begin(); it != accountList().end(); ++it){ + QDomElement temp = document.createElement("ACCOUNTID"); + temp.setAttribute("id", (*it)); + accounts.appendChild(temp); + } + el.appendChild(accounts); + + //Add in Key-Value Pairs for institutions. + MyMoneyKeyValueContainer::writeXML(document, el); + + parent.appendChild(el); +} + +bool MyMoneyInstitution::hasReferenceTo(const QString& /* id */) const +{ + bool rc = false; + return rc; +} + +QPixmap MyMoneyInstitution::pixmap() const { + return QPixmap(KGlobal::dirs()->findResource("appdata",QString( "icons/hicolor/22x22/actions/%1.png").arg("bank"))); +} + |