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 <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-03-16 10:02:54 +01:00 committed by bstoeger
parent 981352646c
commit 64419f2b19
5 changed files with 18 additions and 18 deletions

View file

@ -294,7 +294,7 @@ void OstcFirmwareCheck::parseOstcFwVersion(QNetworkReply *reply)
disconnect(&manager, &QNetworkAccessManager::finished, this, &OstcFirmwareCheck::parseOstcFwVersion); 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; devData = *data;
parent = _parent; parent = _parent;
@ -339,21 +339,20 @@ void OstcFirmwareCheck::checkLatest(QWidget *_parent, device_data_t *data)
response.setWindowModality(Qt::WindowModal); response.setWindowModality(Qt::WindowModal);
int ret = response.exec(); int ret = response.exec();
if (ret == QMessageBox::Accepted) if (ret == QMessageBox::Accepted)
upgradeFirmware(); upgradeFirmware(filename);
} }
} }
void OstcFirmwareCheck::upgradeFirmware() void OstcFirmwareCheck::upgradeFirmware(const QString &filename)
{ {
// start download of latestFirmwareHexFile // start download of latestFirmwareHexFile
QString saveFileName = latestFirmwareHexFile; QString saveFileName = latestFirmwareHexFile;
saveFileName.replace("http://www.heinrichsweikamp.net/autofirmware/", ""); saveFileName.replace("http://www.heinrichsweikamp.net/autofirmware/", "");
saveFileName.replace("firmware", latestFirmwareAvailable); saveFileName.replace("firmware", latestFirmwareAvailable);
QString filename = existing_filename ?: prefs.default_filename;
QFileInfo fi(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"), 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()) if (storeFirmware.isEmpty())
return; return;

View file

@ -123,14 +123,14 @@ class OstcFirmwareCheck : public QObject {
Q_OBJECT Q_OBJECT
public: public:
explicit OstcFirmwareCheck(const QString &product); 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 public
slots: slots:
void parseOstcFwVersion(QNetworkReply *reply); void parseOstcFwVersion(QNetworkReply *reply);
void saveOstcFirmware(QNetworkReply *reply); void saveOstcFirmware(QNetworkReply *reply);
private: private:
void upgradeFirmware(); void upgradeFirmware(const QString &filename);
device_data_t devData; device_data_t devData;
QString latestFirmwareAvailable; QString latestFirmwareAvailable;
QString latestFirmwareHexFile; QString latestFirmwareHexFile;

View file

@ -26,7 +26,8 @@ static bool is_vendor_searchable(QString vendor)
return vendor == "Uemis" || vendor == "Garmin"; 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), downloading(false),
previousLast(0), previousLast(0),
timer(new QTimer(this)), timer(new QTimer(this)),
@ -461,11 +462,10 @@ void DownloadFromDCWidget::checkLogFile(int state)
void DownloadFromDCWidget::pickLogFile() void DownloadFromDCWidget::pickLogFile()
{ {
QString filename = existing_filename ?: prefs.default_filename;
QFileInfo fi(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"), 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()) { if (!logFile.isEmpty()) {
free(logfile_name); free(logfile_name);
logfile_name = copy_qstring(logFile); logfile_name = copy_qstring(logFile);
@ -487,11 +487,10 @@ void DownloadFromDCWidget::checkDumpFile(int state)
void DownloadFromDCWidget::pickDumpFile() void DownloadFromDCWidget::pickDumpFile()
{ {
QString filename = existing_filename ?: prefs.default_filename;
QFileInfo fi(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"), 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()) { if (!dumpFile.isEmpty()) {
free(dumpfile_name); free(dumpfile_name);
dumpfile_name = copy_qstring(dumpFile); dumpfile_name = copy_qstring(dumpFile);
@ -547,7 +546,7 @@ void DownloadFromDCWidget::on_ok_clicked()
diveImportedModel->recordDives(flags); diveImportedModel->recordDives(flags);
if (ostcFirmwareCheck && currentState == DONE) if (ostcFirmwareCheck && currentState == DONE)
ostcFirmwareCheck->checkLatest(this, diveImportedModel->thread.data()->internalData()); ostcFirmwareCheck->checkLatest(this, diveImportedModel->thread.data()->internalData(), filename);
accept(); accept();
} }

View file

@ -25,7 +25,7 @@ class BTDiscovery;
class DownloadFromDCWidget : public QDialog { class DownloadFromDCWidget : public QDialog {
Q_OBJECT Q_OBJECT
public: public:
explicit DownloadFromDCWidget(QWidget *parent = 0); explicit DownloadFromDCWidget(const QString &filename, QWidget *parent = 0);
void reject(); void reject();
enum states { enum states {
@ -72,6 +72,7 @@ private:
QStringListModel vendorModel; QStringListModel vendorModel;
QStringListModel productModel; QStringListModel productModel;
Ui::DownloadFromDiveComputer ui; Ui::DownloadFromDiveComputer ui;
QString filename;
bool downloading; bool downloading;
int previousLast; int previousLast;

View file

@ -607,7 +607,8 @@ void MainWindow::on_actionQuit_triggered()
void MainWindow::on_actionDownloadDC_triggered() void MainWindow::on_actionDownloadDC_triggered()
{ {
DownloadFromDCWidget dlg(this); QString filename = existing_filename ?: prefs.default_filename;
DownloadFromDCWidget dlg(filename, this);
dlg.exec(); dlg.exec();
} }