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/converter/mymoneyqifwriter.h

140 lines
5.3 KiB

/***************************************************************************
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 MYMONEYQIFWRITER_H
#define MYMONEYQIFWRITER_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 QIF 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
{
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