diff --git a/src/assets/downloader/assetdownloader.cpp b/src/assets/downloader/assetdownloader.cpp index cb3493aa1d4..7c2f525a66d 100644 --- a/src/assets/downloader/assetdownloader.cpp +++ b/src/assets/downloader/assetdownloader.cpp @@ -48,6 +48,8 @@ public: QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation); QUrl m_offlineAssetsFilePath; QUrl m_downloadBase; + QStringList m_networkErrors; + QStringList m_sslErrors; void setLocalDownloadDir(const QDir &dir) { @@ -80,6 +82,16 @@ public: query, [this](qint64 bytesReceived, qint64 totalBytes) { updateProgress((totalBytes > 0) ? 100.0 * bytesReceived / totalBytes : 0, 100); }); + QObject::connect(reply, &QNetworkReply::errorOccurred, query, [this, reply] { + m_networkErrors << reply->errorString(); + }); +#if QT_CONFIG(ssl) + QObject::connect(reply, &QNetworkReply::sslErrors, + query, [this](const QList &sslErrors) { + for (const QSslError &sslError : sslErrors) + m_sslErrors << sslError.errorString(); + }); +#endif }); } }; @@ -262,6 +274,16 @@ QUrl AssetDownloader::localDownloadDir() const return QUrl::fromLocalFile(d->m_localDownloadDir.absolutePath()); } +QStringList AssetDownloader::networkErrors() const +{ + return d->m_networkErrors; +} + +QStringList AssetDownloader::sslErrors() const +{ + return d->m_sslErrors; +} + static void precheckLocalFile(const QUrl &url) { if (url.isEmpty()) @@ -385,6 +407,8 @@ void AssetDownloader::start() } storage->tempDir = d->m_temporaryDir->path(); d->setLocalDownloadDir(baseLocalDir(d->m_preferredLocalDownloadDir)); + d->m_networkErrors.clear(); + d->m_sslErrors.clear(); precheckLocalFile(resolvedUrl(d->m_offlineAssetsFilePath)); return SetupResult::Continue; }; diff --git a/src/assets/downloader/assetdownloader.h b/src/assets/downloader/assetdownloader.h index 8dfb853699e..3c9351ceafe 100644 --- a/src/assets/downloader/assetdownloader.h +++ b/src/assets/downloader/assetdownloader.h @@ -86,6 +86,9 @@ public: QUrl localDownloadDir() const; + Q_INVOKABLE QStringList networkErrors() const; + Q_INVOKABLE QStringList sslErrors() const; + public Q_SLOTS: void start();