summaryrefslogtreecommitdiffstats
path: root/kmymoney2/converter/mymoneyqifprofile.h
blob: bd6b328a0c08a41156a948e2fce69fc574d977c9 (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
/***************************************************************************
                          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 MYMONEYQIFPROFILE_H
#define MYMONEYQIFPROFILE_H

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

#include <qobject.h>
#include <qstring.h>
class QDate;

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

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

class MyMoneyMoney;

/**
  * @author Thomas Baumgart
  */

class MyMoneyQifProfile : public QObject
{
  Q_OBJECT

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

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

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

  const QDate date(const QString& datein) const;
  QString date(const QDate& datein) const;

  MyMoneyMoney value(const QChar& def, const QString& valuein) const;
  QString value(const QChar& def, const MyMoneyMoney& valuein) const;

  const QString& outputDateFormat(void) const { return m_dateFormat; }
  QString inputDateFormat(void) const;
  const QString& apostropheFormat(void) const { return m_apostropheFormat; }
  QChar amountDecimal(const QChar& def) const;
  QChar amountThousands(const QChar& def) const;
  const QString& profileDescription(void) const { return m_profileDescription; }
  const QString& profileType(void) const { return m_profileType; }
  const QString& openingBalanceText(void) const { return m_openingBalanceText; }
  QString accountDelimiter(void) const;
  const QString& voidMark(void) const { return m_voidMark; }
  const QString& filterScriptImport(void) const { return m_filterScriptImport; }
  const QString& filterScriptExport(void) const { return m_filterScriptExport; }
  const QString& 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 QStringList& 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(QStringList& 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 QString& desc);
  void setProfileType(const QString& type);
  void setOutputDateFormat(const QString& dateFormat);
  void setInputDateFormat(const QString& dateFormat);
  void setApostropheFormat(const QString& apostropheFormat);
  void setAmountDecimal(const QChar& def, const QChar& chr);
  void setAmountThousands(const QChar& def, const QChar& chr);
  void setAccountDelimiter(const QString& delim);
  void setOpeningBalanceText(const QString& text);
  void setVoidMark(const QString& txt);
  void setFilterScriptImport(const QString& txt);
  void setFilterScriptExport(const QString& txt);
  void setFilterFileType(const QString& txt);
  void setAttemptMatchDuplicates(bool);

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

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

#endif