From b0bcb24bad77a4f2d64c6a5c4053c082629d81e8 Mon Sep 17 00:00:00 2001 From: Ali Kianian Date: Wed, 19 Jun 2024 15:27:32 +0300 Subject: [PATCH] AssetDownloader: Make local qrc files readable in AssetDownloader * Also warn using qrc resources for preferredLocalDownloadDir Change-Id: Id2b54bb1053483cf46f1ee1cbbc07250a2520f18 Reviewed-by: Jarek Kobus (cherry picked from commit 4f53be92642c2c90dca28ca9b7795a0086e557b4) Reviewed-by: Qt Cherry-pick Bot --- src/assets/downloader/assetdownloader.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/assets/downloader/assetdownloader.cpp b/src/assets/downloader/assetdownloader.cpp index e59f2db5ed6..fb82dc29adb 100644 --- a/src/assets/downloader/assetdownloader.cpp +++ b/src/assets/downloader/assetdownloader.cpp @@ -153,7 +153,13 @@ static QDir baseLocalDir(const QDir &preferredLocalDir) static QString pathFromUrl(const QUrl &url) { - return url.isLocalFile() ? url.toLocalFile() : url.toString(); + if (url.isLocalFile()) + return url.toLocalFile(); + + if (url.scheme() == u"qrc") + return u":" + url.path(); + + return url.toString(); } static QList filterDownloadableAssets(const QList &assetFiles, const QDir &expectedDir) @@ -200,8 +206,10 @@ QUrl AssetDownloader::preferredLocalDownloadDir() const void AssetDownloader::setPreferredLocalDownloadDir(const QUrl &localDir) { - if (!localDir.isLocalFile()) - qWarning() << "preferredLocalDownloadDir Should be a local directory"; + if (localDir.scheme() == u"qrc") { + qWarning() << "Cannot set a qrc as preferredLocalDownloadDir"; + return; + } const QString path = pathFromUrl(localDir); if (d->m_preferredLocalDownloadDir != path) {