|
|
|
/***************************************************************************
|
|
|
|
mymoneyqifwriter.h - description
|
|
|
|
-------------------
|
|
|
|
begin : Sun Jan 5 2003
|
|
|
|
copyright : (C) 2000-2003 by Michael Edwardes
|
|
|
|
email : mte@users.sourceforge.net
|
|
|
|
Javier Campos Morales <javi_c@users.sourceforge.net>
|
|
|
|
Felix Rodriguez <frodriguez@users.sourceforge.net>
|
|
|
|
John C <thetacoturtle@users.sourceforge.net>
|
|
|
|
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 MYMONEYTQIFWRITER_H
|
|
|
|
#define MYMONEYTQIFWRITER_H
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// QT Headers
|
|
|
|
|
|
|
|
#include <tqobject.h>
|
|
|
|
#include <tqdatetime.h>
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// KDE Headers
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// Project Headers
|
|
|
|
|
|
|
|
class MyMoneyTransaction;
|
|
|
|
class MyMoneySplit;
|
|
|
|
#include "mymoneyqifprofile.h"
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class represents the TQIF writer. All conversion between the
|
|
|
|
* internal representation of accounts, transactions is handled in this
|
|
|
|
* object. The conversion is controlled using a MyMoneyQifProfile to allow
|
|
|
|
* the user to control the conversion.
|
|
|
|
*/
|
|
|
|
class MyMoneyQifWriter : public TQObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
TQ_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
MyMoneyQifWriter();
|
|
|
|
~MyMoneyQifWriter();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method is used to start the conversion. The parameters control
|
|
|
|
* the destination of the data and the parts that will be exported.
|
|
|
|
* Individual errors will be reported using message boxes.
|
|
|
|
*
|
|
|
|
* @param filename The name of the output file with full path information
|
|
|
|
* @param profile The name of the profile to be used for conversion
|
|
|
|
* @param accountId The id of the account that will be exported
|
|
|
|
* @param accountData If true, the transactions will be exported
|
|
|
|
* @param categoryData If true, the categories will be exported as well
|
|
|
|
* @param startDate Transations before this date will not be exported
|
|
|
|
* @param endDate Transactions after this date will not be exported
|
|
|
|
*/
|
|
|
|
void write(const TQString& filename, const TQString& profile,
|
|
|
|
const TQString& accountId, const bool accountData,
|
|
|
|
const bool categoryData,
|
|
|
|
const TQDate& startDate, const TQDate& endDate);
|
|
|
|
|
|
|
|
private:
|
|
|
|
/**
|
|
|
|
* This method writes the entries necessary for an account. First
|
|
|
|
* the leadin, and then the transactions that are in the account
|
|
|
|
* specified by @p accountId in the range from @p startDate to @p
|
|
|
|
* endDate.
|
|
|
|
*
|
|
|
|
* @param s reference to textstream
|
|
|
|
* @param accountId id of the account to be written
|
|
|
|
* @param startDate date from which entries are written
|
|
|
|
* @param endDate date until which entries are written
|
|
|
|
*/
|
|
|
|
void writeAccountEntry(TQTextStream& s, const TQString& accountId, const TQDate& startDate, const TQDate& endDate);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method writes the category entries to the stream
|
|
|
|
* @p s. It writes the leadin and uses writeCategoryEntries()
|
|
|
|
* to write the entries and emits signalProgess() where needed.
|
|
|
|
*
|
|
|
|
* @param s reference to textstream
|
|
|
|
*/
|
|
|
|
void writeCategoryEntries(TQTextStream& s);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method writes the category entry for account with
|
|
|
|
* the ID @p accountId to the stream @p s. All subaccounts
|
|
|
|
* are processed as well.
|
|
|
|
*
|
|
|
|
* @param s reference to textstream
|
|
|
|
* @param accountId id of the account to be written
|
|
|
|
* @param leadIn constant text that will be prepended to the account's name
|
|
|
|
*/
|
|
|
|
void writeCategoryEntry(TQTextStream& s, const TQString& accountId, const TQString& leadIn);
|
|
|
|
|
|
|
|
void writeTransactionEntry(TQTextStream &s, const MyMoneyTransaction& t, const TQString& accountId);
|
|
|
|
void writeSplitEntry(TQTextStream &s, const MyMoneySplit& t);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
/**
|
|
|
|
* This signal is emitted while the operation progresses.
|
|
|
|
* When the operation starts, the signal is emitted with
|
|
|
|
* @p current being 0 and @p max having the maximum value.
|
|
|
|
*
|
|
|
|
* During the operation, the signal is emitted with @p current
|
|
|
|
* containing the current value on the way to the maximum value.
|
|
|
|
* @p max will be 0 in this case.
|
|
|
|
*
|
|
|
|
* When the operation is finished, the signal is emitted with
|
|
|
|
* @p current and @p max set to -1 to identify the end of the
|
|
|
|
* operation.
|
|
|
|
*
|
|
|
|
* @param current see above
|
|
|
|
* @param max see above
|
|
|
|
*/
|
|
|
|
void signalProgress(int current, int max);
|
|
|
|
|
|
|
|
private:
|
|
|
|
MyMoneyQifProfile m_qifProfile;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|