summaryrefslogtreecommitdiffstats
path: root/kmymoney2/converter/mymoneyqifprofile.h
blob: 5df8c411f90230b1d08ad90c8423ba7ea31c901d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/***************************************************************************
                          mymoneyqifprofile.h  -  description
                             -------------------
    begin                : Tue Dec 24 2002
    copyright            : (C) 2002 by Thomas Baumgart
    email                : thb@net-bembel.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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 MYMONEYTQIFPROFILE_H
#define MYMONEYTQIFPROFILE_H

// ----------------------------------------------------------------------------
// QT Includes

#include <tqobject.h>
#include <tqstring.h>
class TQDate;

// ----------------------------------------------------------------------------
// KDE Includes

// ----------------------------------------------------------------------------
// Project Includes

class MyMoneyMoney;

/**
  * @author Thomas Baumgart
  */

class MyMoneyQifProfile : public TQObject
{
  Q_OBJECT
  TQ_OBJECT

public:
  MyMoneyQifProfile();
  MyMoneyQifProfile(const TQString& name);
  ~MyMoneyQifProfile();

  const TQString& profileName(void) const { return m_profileName; }
  void setProfileName(const TQString& name);

  void loadProfile(const TQString& name);
  void saveProfile(void);

  const TQDate date(const TQString& datein) const;
  TQString date(const TQDate& datein) const;

  MyMoneyMoney value(const TQChar& def, const TQString& valuein) const;
  TQString value(const TQChar& def, const MyMoneyMoney& valuein) const;

  const TQString& outputDateFormat(void) const { return m_dateFormat; }
  TQString inputDateFormat(void) const;
  const TQString& apostropheFormat(void) const { return m_apostropheFormat; }
  TQChar amountDecimal(const TQChar& def) const;
  TQChar amountThousands(const TQChar& def) const;
  const TQString& profileDescription(void) const { return m_profileDescription; }
  const TQString& profileType(void) const { return m_profileType; }
  const TQString& openingBalanceText(void) const { return m_openingBalanceText; }
  TQString accountDelimiter(void) const;
  const TQString& voidMark(void) const { return m_voidMark; }
  const TQString& filterScriptImport(void) const { return m_filterScriptImport; }
  const TQString& filterScriptExport(void) const { return m_filterScriptExport; }
  const TQString& filterFileType(void) const { return m_filterFileType; }
  bool attemptMatchDuplicates(void) const { return m_attemptMatchDuplicates; }

  /**
   * This method scans all strings contained in @a lines and tries to figure
   * out the settings for m_decimal, m_thousands and m_dateFormat
   */
  void autoDetect(const TQStringList& lines);

  /**
   * This method returns a list of possible date formats the user
   * can choose from. If autoDetect() has not been run, the @a list
   * contains all possible date formats, in the other case, the @a list
   * is adjusted to those that will match the data scanned.
   */
  void possibleDateFormats(TQStringList& list) const;

  /**
    * This method presets the member variables with the default values.
    */
  void clear(void);

  /**
    * This method is used to determine, if a profile has been changed or not
    */
  bool isDirty(void) const { return m_isDirty; };

public slots:
  void setProfileDescription(const TQString& desc);
  void setProfileType(const TQString& type);
  void setOutputDateFormat(const TQString& dateFormat);
  void setInputDateFormat(const TQString& dateFormat);
  void setApostropheFormat(const TQString& apostropheFormat);
  void setAmountDecimal(const TQChar& def, const TQChar& chr);
  void setAmountThousands(const TQChar& def, const TQChar& chr);
  void setAccountDelimiter(const TQString& delim);
  void setOpeningBalanceText(const TQString& text);
  void setVoidMark(const TQString& txt);
  void setFilterScriptImport(const TQString& txt);
  void setFilterScriptExport(const TQString& txt);
  void setFilterFileType(const TQString& txt);
  void setAttemptMatchDuplicates(bool);

private:
  TQString twoDigitYear(const TQChar delim, int yr) const;
  void scanNumeric(const TQString& txt, TQChar& decimal, TQChar& thousands) const;
  void scanDate(const TQString& txt) const;

private:
  /// \internal d-pointer class.
  class Private;
  /// \internal d-pointer instance.
  Private* const d;
  bool      m_isDirty;
  TQString   m_profileName;
  TQString   m_profileDescription;
  TQString   m_dateFormat;
  TQString   m_apostropheFormat;
  TQString   m_valueMode;
  TQString   m_profileType;
  TQString   m_openingBalanceText;
  TQString   m_voidMark;
  TQString   m_accountDelimiter;
  TQString   m_filterScriptImport;
  TQString   m_filterScriptExport;
  TQString   m_filterFileType;  /*< The kind of input files the filter will expect, e.g. "*.qif" */
  TQMap<TQChar, TQChar> m_decimal;
  TQMap<TQChar, TQChar> m_thousands;
  bool      m_attemptMatchDuplicates;
};

#endif