From 64419f2b19ee856b9e6d90a32726964401d92b5c Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 16 Mar 2024 10:02:54 +0100 Subject: [PATCH] dive download: pass current filename to dialog Instead of accessing a global variable, pass the filename from the MainWindow to the dialog. This is supposed to cut down on the global variable mess. Signed-off-by: Berthold Stoeger --- desktop-widgets/configuredivecomputerdialog.cpp | 11 +++++------ desktop-widgets/configuredivecomputerdialog.h | 4 ++-- desktop-widgets/downloadfromdivecomputer.cpp | 15 +++++++-------- desktop-widgets/downloadfromdivecomputer.h | 3 ++- desktop-widgets/mainwindow.cpp | 3 ++- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/desktop-widgets/configuredivecomputerdialog.cpp b/desktop-widgets/configuredivecomputerdialog.cpp index a05b9304b..8869daaa5 100644 --- a/desktop-widgets/configuredivecomputerdialog.cpp +++ b/desktop-widgets/configuredivecomputerdialog.cpp @@ -294,7 +294,7 @@ void OstcFirmwareCheck::parseOstcFwVersion(QNetworkReply *reply) disconnect(&manager, &QNetworkAccessManager::finished, this, &OstcFirmwareCheck::parseOstcFwVersion); } -void OstcFirmwareCheck::checkLatest(QWidget *_parent, device_data_t *data) +void OstcFirmwareCheck::checkLatest(QWidget *_parent, device_data_t *data, const QString &filename) { devData = *data; parent = _parent; @@ -339,21 +339,20 @@ void OstcFirmwareCheck::checkLatest(QWidget *_parent, device_data_t *data) response.setWindowModality(Qt::WindowModal); int ret = response.exec(); if (ret == QMessageBox::Accepted) - upgradeFirmware(); + upgradeFirmware(filename); } } -void OstcFirmwareCheck::upgradeFirmware() +void OstcFirmwareCheck::upgradeFirmware(const QString &filename) { // start download of latestFirmwareHexFile QString saveFileName = latestFirmwareHexFile; saveFileName.replace("http://www.heinrichsweikamp.net/autofirmware/", ""); saveFileName.replace("firmware", latestFirmwareAvailable); - QString filename = existing_filename ?: prefs.default_filename; QFileInfo fi(filename); - filename = fi.absolutePath().append(QDir::separator()).append(saveFileName); + saveFileName = fi.absolutePath().append(QDir::separator()).append(saveFileName); storeFirmware = QFileDialog::getSaveFileName(parent, tr("Save the downloaded firmware as"), - filename, tr("Firmware files") + " (*.hex *.bin)"); + saveFileName, tr("Firmware files") + " (*.hex *.bin)"); if (storeFirmware.isEmpty()) return; diff --git a/desktop-widgets/configuredivecomputerdialog.h b/desktop-widgets/configuredivecomputerdialog.h index 56df726ef..5edfe92f4 100644 --- a/desktop-widgets/configuredivecomputerdialog.h +++ b/desktop-widgets/configuredivecomputerdialog.h @@ -123,14 +123,14 @@ class OstcFirmwareCheck : public QObject { Q_OBJECT public: explicit OstcFirmwareCheck(const QString &product); - void checkLatest(QWidget *parent, device_data_t *data); + void checkLatest(QWidget *parent, device_data_t *data, const QString &filename); public slots: void parseOstcFwVersion(QNetworkReply *reply); void saveOstcFirmware(QNetworkReply *reply); private: - void upgradeFirmware(); + void upgradeFirmware(const QString &filename); device_data_t devData; QString latestFirmwareAvailable; QString latestFirmwareHexFile; diff --git a/desktop-widgets/downloadfromdivecomputer.cpp b/desktop-widgets/downloadfromdivecomputer.cpp index b2d2824d6..e6338ca81 100644 --- a/desktop-widgets/downloadfromdivecomputer.cpp +++ b/desktop-widgets/downloadfromdivecomputer.cpp @@ -26,7 +26,8 @@ static bool is_vendor_searchable(QString vendor) return vendor == "Uemis" || vendor == "Garmin"; } -DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent) : QDialog(parent, QFlag(0)), +DownloadFromDCWidget::DownloadFromDCWidget(const QString &filename, QWidget *parent) : QDialog(parent, QFlag(0)), + filename(filename), downloading(false), previousLast(0), timer(new QTimer(this)), @@ -461,11 +462,10 @@ void DownloadFromDCWidget::checkLogFile(int state) void DownloadFromDCWidget::pickLogFile() { - QString filename = existing_filename ?: prefs.default_filename; QFileInfo fi(filename); - filename = fi.absolutePath().append(QDir::separator()).append("subsurface.log"); + QString logfilename = fi.absolutePath().append(QDir::separator()).append("subsurface.log"); QString logFile = QFileDialog::getSaveFileName(this, tr("Choose file for dive computer download logfile"), - filename, tr("Log files") + " (*.log)"); + logfilename, tr("Log files") + " (*.log)"); if (!logFile.isEmpty()) { free(logfile_name); logfile_name = copy_qstring(logFile); @@ -487,11 +487,10 @@ void DownloadFromDCWidget::checkDumpFile(int state) void DownloadFromDCWidget::pickDumpFile() { - QString filename = existing_filename ?: prefs.default_filename; QFileInfo fi(filename); - filename = fi.absolutePath().append(QDir::separator()).append("subsurface.bin"); + QString dumpfilename = fi.absolutePath().append(QDir::separator()).append("subsurface.bin"); QString dumpFile = QFileDialog::getSaveFileName(this, tr("Choose file for dive computer binary dump file"), - filename, tr("Dump files") + " (*.bin)"); + dumpfilename, tr("Dump files") + " (*.bin)"); if (!dumpFile.isEmpty()) { free(dumpfile_name); dumpfile_name = copy_qstring(dumpFile); @@ -547,7 +546,7 @@ void DownloadFromDCWidget::on_ok_clicked() diveImportedModel->recordDives(flags); if (ostcFirmwareCheck && currentState == DONE) - ostcFirmwareCheck->checkLatest(this, diveImportedModel->thread.data()->internalData()); + ostcFirmwareCheck->checkLatest(this, diveImportedModel->thread.data()->internalData(), filename); accept(); } diff --git a/desktop-widgets/downloadfromdivecomputer.h b/desktop-widgets/downloadfromdivecomputer.h index 24c956890..ca7e39222 100644 --- a/desktop-widgets/downloadfromdivecomputer.h +++ b/desktop-widgets/downloadfromdivecomputer.h @@ -25,7 +25,7 @@ class BTDiscovery; class DownloadFromDCWidget : public QDialog { Q_OBJECT public: - explicit DownloadFromDCWidget(QWidget *parent = 0); + explicit DownloadFromDCWidget(const QString &filename, QWidget *parent = 0); void reject(); enum states { @@ -72,6 +72,7 @@ private: QStringListModel vendorModel; QStringListModel productModel; Ui::DownloadFromDiveComputer ui; + QString filename; bool downloading; int previousLast; diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp index 48b2e13de..2ee3918cf 100644 --- a/desktop-widgets/mainwindow.cpp +++ b/desktop-widgets/mainwindow.cpp @@ -607,7 +607,8 @@ void MainWindow::on_actionQuit_triggered() void MainWindow::on_actionDownloadDC_triggered() { - DownloadFromDCWidget dlg(this); + QString filename = existing_filename ?: prefs.default_filename; + DownloadFromDCWidget dlg(filename, this); dlg.exec(); }