aboutsummaryrefslogtreecommitdiff
path: root/importdialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'importdialog.h')
-rw-r--r--importdialog.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/importdialog.h b/importdialog.h
new file mode 100644
index 0000000..68ae7ae
--- /dev/null
+++ b/importdialog.h
@@ -0,0 +1,58 @@
+#ifndef IMPORTDIALOG_H
+#define IMPORTDIALOG_H
+
+#include <QDialog>
+#include <QTableWidget>
+#include <QComboBox>
+#include <QCheckBox>
+#include <QPushButton>
+#include <QRadioButton>
+#include <QButtonGroup>
+#include <QList>
+#include <QStringList>
+#include "transaction.h"
+#include "database.h"
+
+class ImportDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit ImportDialog(Database *db, QWidget *parent = nullptr);
+ ~ImportDialog();
+
+ QList<Transaction> getImportedTransactions() const;
+
+private slots:
+ void onBrowseFile();
+ void onColumnMappingChanged();
+ void onImport();
+ void onSelectAll();
+ void onDeselectAll();
+
+private:
+ Database *database;
+ QTableWidget *previewTable;
+ QPushButton *browseBtn;
+ QPushButton *importBtn;
+ QPushButton *selectAllBtn;
+ QPushButton *deselectAllBtn;
+
+ QComboBox *dateColumnCombo;
+ QComboBox *amountColumnCombo;
+ QComboBox *withdrawalColumnCombo;
+ QComboBox *depositColumnCombo;
+ QComboBox *descriptionColumnCombo;
+ QComboBox *accountCombo;
+ QComboBox *categoryCombo;
+
+ QStringList csvHeaders;
+ QList<QStringList> csvRows;
+ QList<Transaction> importedTransactions;
+
+ void loadCsvFile(const QString &filePath);
+ void updatePreview();
+ Transaction parseRow(int rowIndex);
+};
+
+#endif // IMPORTDIALOG_H