From 2c204cd94e2d30aee136fbb0f14b64d5cc29b266 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Sun, 25 Jan 2026 15:23:07 -0500 Subject: CSV importer --- importdialog.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 importdialog.h (limited to 'importdialog.h') 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include "transaction.h" +#include "database.h" + +class ImportDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ImportDialog(Database *db, QWidget *parent = nullptr); + ~ImportDialog(); + + QList 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 csvRows; + QList importedTransactions; + + void loadCsvFile(const QString &filePath); + void updatePreview(); + Transaction parseRow(int rowIndex); +}; + +#endif // IMPORTDIALOG_H -- cgit v1.2.3