diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.cpp b/plugins/channelrx/demodadsb/adsbdemodgui.cpp index 596adaedd..3f5f19f51 100644 --- a/plugins/channelrx/demodadsb/adsbdemodgui.cpp +++ b/plugins/channelrx/demodadsb/adsbdemodgui.cpp @@ -1625,7 +1625,6 @@ void ADSBDemodGUI::on_getOSNDB_clicked() // Download Opensky network database to a file QUrl dbURL(QString(OSNDB_URL)); m_progressDialog = new QProgressDialog(this); - m_progressDialog->setAttribute(Qt::WA_DeleteOnClose); m_progressDialog->setCancelButton(nullptr); m_progressDialog->setLabelText(QString("Downloading %1.").arg(OSNDB_URL)); QNetworkReply *reply = m_dlm.download(dbURL, osnDBFilename); @@ -1645,7 +1644,6 @@ void ADSBDemodGUI::on_getAirportDB_clicked() // Download Opensky network database to a file QUrl dbURL(QString(AIRPORTS_URL)); m_progressDialog = new QProgressDialog(this); - m_progressDialog->setAttribute(Qt::WA_DeleteOnClose); m_progressDialog->setCancelButton(nullptr); m_progressDialog->setLabelText(QString("Downloading %1.").arg(AIRPORTS_URL)); QNetworkReply *reply = m_dlm.download(dbURL, airportDBFile); @@ -1740,12 +1738,16 @@ bool ADSBDemodGUI::readFastDB(const QString& filename) void ADSBDemodGUI::updateDownloadProgress(qint64 bytesRead, qint64 totalBytes) { - m_progressDialog->setMaximum(totalBytes); - m_progressDialog->setValue(bytesRead); + if (m_progressDialog) + { + m_progressDialog->setMaximum(totalBytes); + m_progressDialog->setValue(bytesRead); + } } void ADSBDemodGUI::downloadFinished(const QString& filename, bool success) { + bool closeDialog = true; if (success) { if (filename == getOSNDBFilename()) @@ -1754,8 +1756,6 @@ void ADSBDemodGUI::downloadFinished(const QString& filename, bool success) // Convert to condensed format for faster loading later m_progressDialog->setLabelText("Processing."); AircraftInformation::writeFastDB(getFastDBFilename(), m_aircraftInfo); - m_progressDialog->close(); - m_progressDialog = nullptr; } else if (filename == getAirportDBFilename()) { @@ -1765,6 +1765,7 @@ void ADSBDemodGUI::downloadFinished(const QString& filename, bool success) m_progressDialog->setLabelText(QString("Downloading %1.").arg(AIRPORT_FREQUENCIES_URL)); QNetworkReply *reply = m_dlm.download(dbURL, getAirportFrequenciesDBFilename()); connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(updateDownloadProgress(qint64,qint64))); + closeDialog = false; } else if (filename == getAirportFrequenciesDBFilename()) { @@ -1774,19 +1775,16 @@ void ADSBDemodGUI::downloadFinished(const QString& filename, bool success) // Update airports on map updateAirports(); } - m_progressDialog->close(); - m_progressDialog = nullptr; } else { qDebug() << "ADSBDemodGUI::downloadFinished: Unexpected filename: " << filename; - m_progressDialog->close(); - m_progressDialog = nullptr; } } - else + if (closeDialog && m_progressDialog) { m_progressDialog->close(); + delete m_progressDialog; m_progressDialog = nullptr; } } diff --git a/plugins/channelrx/demodvor/vordemodgui.cpp b/plugins/channelrx/demodvor/vordemodgui.cpp index c512b82d3..5e216d5cc 100644 --- a/plugins/channelrx/demodvor/vordemodgui.cpp +++ b/plugins/channelrx/demodvor/vordemodgui.cpp @@ -980,12 +980,16 @@ QString VORDemodGUI::getVORDBFilename() void VORDemodGUI::updateDownloadProgress(qint64 bytesRead, qint64 totalBytes) { - m_progressDialog->setMaximum(totalBytes); - m_progressDialog->setValue(bytesRead); + if (m_progressDialog) + { + m_progressDialog->setMaximum(totalBytes); + m_progressDialog->setValue(bytesRead); + } } void VORDemodGUI::downloadFinished(const QString& filename, bool success) { + bool closeDialog = true; if (success) { if (filename == getVORDBFilename()) @@ -993,8 +997,6 @@ void VORDemodGUI::downloadFinished(const QString& filename, bool success) m_vors = NavAid::readNavAidsDB(filename); if (m_vors != nullptr) updateVORs(); - m_progressDialog->close(); - m_progressDialog = nullptr; } else if (filename == getOpenAIPVORDBFilename(m_countryIndex)) { @@ -1007,30 +1009,31 @@ void VORDemodGUI::downloadFinished(const QString& filename, bool success) m_progressDialog->setLabelText(QString("Downloading %1.").arg(urlString)); m_progressDialog->setValue(m_countryIndex); m_dlm.download(dbURL, vorDBFile); + closeDialog = false; } else { readNavAids(); if (m_vors != nullptr) updateVORs(); - m_progressDialog->close(); - m_progressDialog = nullptr; } } else { qDebug() << "VORDemodGUI::downloadFinished: Unexpected filename: " << filename; - m_progressDialog->close(); - m_progressDialog = nullptr; } } else { qDebug() << "VORDemodGUI::downloadFinished: Failed: " << filename; - m_progressDialog->close(); - m_progressDialog = nullptr; QMessageBox::warning(this, "Download failed", QString("Failed to download %1").arg(filename)); } + if (closeDialog && m_progressDialog) + { + m_progressDialog->close(); + delete m_progressDialog; + m_progressDialog = nullptr; + } } void VORDemodGUI::on_getOurAirportsVORDB_clicked(bool checked) @@ -1046,7 +1049,6 @@ void VORDemodGUI::on_getOurAirportsVORDB_clicked(bool checked) // Download OurAirports navaid database to disk QUrl dbURL(QString(OURAIRPORTS_NAVAIDS_URL)); m_progressDialog = new QProgressDialog(this); - m_progressDialog->setAttribute(Qt::WA_DeleteOnClose); m_progressDialog->setCancelButton(nullptr); m_progressDialog->setMinimumDuration(500); m_progressDialog->setLabelText(QString("Downloading %1.").arg(OURAIRPORTS_NAVAIDS_URL)); @@ -1071,7 +1073,6 @@ void VORDemodGUI::on_getOpenAIPVORDB_clicked(bool checked) QString urlString = getOpenAIPVORDBURL(m_countryIndex); QUrl dbURL(urlString); m_progressDialog = new QProgressDialog(this); - m_progressDialog->setAttribute(Qt::WA_DeleteOnClose); m_progressDialog->setCancelButton(nullptr); m_progressDialog->setMinimumDuration(500); m_progressDialog->setMaximum(sizeof(countryCodes)/sizeof(countryCodes[0])); diff --git a/plugins/feature/map/mapbeacondialog.cpp b/plugins/feature/map/mapbeacondialog.cpp index dce8a3337..bfe3e5a86 100644 --- a/plugins/feature/map/mapbeacondialog.cpp +++ b/plugins/feature/map/mapbeacondialog.cpp @@ -113,8 +113,11 @@ bool MapBeaconDialog::confirmDownload(QString filename) void MapBeaconDialog::updateDownloadProgress(qint64 bytesRead, qint64 totalBytes) { - m_progressDialog->setMaximum(totalBytes); - m_progressDialog->setValue(bytesRead); + if (m_progressDialog) + { + m_progressDialog->setMaximum(totalBytes); + m_progressDialog->setValue(bytesRead); + } } void MapBeaconDialog::accept() @@ -132,7 +135,6 @@ void MapBeaconDialog::on_downloadIARU_clicked() // Download IARU beacons database to disk QUrl dbURL(QString(IARU_BEACONS_URL)); m_progressDialog = new QProgressDialog(this); - m_progressDialog->setAttribute(Qt::WA_DeleteOnClose); m_progressDialog->setCancelButton(nullptr); m_progressDialog->setMinimumDuration(500); m_progressDialog->setLabelText(QString("Downloading %1.").arg(IARU_BEACONS_URL)); @@ -151,23 +153,23 @@ void MapBeaconDialog::downloadFinished(const QString& filename, bool success) QList *beacons = Beacon::readIARUCSV(filename); if (beacons != nullptr) m_gui->setBeacons(beacons); - m_progressDialog->close(); - m_progressDialog = nullptr; } else { qDebug() << "MapBeaconDialog::downloadFinished: Unexpected filename: " << filename; - m_progressDialog->close(); - m_progressDialog = nullptr; } } else { qDebug() << "MapBeaconDialog::downloadFinished: Failed: " << filename; - m_progressDialog->close(); - m_progressDialog = nullptr; QMessageBox::warning(this, "Download failed", QString("Failed to download %1").arg(filename)); } + if (m_progressDialog) + { + m_progressDialog->close(); + delete m_progressDialog; + m_progressDialog = nullptr; + } } void MapBeaconDialog::on_beacons_cellDoubleClicked(int row, int column) diff --git a/plugins/feature/vorlocalizer/vorlocalizergui.cpp b/plugins/feature/vorlocalizer/vorlocalizergui.cpp index afe9792b4..2fad65da8 100644 --- a/plugins/feature/vorlocalizer/vorlocalizergui.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizergui.cpp @@ -1013,12 +1013,16 @@ QString VORLocalizerGUI::getVORDBFilename() void VORLocalizerGUI::updateDownloadProgress(qint64 bytesRead, qint64 totalBytes) { - m_progressDialog->setMaximum(totalBytes); - m_progressDialog->setValue(bytesRead); + if (m_progressDialog) + { + m_progressDialog->setMaximum(totalBytes); + m_progressDialog->setValue(bytesRead); + } } void VORLocalizerGUI::downloadFinished(const QString& filename, bool success) { + bool closeDialog = true; if (success) { if (filename == getVORDBFilename()) @@ -1028,9 +1032,6 @@ void VORLocalizerGUI::downloadFinished(const QString& filename, bool success) if (m_vors != nullptr) { updateVORs(); } - - m_progressDialog->close(); - m_progressDialog = nullptr; } else if (filename == getOpenAIPVORDBFilename(m_countryIndex)) { @@ -1044,6 +1045,7 @@ void VORLocalizerGUI::downloadFinished(const QString& filename, bool success) m_progressDialog->setLabelText(QString("Downloading %1.").arg(urlString)); m_progressDialog->setValue(m_countryIndex); m_dlm.download(dbURL, vorDBFile); + closeDialog = false; } else { @@ -1052,25 +1054,24 @@ void VORLocalizerGUI::downloadFinished(const QString& filename, bool success) if (m_vors) { updateVORs(); } - - m_progressDialog->close(); - m_progressDialog = nullptr; } } else { qDebug() << "VORLocalizerGUI::downloadFinished: Unexpected filename: " << filename; - m_progressDialog->close(); - m_progressDialog = nullptr; } } else { qDebug() << "VORLocalizerGUI::downloadFinished: Failed: " << filename; - m_progressDialog->close(); - m_progressDialog = nullptr; QMessageBox::warning(this, "Download failed", QString("Failed to download %1").arg(filename)); } + if (closeDialog && m_progressDialog) + { + m_progressDialog->close(); + delete m_progressDialog; + m_progressDialog = nullptr; + } } void VORLocalizerGUI::on_startStop_toggled(bool checked) @@ -1094,7 +1095,6 @@ void VORLocalizerGUI::on_getOurAirportsVORDB_clicked() // Download OurAirports navaid database to disk QUrl dbURL(QString(OURAIRPORTS_NAVAIDS_URL)); m_progressDialog = new QProgressDialog(this); - m_progressDialog->setAttribute(Qt::WA_DeleteOnClose); m_progressDialog->setCancelButton(nullptr); m_progressDialog->setMinimumDuration(500); m_progressDialog->setLabelText(QString("Downloading %1.").arg(OURAIRPORTS_NAVAIDS_URL)); @@ -1118,7 +1118,6 @@ void VORLocalizerGUI::on_getOpenAIPVORDB_clicked() QString urlString = getOpenAIPVORDBURL(m_countryIndex); QUrl dbURL(urlString); m_progressDialog = new QProgressDialog(this); - m_progressDialog->setAttribute(Qt::WA_DeleteOnClose); m_progressDialog->setCancelButton(nullptr); m_progressDialog->setMinimumDuration(500); m_progressDialog->setMaximum(sizeof(countryCodes)/sizeof(countryCodes[0])); diff --git a/sdrgui/gui/httpdownloadmanagergui.cpp b/sdrgui/gui/httpdownloadmanagergui.cpp index 0956d3404..168b0778a 100644 --- a/sdrgui/gui/httpdownloadmanagergui.cpp +++ b/sdrgui/gui/httpdownloadmanagergui.cpp @@ -32,14 +32,16 @@ QNetworkReply *HttpDownloadManagerGUI::download(const QUrl &url, const QString & if (parent != nullptr) { QProgressDialog *progressDialog = new QProgressDialog(parent); - progressDialog->setAttribute(Qt::WA_DeleteOnClose); progressDialog->setCancelButton(nullptr); progressDialog->setMinimumDuration(500); progressDialog->setLabelText(QString("Downloading %1.").arg(url.toString())); m_progressDialogs.append(progressDialog); connect(reply, &QNetworkReply::downloadProgress, this, [progressDialog](qint64 bytesRead, qint64 totalBytes) { - progressDialog->setMaximum(totalBytes); - progressDialog->setValue(bytesRead); + if (progressDialog) + { + progressDialog->setMaximum(totalBytes); + progressDialog->setValue(bytesRead); + } }); } else @@ -75,7 +77,10 @@ void HttpDownloadManagerGUI::downloadCompleteGUI(const QString& filename, bool s { QProgressDialog *progressDialog = m_progressDialogs[idx]; if (progressDialog != nullptr) + { progressDialog->close(); + delete progressDialog; + } m_filenames.remove(idx); m_progressDialogs.remove(idx); }