#include "AddTableFileDlg.h" #include #include #include #include "app/Application.h" #include "common/SpdLogger.h" #include "ui_AddTableFileDlg.h" AddTableFileDlg::AddTableFileDlg(QWidget* parent) : BaseAddFileDlg(FileEntryType::Table, parent) , ui(new Ui::AddTableFileDlg) { ui->setupUi(this); SetTitle(getDialogTitle()); setupSpecificUI(); setupConnections(); } AddTableFileDlg::~AddTableFileDlg() { delete ui; } void AddTableFileDlg::setupSpecificUI() { // UI is already set up in constructor } void AddTableFileDlg::setupConnections() { // Connect file selection connect(ui->selectFileBtn, &QToolButton::clicked, this, &AddTableFileDlg::onSelectFileClicked); connect(ui->filePathEdit, &QLineEdit::textChanged, this, &AddTableFileDlg::onFilePathChanged); connect(ui->separatorComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &AddTableFileDlg::onDelimiterChanged); connect(ui->hasHeaderCheckBox, &QCheckBox::toggled, this, &AddTableFileDlg::onHeaderToggled); connect(ui->addBtn, &QPushButton::clicked, this, [this]() { OnSure(); }); connect(ui->cancelBtn, &QPushButton::clicked, this, &QDialog::reject); } void AddTableFileDlg::onSelectFileClicked() { const QString workspacePath = Application::GetWorkSpacePath(); QString filePath = QFileDialog::getOpenFileName( this, QStringLiteral("Select Table File"), workspacePath, getFileFilter() ); if (!filePath.isEmpty()) { ui->filePathEdit->setText(filePath); } } void AddTableFileDlg::onFilePathChanged(const QString& filePath) { updateFileInfo(filePath); } void AddTableFileDlg::updateFileInfo(const QString& filePath) { QFileInfo fileInfo(filePath); ui->fileNameValue->setText(fileInfo.fileName()); qint64 size = fileInfo.size(); QString sizeText; if (size < 1024) { sizeText = QString("%1 B").arg(size); } else if (size < 1024 * 1024) { sizeText = QString("%1 KB").arg(size / 1024.0, 0, 'f', 1); } else { sizeText = QString("%1 MB").arg(size / (1024.0 * 1024.0), 0, 'f', 1); } ui->fileSizeValue->setText(sizeText); } void AddTableFileDlg::onDelimiterChanged() { // Handle delimiter change if needed } void AddTableFileDlg::onHeaderToggled(bool hasHeader) { // Handle header toggle if needed } bool AddTableFileDlg::validateSpecificParams() { if (ui->filePathEdit->text().isEmpty()) { QMessageBox::warning(this, QStringLiteral("Warning"), QStringLiteral("Please select a table file first.")); return false; } QFileInfo fileInfo(ui->filePathEdit->text()); if (!fileInfo.exists()) { QMessageBox::warning(this, QStringLiteral("Warning"), QStringLiteral("Selected file does not exist.")); return false; } return true; } QString AddTableFileDlg::getFileFilter() const { return QStringLiteral("Table Files (*.txt *.csv *.tsv *.dat);;All Files (*.*)"); } QString AddTableFileDlg::getDialogTitle() const { return QStringLiteral("Add Table Data File"); } QString AddTableFileDlg::getSelectedFilePath() const { return ui->filePathEdit->text(); } QString AddTableFileDlg::getDescription() const { return ui->descriptionEdit->toPlainText().trimmed(); } AddTableFileDlg::TableParams AddTableFileDlg::getTableParams() const { TableParams params; // Get delimiter from combo box int index = ui->separatorComboBox->currentIndex(); switch (index) { case 0: params.delimiter = ","; break; case 1: params.delimiter = "\t"; break; case 2: params.delimiter = " "; break; case 3: params.delimiter = ";"; break; default: params.delimiter = ","; break; } params.hasHeader = ui->hasHeaderCheckBox->isChecked(); params.xColumn = 1; // Default values params.yColumn = 2; params.description = ui->descriptionEdit->toPlainText().trimmed(); return params; }