AssetDownloader: Make local qrc files readable in AssetDownloader

* Also warn using qrc resources for preferredLocalDownloadDir

Pick-to: 6.8
Change-Id: Id2b54bb1053483cf46f1ee1cbbc07250a2520f18
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
Ali Kianian 2024-06-19 15:27:32 +03:00
parent a962f45ade
commit 4f53be9264

View File

@ -153,7 +153,13 @@ static QDir baseLocalDir(const QDir &preferredLocalDir)
static QString pathFromUrl(const QUrl &url) 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<QUrl> filterDownloadableAssets(const QList<QUrl> &assetFiles, const QDir &expectedDir) static QList<QUrl> filterDownloadableAssets(const QList<QUrl> &assetFiles, const QDir &expectedDir)
@ -200,8 +206,10 @@ QUrl AssetDownloader::preferredLocalDownloadDir() const
void AssetDownloader::setPreferredLocalDownloadDir(const QUrl &localDir) void AssetDownloader::setPreferredLocalDownloadDir(const QUrl &localDir)
{ {
if (!localDir.isLocalFile()) if (localDir.scheme() == u"qrc") {
qWarning() << "preferredLocalDownloadDir Should be a local directory"; qWarning() << "Cannot set a qrc as preferredLocalDownloadDir";
return;
}
const QString path = pathFromUrl(localDir); const QString path = pathFromUrl(localDir);
if (d->m_preferredLocalDownloadDir != path) { if (d->m_preferredLocalDownloadDir != path) {