You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmymoney/kmymoney2/mymoney/storage/mymoneystoragexml.h

157 lines
5.8 KiB

/***************************************************************************
mymoneystoragexml.h - description
-------------------
begin : Thu Oct 24 2002
copyright : (C) 2002 by Kevin Tambascio
(C) 2004 by Thomas Baumgart
email : Thomas Baumgart <ipwizard@users.sourceforge.net>
Kevin Tambascio <ktambascio@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. *
* *
***************************************************************************/
#ifndef MYMONEYSTORAGEXML_H
#define MYMONEYSTORAGEXML_H
// ----------------------------------------------------------------------------
// QT Includes
#include <tqdom.h>
#include <tqdatastream.h>
class TQIODevice;
// ----------------------------------------------------------------------------
// Project Includes
#include "imymoneyserialize.h"
#include "imymoneystorageformat.h"
class MyMoneyXmlContentHandler;
/**
*@author Kevin Tambascio (ktambascio@users.sourceforge.net)
*/
#define VERSION_0_60_XML 0x10000010 // Version 0.5 file version info
#define VERSION_0_61_XML 0x10000011 // use 8 bytes for MyMoneyMoney objects
class MyMoneyStorageXML : public IMyMoneyStorageFormat
{
friend class MyMoneyXmlContentHandler;
public:
MyMoneyStorageXML();
virtual ~MyMoneyStorageXML();
enum fileVersionDirectionType {
Reading = 0, /**< version of file to be read */
Writing = 1 /**< version to be used when writing a file */
};
protected:
void setProgressCallback(void(*callback)(int, int, const TQString&));
void signalProgress(int current, int total, const TQString& = "");
/**
* This method returns the version of the underlying file. It
* is used by the MyMoney objects contained in a MyMoneyStorageBin object (e.g.
* MyMoneyAccount, MyMoneyInstitution, MyMoneyTransaction, etc.) to
* determine the layout used when reading/writing a persistant file.
* A parameter is used to determine the direction.
*
* @param dir information about the direction (reading/writing). The
* default is reading.
*
* @return version TQString of file's version
*
* @see m_fileVersionRead, m_fileVersionWrite
*/
static unsigned int fileVersion(fileVersionDirectionType dir = Reading);
TQValueList<TQDomElement> readElements(TQString groupTag, TQString itemTag = TQString());
bool readFileInformation(const TQDomElement& fileInfo);
virtual void writeFileInformation(TQDomElement& fileInfo);
virtual void writeUserInformation(TQDomElement& userInfo);
virtual void writeInstitution(TQDomElement& institutions, const MyMoneyInstitution& i);
virtual void writeInstitutions(TQDomElement& institutions);
virtual void writePrices(TQDomElement& prices);
virtual void writePricePair(TQDomElement& price, const MyMoneyPriceEntries& p);
virtual void writePrice(TQDomElement& prices, const MyMoneyPrice& p);
virtual void writePayees(TQDomElement& payees);
virtual void writePayee(TQDomElement& payees, const MyMoneyPayee& p);
virtual void writeAccounts(TQDomElement& accounts);
virtual void writeAccount(TQDomElement& accounts, const MyMoneyAccount& p);
virtual void writeTransactions(TQDomElement& transactions);
virtual void writeTransaction(TQDomElement& transactions, const MyMoneyTransaction& tx);
virtual void writeSchedules(TQDomElement& scheduled);
virtual void writeSchedule(TQDomElement& scheduledTx, const MyMoneySchedule& tx);
virtual void writeReports(TQDomElement& e);
virtual void writeBudgets(TQDomElement& e);
virtual void writeBudget(TQDomElement& budget, const MyMoneyBudget& b);
virtual void writeSecurities(TQDomElement& securities);
virtual void writeSecurity(TQDomElement& securityElement, const MyMoneySecurity& security);
virtual void writeCurrencies(TQDomElement& currencies);
virtual TQDomElement writeKeyValuePairs(const TQMap<TQString, TQString> pairs);
virtual void readFile(TQIODevice* s, IMyMoneySerialize* storage);
virtual void writeFile(TQIODevice* s, IMyMoneySerialize* storage);
bool readUserInformation(const TQDomElement& userElement);
void readPricePair(const TQDomElement& pricePair);
const MyMoneyPrice readPrice(const TQString& from, const TQString& to, const TQDomElement& price);
TQDomElement findChildElement(const TQString& name, const TQDomElement& root);
private:
void (*m_progressCallback)(int, int, const TQString&);
protected:
IMyMoneySerialize *m_storage;
TQDomDocument *m_doc;
private:
/// \internal d-pointer class.
class Private;
/// \internal d-pointer instance.
Private* const d;
/**
* This member is used to store the file version information
* obtained while reading a file.
*/
static unsigned int fileVersionRead;
/**
* This member is used to store the file version information
* to be used when writing a file.
*/
static unsigned int fileVersionWrite;
/**
* This member keeps the id of the base currency. We need this
* temporarily to convert the price history from the old to the
* new format. This should go at some time beyond 0.8 (ipwizard)
*/
TQString m_baseCurrencyId;
};
#endif