Changeset View
Changeset View
Standalone View
Standalone View
kmymoney/plugins/csvimport/csvwizard.h
Show All 14 Lines | |||||
15 | * the Free Software Foundation; either version 2 of the License, or * | 15 | * the Free Software Foundation; either version 2 of the License, or * | ||
16 | * (at your option) any later version. * | 16 | * (at your option) any later version. * | ||
17 | * * | 17 | * * | ||
18 | ********************************************************************************/ | 18 | ********************************************************************************/ | ||
19 | 19 | | |||
20 | #ifndef CSVWIZARD_H | 20 | #ifndef CSVWIZARD_H | ||
21 | #define CSVWIZARD_H | 21 | #define CSVWIZARD_H | ||
22 | 22 | | |||
23 | // ---------------------------------------------------------------------------- | ||||
24 | // QT Includes | ||||
25 | | ||||
23 | #include <QDialog> | 26 | #include <QDialog> | ||
24 | #include <QWizard> | 27 | #include <QWizard> | ||
25 | #include <QLabel> | 28 | #include <QLabel> | ||
26 | #include <QVBoxLayout> | | |||
27 | #include <QScrollBar> | 29 | #include <QScrollBar> | ||
28 | #include <QUrl> | 30 | #include <QVBoxLayout> | ||
31 | | ||||
32 | // ---------------------------------------------------------------------------- | ||||
33 | // KDE Includes | ||||
29 | 34 | | |||
30 | #include <QComboBox> | | |||
31 | #include <KSharedConfig> | 35 | #include <KSharedConfig> | ||
32 | 36 | | |||
37 | // ---------------------------------------------------------------------------- | ||||
38 | // Project Includes | ||||
39 | | ||||
40 | #include "transactiondlg.h" | ||||
41 | #include "securitydlg.h" | ||||
42 | #include "securitiesdlg.h" | ||||
43 | #include "currenciesdlg.h" | ||||
44 | | ||||
45 | //#include "csvimporter.h" | ||||
33 | #include "csvimporterplugin.h" | 46 | #include "csvimporterplugin.h" | ||
34 | #include "bankingwizardpage.h" | 47 | #include "bankingwizardpage.h" | ||
35 | #include "investmentwizardpage.h" | 48 | #include "investmentwizardpage.h" | ||
36 | #include "priceswizardpage.h" | 49 | #include "priceswizardpage.h" | ||
37 | 50 | | |||
38 | class ConvertDate; | 51 | | ||
39 | class Parse; | 52 | class CsvImporterPlugin; | ||
40 | class CsvUtil; | 53 | class CSVImporter; | ||
41 | class FormatsPage; | 54 | | ||
55 | class TransactionDlg; | ||||
56 | class SecurityDlg; | ||||
57 | class SecuritiesDlg; | ||||
58 | class CurrenciesDlg; | ||||
59 | | ||||
60 | class BankingProfile; | ||||
61 | class InvestmentProfile; | ||||
62 | class PricesProfile; | ||||
63 | | ||||
42 | class IntroPage; | 64 | class IntroPage; | ||
43 | class SeparatorPage; | 65 | class SeparatorPage; | ||
44 | class RowsPage; | 66 | class RowsPage; | ||
45 | class CsvImporterPlugin; | 67 | class BankingPage; | ||
68 | class InvestmentPage; | ||||
69 | class PricesPage; | ||||
70 | class FormatsPage; | ||||
46 | 71 | | |||
47 | namespace Ui | 72 | namespace Ui | ||
48 | { | 73 | { | ||
49 | class CSVWizard; | 74 | class CSVWizard; | ||
50 | } | 75 | } | ||
51 | 76 | | |||
52 | class CSVWizard : public QDialog | 77 | class CSVWizard : public QDialog | ||
53 | { | 78 | { | ||
54 | Q_OBJECT | 79 | Q_OBJECT | ||
55 | 80 | | |||
56 | public: | 81 | public: | ||
57 | explicit CSVWizard(); | 82 | CSVWizard(CsvImporterPlugin *plugin, CSVImporter *importer); | ||
58 | virtual ~CSVWizard(); | 83 | ~CSVWizard(); | ||
59 | 84 | | |||
60 | enum { PageIntro, PageSeparator, PageRows, | 85 | enum wizardPageE { PageIntro, PageSeparator, PageRows, | ||
61 | PageBanking, PageInvestment, PagePrices, PageFormats | 86 | PageBanking, PageInvestment, PagePrices, PageFormats | ||
62 | }; | 87 | }; | ||
63 | 88 | | |||
64 | typedef enum:int { ProfileInvest, ProfileBank, ProfileCurrencyPrices, ProfileStockPrices, ProfileNone = 0xFF, | 89 | Ui::CSVWizard* ui; | ||
65 | } profileTypeE; | | |||
66 | 90 | | |||
67 | typedef enum:uchar { AutoFieldDelimiter, AutoDecimalSymbol, AutoDateFormat, | 91 | CsvImporterPlugin* m_plugin; | ||
68 | AutoAccountInvest, AutoAccountBank, | 92 | CSVImporter* m_imp; | ||
69 | } autodetectTypeE; | 93 | QWizard* m_wiz; | ||
70 | 94 | | |||
71 | Ui::CSVWizard* ui; | | |||
72 | QWizard* m_wizard; | | |||
73 | IntroPage* m_pageIntro; | 95 | IntroPage *m_pageIntro; | ||
74 | SeparatorPage* m_pageSeparator; | 96 | SeparatorPage *m_pageSeparator; | ||
75 | RowsPage* m_pageRows; | 97 | RowsPage *m_pageRows; | ||
76 | QPointer<BankingPage> m_pageBanking; | 98 | QPointer<BankingPage> m_pageBanking; | ||
77 | QPointer<InvestmentPage> m_pageInvestment; | 99 | QPointer<InvestmentPage> m_pageInvestment; | ||
78 | QPointer<PricesPage> m_pagePrices; | 100 | QPointer<PricesPage> m_pagePrices; | ||
79 | FormatsPage* m_pageFormats; | 101 | FormatsPage *m_pageFormats; | ||
80 | ConvertDate* m_convertDate; | | |||
81 | CsvUtil* m_csvUtil; | | |||
82 | Parse* m_parse; | | |||
83 | CsvImporterPlugin* m_plugin; | | |||
84 | | ||||
85 | MyMoneyStatement st; | | |||
86 | 102 | | |||
87 | KSharedConfigPtr m_config; | 103 | MyMoneyStatement m_st; | ||
88 | 104 | | |||
89 | QList<QLabel*> m_stageLabels; | 105 | QList<QLabel *> m_stageLabels; | ||
90 | QScrollBar* m_vScrollBar; | 106 | QScrollBar *m_vScrollBar; | ||
91 | QList<QTextCodec *> m_codecs; | | |||
92 | 107 | | |||
93 | QBrush m_clearBrush; | 108 | QBrush m_clearBrush; | ||
94 | QBrush m_clearBrushText; | 109 | QBrush m_clearBrushText; | ||
95 | QBrush m_colorBrush; | 110 | QBrush m_colorBrush; | ||
96 | QBrush m_colorBrushText; | 111 | QBrush m_colorBrushText; | ||
97 | QBrush m_errorBrush; | 112 | QBrush m_errorBrush; | ||
98 | QBrush m_errorBrushText; | 113 | QBrush m_errorBrushText; | ||
99 | 114 | | |||
100 | QString m_fieldDelimiterCharacter; | | |||
101 | QString m_textDelimiterCharacter; | | |||
102 | QString m_decimalSymbol; | | |||
103 | QString m_inFileName; | | |||
104 | int m_profileType; | | |||
105 | QString m_date; | | |||
106 | QString m_profileName; | | |||
107 | QStringList m_lineList; | | |||
108 | QStringList m_dateFormats; | | |||
109 | QStringList m_profileList; | | |||
110 | QList<int> m_memoColList; | | |||
111 | QUrl m_url; | | |||
112 | | ||||
113 | int m_initialHeight; | 115 | int m_initialHeight; | ||
114 | int m_initialWidth; | 116 | int m_initialWidth; | ||
115 | int m_fieldDelimiterIndex; | | |||
116 | int m_textDelimiterIndex; | | |||
117 | int m_decimalSymbolIndex; | | |||
118 | QMap<int, int> m_decimalSymbolIndexMap; | | |||
119 | int m_row; | | |||
120 | int m_maxColumnCount; | | |||
121 | int m_endColumn; | | |||
122 | int m_encodeIndex; | | |||
123 | int m_startLine; | | |||
124 | int m_endLine; | | |||
125 | int m_trailerLines; | | |||
126 | int m_fileEndLine; | | |||
127 | int m_dateFormatIndex; | | |||
128 | int m_memoColumn; | | |||
129 | int m_dateColumn; | | |||
130 | 117 | | |||
131 | QMap<autodetectTypeE, bool> m_autodetect; | 118 | QMap <columnTypeE, QString> m_colTypeName; | ||
132 | | ||||
133 | bool m_accept; | | |||
134 | bool m_importError; | | |||
135 | bool m_skipSetup; | 119 | bool m_skipSetup; | ||
136 | bool m_acceptAllInvalid; | | |||
137 | | ||||
138 | /** | | |||
139 | * This method is called after startup, to initialise some parameters. | | |||
140 | */ | | |||
141 | void init(); | | |||
142 | 120 | | |||
143 | void showStage(); | 121 | void showStage(); | ||
144 | 122 | | |||
145 | void readMiscSettings(const KSharedConfigPtr& config); | 123 | void clearColumnsBackground(const int col); | ||
146 | void saveWindowSize(const KSharedConfigPtr& config); | 124 | void clearColumnsBackground(const QList<int> &columnList); | ||
147 | | ||||
148 | /** | | |||
149 | * This method contains routines to update configuration file | | |||
150 | * from kmmVer to latest. | | |||
151 | */ | | |||
152 | bool updateConfigFile(const KSharedConfigPtr &config, const QList<int> &kmmVer); | | |||
153 | | ||||
154 | /** | | |||
155 | * This method ensures that configuration file contains all neccesary fields | | |||
156 | * and that it is up to date. | | |||
157 | */ | | |||
158 | void validateConfigFile(const KSharedConfigPtr &config); | | |||
159 | | ||||
160 | /** | | |||
161 | * This method is called on opening the plugin. | | |||
162 | * It will add all codec names to the encoding combobox. | | |||
163 | */ | | |||
164 | void setCodecList(const QList<QTextCodec *> &list, QComboBox *comboBoxEncode); | | |||
165 | | ||||
166 | /** | | |||
167 | * This method is called on opening the plugin. | | |||
168 | * It will populate a list with all available codecs. | | |||
169 | */ | | |||
170 | void findCodecs(); | | |||
171 | | ||||
172 | void clearColumnsBackground(int col); | | |||
173 | void clearColumnsBackground(QList<int>& columnList); | | |||
174 | void clearBackground(); | 125 | void clearBackground(); | ||
175 | void markUnwantedRows(); | 126 | void markUnwantedRows(); | ||
176 | QList<MyMoneyAccount> findAccounts(QList<MyMoneyAccount::accountTypeE> &accountTypes, QString& statementHeader); | | |||
177 | bool detectAccount(MyMoneyStatement& st); | | |||
178 | 127 | | |||
179 | signals: | | |||
180 | void statementReady(MyMoneyStatement&); | | |||
181 | public slots: | 128 | public slots: | ||
182 | 129 | | |||
183 | /** | 130 | /** | ||
184 | * This method is called when the user clicks 'Encoding' and selects an | | |||
185 | * encoding setting. The file is re-read with the corresponding codec. | | |||
186 | */ | | |||
187 | void encodingChanged(int); | | |||
188 | | ||||
189 | bool detectDecimalSymbol(const int col, int& symbol); | | |||
190 | | ||||
191 | /** | | |||
192 | * This method is called when 'Exit' is clicked. The plugin settings will | 131 | * This method is called when 'Exit' is clicked. The plugin settings will | ||
193 | * be saved and the plugin will be terminated. | 132 | * be saved and the plugin will be terminated. | ||
194 | */ | 133 | */ | ||
195 | void slotClose(); | 134 | void slotClose(); | ||
196 | 135 | | |||
197 | /** | 136 | /** | ||
198 | * If delimiter = -1 this method tries different fild | | |||
199 | * delimiters to get the one with which file has the most columns. | | |||
200 | * Otherwise it gets only column count for specified delimiter. | | |||
201 | */ | | |||
202 | int getMaxColumnCount(QStringList &lineList, int &delimiter); | | |||
203 | | ||||
204 | /** | | |||
205 | * This method gets the filename of | | |||
206 | * the financial statement. | | |||
207 | */ | | |||
208 | bool getInFileName(QString &startDir); | | |||
209 | | ||||
210 | /** | | |||
211 | * This method gets file into buffer | | |||
212 | * It will laso store file's end column and row. | | |||
213 | */ | | |||
214 | void readFile(const QString& fname); | | |||
215 | | ||||
216 | /** | | |||
217 | * It will display lines list in the UI table widget. | | |||
218 | */ | | |||
219 | void displayLines(const QStringList &lineList, Parse *parse); | | |||
220 | | ||||
221 | /** | | |||
222 | * Called in order to adjust window size to suit the file, | 137 | * Called in order to adjust window size to suit the file, | ||
223 | */ | 138 | */ | ||
224 | void updateWindowSize(); | 139 | void updateWindowSize(); | ||
225 | 140 | | |||
226 | /** | 141 | void readWindowSize(const KSharedConfigPtr& config); | ||
227 | * This method is called when the user clicks 'Open File'. It ends | 142 | void saveWindowSize(const KSharedConfigPtr& config); | ||
228 | * in importing ready bank statement. | 143 | | ||
229 | */ | | |||
230 | void slotFileDialogClicked(); | | |||
231 | 144 | | |||
232 | void slotIdChanged(int id); | 145 | void slotIdChanged(int id); | ||
233 | 146 | | |||
147 | void fileDialogClicked(); | ||||
148 | void importClicked(); | ||||
149 | void saveAsQIFClicked(); | ||||
234 | private: | 150 | private: | ||
235 | int m_curId; | 151 | int m_curId; | ||
236 | int m_lastId; | 152 | int m_lastId; | ||
237 | 153 | | |||
238 | void closeEvent(QCloseEvent *event); | 154 | void closeEvent(QCloseEvent *event); | ||
239 | bool eventFilter(QObject *object, QEvent *event); | 155 | bool eventFilter(QObject *object, QEvent *event); | ||
240 | void resizeEvent(QResizeEvent* ev); | 156 | // void resizeEvent(QResizeEvent* ev); | ||
241 | } | 157 | } | ||
242 | ; | 158 | ; | ||
243 | 159 | | |||
244 | namespace Ui | 160 | namespace Ui | ||
245 | { | 161 | { | ||
246 | class IntroPage; | 162 | class IntroPage; | ||
247 | } | 163 | } | ||
248 | 164 | | |||
249 | class CSVWizardPage : public QWizardPage { | | |||
250 | public: | | |||
251 | CSVWizardPage(QWidget *parent = 0) : QWizardPage(parent), m_wizDlg(0) {} | | |||
252 | | ||||
253 | virtual void setParent(CSVWizard* dlg) { m_wizDlg = dlg; } | | |||
254 | | ||||
255 | protected: | | |||
256 | CSVWizard* m_wizDlg; | | |||
257 | }; | | |||
258 | | ||||
259 | class IntroPage : public CSVWizardPage | 165 | class IntroPage : public CSVWizardPage | ||
260 | { | 166 | { | ||
261 | Q_OBJECT | 167 | Q_OBJECT | ||
262 | 168 | | |||
263 | public: | 169 | public: | ||
264 | explicit IntroPage(QDialog *parent = 0); | 170 | explicit IntroPage(CSVWizard *dlg, CSVImporter *imp); | ||
265 | ~IntroPage(); | 171 | ~IntroPage(); | ||
266 | 172 | | |||
267 | Ui::IntroPage *ui; | 173 | Ui::IntroPage *ui; | ||
268 | void initializePage(); | 174 | void initializePage(); | ||
269 | void setParent(CSVWizard* dlg); | 175 | // void setParent(CSVWizard* dlg, CSVImporter *imp); | ||
270 | 176 | | |||
271 | QVBoxLayout* m_pageLayout; | 177 | QVBoxLayout* m_pageLayout; | ||
178 | profileTypeE m_profileType; | ||||
272 | 179 | | |||
273 | signals: | 180 | signals: | ||
274 | void signalBankClicked(bool); | 181 | void signalBankClicked(bool); | ||
275 | void activated(int); | 182 | void activated(int); | ||
276 | void returnPressed(); | 183 | void returnPressed(); | ||
277 | 184 | | |||
278 | private: | 185 | private: | ||
279 | bool validatePage(); | 186 | bool validatePage(); | ||
280 | int nextId() const; | 187 | int nextId() const; | ||
281 | 188 | | |||
282 | typedef enum:uchar { ProfileAdd, ProfileRemove, ProfileRename, | 189 | QStringList m_profiles; | ||
283 | } profileActionsE; | 190 | | ||
191 | void profileChanged(const profilesActionE action); | ||||
192 | void profileTypeChanged(const profileTypeE profileType, bool toggled); | ||||
284 | 193 | | |||
285 | void profileChanged(const profileActionsE& action); | 194 | public slots: | ||
286 | void profileTypeChanged(const CSVWizard::profileTypeE profileType, bool toggled); | | |||
287 | 195 | | |||
288 | private slots: | 196 | private slots: | ||
289 | void slotAddProfile(); | 197 | void slotAddProfile(); | ||
290 | void slotRemoveProfile(); | 198 | void slotRemoveProfile(); | ||
291 | void slotRenameProfile(); | 199 | void slotRenameProfile(); | ||
292 | void slotComboSourceIndexChanged(int idx); | 200 | void slotComboSourceIndexChanged(int idx); | ||
293 | void slotBankRadioToggled(bool toggled); | 201 | void slotBankRadioToggled(bool toggled); | ||
294 | void slotInvestRadioToggled(bool toggled); | 202 | void slotInvestRadioToggled(bool toggled); | ||
295 | void slotCurrencyPricesRadioToggled(bool toggled); | 203 | void slotCurrencyPricesRadioToggled(bool toggled); | ||
296 | void slotStockPricesRadioToggled(bool toggled); | 204 | void slotStockPricesRadioToggled(bool toggled); | ||
297 | }; | 205 | }; | ||
298 | 206 | | |||
299 | namespace Ui | 207 | namespace Ui | ||
300 | { | 208 | { | ||
301 | class SeparatorPage; | 209 | class SeparatorPage; | ||
302 | } | 210 | } | ||
303 | 211 | | |||
304 | class SeparatorPage : public CSVWizardPage | 212 | class SeparatorPage : public CSVWizardPage | ||
305 | { | 213 | { | ||
306 | Q_OBJECT | 214 | Q_OBJECT | ||
307 | 215 | | |||
308 | public: | 216 | public: | ||
309 | explicit SeparatorPage(QDialog *parent = 0); | 217 | explicit SeparatorPage(CSVWizard *dlg, CSVImporter *imp); | ||
310 | ~SeparatorPage(); | 218 | ~SeparatorPage(); | ||
311 | 219 | | |||
312 | Ui::SeparatorPage *ui; | 220 | Ui::SeparatorPage *ui; | ||
313 | 221 | | |||
314 | QVBoxLayout *m_pageLayout; | 222 | QVBoxLayout *m_pageLayout; | ||
315 | 223 | | |||
316 | void initializePage(); | 224 | void initializePage(); | ||
317 | bool isComplete() const; | 225 | bool isComplete() const; | ||
318 | 226 | | |||
319 | public slots: | 227 | public slots: | ||
320 | /** | 228 | void encodingChanged(const int index); | ||
321 | * This method is called when a text delimiter is changed. | | |||
322 | */ | | |||
323 | void textDelimiterChanged(const int index); | | |||
324 | | ||||
325 | /** | | |||
326 | * This method is called when a field delimiter is changed. The | | |||
327 | * input file is redisplayed using the new delimiter. | | |||
328 | */ | | |||
329 | void fieldDelimiterChanged(const int index); | 229 | void fieldDelimiterChanged(const int index); | ||
230 | void textDelimiterChanged(const int index); | ||||
330 | 231 | | |||
331 | signals: | 232 | signals: | ||
332 | void completeChanged(); | 233 | void completeChanged(); | ||
333 | 234 | | |||
334 | private: | 235 | private: | ||
236 | void initializeEncodingCombobox(); | ||||
335 | void cleanupPage(); | 237 | void cleanupPage(); | ||
336 | bool validatePage(); | 238 | bool validatePage(); | ||
337 | 239 | | |||
338 | private slots: | 240 | private slots: | ||
339 | 241 | | |||
340 | signals: | 242 | signals: | ||
341 | }; | 243 | }; | ||
342 | 244 | | |||
343 | namespace Ui | 245 | namespace Ui | ||
344 | { | 246 | { | ||
345 | class RowsPage; | 247 | class RowsPage; | ||
346 | } | 248 | } | ||
347 | 249 | | |||
348 | class RowsPage : public CSVWizardPage | 250 | class RowsPage : public CSVWizardPage | ||
349 | { | 251 | { | ||
350 | Q_OBJECT | 252 | Q_OBJECT | ||
351 | 253 | | |||
352 | public: | 254 | public: | ||
353 | explicit RowsPage(QDialog *parent = 0); | 255 | explicit RowsPage(CSVWizard *dlg, CSVImporter *imp); | ||
354 | ~RowsPage(); | 256 | ~RowsPage(); | ||
355 | 257 | | |||
356 | Ui::RowsPage *ui; | 258 | Ui::RowsPage *ui; | ||
357 | 259 | | |||
358 | QVBoxLayout *m_pageLayout; | 260 | QVBoxLayout *m_pageLayout; | ||
359 | 261 | | |||
360 | void initializePage(); | 262 | void initializePage(); | ||
361 | int nextId() const; | 263 | int nextId() const; | ||
Show All 9 Lines | 267 | public slots: | |||
371 | /** | 273 | /** | ||
372 | * This method is called when the user edits the lastLine setting. | 274 | * This method is called when the user edits the lastLine setting. | ||
373 | */ | 275 | */ | ||
374 | void endRowChanged(int val); | 276 | void endRowChanged(int val); | ||
375 | private: | 277 | private: | ||
376 | void cleanupPage(); | 278 | void cleanupPage(); | ||
377 | }; | 279 | }; | ||
378 | 280 | | |||
281 | | ||||
282 | | ||||
379 | namespace Ui | 283 | namespace Ui | ||
380 | { | 284 | { | ||
381 | class FormatsPage; | 285 | class FormatsPage; | ||
382 | } | 286 | } | ||
383 | 287 | | |||
384 | class FormatsPage : public CSVWizardPage | 288 | class FormatsPage : public CSVWizardPage | ||
385 | { | 289 | { | ||
386 | Q_OBJECT | 290 | Q_OBJECT | ||
387 | 291 | | |||
388 | public: | 292 | public: | ||
389 | explicit FormatsPage(QDialog *parent = 0); | 293 | explicit FormatsPage(CSVWizard *dlg, CSVImporter *imp); | ||
390 | ~FormatsPage(); | 294 | ~FormatsPage(); | ||
391 | 295 | | |||
392 | Ui::FormatsPage *ui; | 296 | Ui::FormatsPage *ui; | ||
393 | 297 | | |||
394 | QVBoxLayout *m_pageLayout; | 298 | QVBoxLayout *m_pageLayout; | ||
395 | 299 | | |||
396 | void initializePage(); | 300 | void initializePage(); | ||
397 | 301 | | |||
398 | /** | 302 | /** | ||
399 | * This method is called when the user selects a new decimal symbol. The | 303 | * This method is called when the user selects a new decimal symbol. The | ||
400 | * UI is updated using the new symbol, and on importing, the new symbol | 304 | * UI is updated using the new symbol, and on importing, the new symbol | ||
401 | * also will be used. | 305 | * also will be used. | ||
402 | */ | 306 | */ | ||
403 | bool validateDecimalSymbol(int col); | 307 | bool validateDecimalSymbols(const QList<int> &columns); | ||
404 | 308 | | |||
405 | /** | 309 | /** | ||
406 | * This method checks if all dates in date column are valid. | 310 | * This method checks if all dates in date column are valid. | ||
407 | */ | 311 | */ | ||
408 | bool validateDateFormat(int index); | 312 | bool validateDateFormat(const int index); | ||
409 | 313 | | |||
410 | signals: | 314 | signals: | ||
411 | void completeChanged(); | 315 | void completeChanged(); | ||
412 | public slots: | 316 | public slots: | ||
413 | void slotImportClicked(); | | |||
414 | void slotSaveAsQIFClicked(); | | |||
415 | /** | | |||
416 | * This method is called when the user selects a new decimal symbol. The | | |||
417 | * UI is updated using the new symbol. | | |||
418 | */ | | |||
419 | void decimalSymbolChanged(int); | | |||
420 | 317 | | |||
421 | /** | 318 | | ||
422 | * This method is called when the user clicks 'Date format' and selects a | 319 | void decimalSymbolChanged(int); | ||
423 | * format, which is used by convertDate(). | 320 | void dateFormatChanged(const int index); | ||
424 | */ | | |||
425 | void dateFormatChanged(int index); | | |||
426 | private: | 321 | private: | ||
427 | bool m_isDecimalSymbolOK; | 322 | bool m_isDecimalSymbolOK; | ||
428 | bool m_isDateFormatOK; | 323 | bool m_isDateFormatOK; | ||
429 | 324 | | |||
430 | bool isComplete() const; | 325 | bool isComplete() const; | ||
431 | void cleanupPage(); | 326 | void cleanupPage(); | ||
432 | }; | 327 | }; | ||
433 | 328 | | |||
434 | #endif // CSVWIZARD_H | 329 | #endif // CSVWIZARD_H |