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);
}
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;

View file

@ -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;

View file

@ -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();
}

View file

@ -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;

View file

@ -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();
}