QmlDesigner: Use complete suffix instead of suffix for download check

This amends patch '5fa1be7dc21721d0667fc1b6dd13f1e1c79a5f0a' using complete suffix instead of doing multiple QFileInfo::exists() checks.

Task-number: QDS-15366
Change-Id: Ib377dcb44cbb31a3f54237c1f572d02bd4fd9b29
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Shrief Gabr
2025-05-26 15:27:33 +03:00
parent 28563c52bf
commit 6dc9415534
3 changed files with 14 additions and 18 deletions

View File

@@ -12,7 +12,7 @@
namespace QmlDesigner { namespace QmlDesigner {
ContentLibraryTexture::ContentLibraryTexture(QObject *parent, const QFileInfo &iconFileInfo, ContentLibraryTexture::ContentLibraryTexture(QObject *parent, const QFileInfo &iconFileInfo,
const QString &dirPath, const QString &suffix, const QString &dirPath, const QString &completeSuffix,
const QSize &dimensions, const qint64 sizeInBytes, const QSize &dimensions, const qint64 sizeInBytes,
const QString &key, const QString &textureUrl, const QString &key, const QString &textureUrl,
const QString &iconUrl, bool hasUpdate, bool isNew) const QString &iconUrl, bool hasUpdate, bool isNew)
@@ -22,7 +22,7 @@ ContentLibraryTexture::ContentLibraryTexture(QObject *parent, const QFileInfo &i
, m_textureUrl(textureUrl) , m_textureUrl(textureUrl)
, m_iconUrl(iconUrl) , m_iconUrl(iconUrl)
, m_baseName{iconFileInfo.baseName()} , m_baseName{iconFileInfo.baseName()}
, m_suffix(suffix) , m_completeSuffix(completeSuffix)
, m_textureKey(key) , m_textureKey(key)
, m_icon(QUrl::fromLocalFile(iconFileInfo.absoluteFilePath())) , m_icon(QUrl::fromLocalFile(iconFileInfo.absoluteFilePath()))
, m_dimensions(dimensions) , m_dimensions(dimensions)
@@ -53,7 +53,7 @@ QString ContentLibraryTexture::iconPath() const
return m_iconPath; return m_iconPath;
} }
QString ContentLibraryTexture::resolveSuffix() QString ContentLibraryTexture::resolveCompleteSuffix()
{ {
const QFileInfoList files = QDir(m_dirPath).entryInfoList(QDir::Files); const QFileInfoList files = QDir(m_dirPath).entryInfoList(QDir::Files);
const QFileInfoList textureFiles = Utils::filtered(files, [this](const QFileInfo &fi) { const QFileInfoList textureFiles = Utils::filtered(files, [this](const QFileInfo &fi) {
@@ -73,7 +73,7 @@ QString ContentLibraryTexture::resolveSuffix()
QString ContentLibraryTexture::resolveToolTipText() QString ContentLibraryTexture::resolveToolTipText()
{ {
if (m_suffix.isEmpty()) if (m_completeSuffix.isEmpty())
return m_baseName; // empty suffix means we have just the icon and no other data return m_baseName; // empty suffix means we have just the icon and no other data
QString texFileName = fileName(); QString texFileName = fileName();
@@ -111,14 +111,10 @@ void ContentLibraryTexture::setDownloaded()
void ContentLibraryTexture::doSetDownloaded() void ContentLibraryTexture::doSetDownloaded()
{ {
if (m_suffix.isEmpty() || !QFileInfo::exists(texturePath())) { if (m_completeSuffix.isEmpty())
m_suffix = resolveSuffix(); m_completeSuffix = resolveCompleteSuffix();
// recheck existence as texturePath() might have been reevaluated
m_isDownloaded = QFileInfo::exists(texturePath()); m_isDownloaded = QFileInfo::exists(texturePath());
} else {
m_isDownloaded = true;
}
m_toolTip = resolveToolTipText(); m_toolTip = resolveToolTipText();
} }
@@ -140,7 +136,7 @@ QString ContentLibraryTexture::textureKey() const
QString ContentLibraryTexture::fileName() const QString ContentLibraryTexture::fileName() const
{ {
return m_baseName + m_suffix; return m_baseName + m_completeSuffix;
} }
void ContentLibraryTexture::setHasUpdate(bool value) void ContentLibraryTexture::setHasUpdate(bool value)

View File

@@ -28,7 +28,7 @@ class ContentLibraryTexture : public QObject
public: public:
ContentLibraryTexture(QObject *parent, const QFileInfo &iconFileInfo, const QString &dirPath, ContentLibraryTexture(QObject *parent, const QFileInfo &iconFileInfo, const QString &dirPath,
const QString &suffix, const QSize &dimensions, const qint64 sizeInBytes, const QString &completeSuffix, const QSize &dimensions, const qint64 sizeInBytes,
const QString &key = {}, const QString &textureUrl = {}, const QString &key = {}, const QString &textureUrl = {},
const QString &iconUrl = {}, bool hasUpdate = false, bool isNew = false); const QString &iconUrl = {}, bool hasUpdate = false, bool isNew = false);
@@ -55,7 +55,7 @@ signals:
void hasUpdateChanged(); void hasUpdateChanged();
private: private:
QString resolveSuffix(); QString resolveCompleteSuffix();
QString resolveToolTipText(); QString resolveToolTipText();
void doSetDownloaded(); void doSetDownloaded();
@@ -65,7 +65,7 @@ private:
QString m_iconUrl; QString m_iconUrl;
QString m_toolTip; QString m_toolTip;
QString m_baseName; QString m_baseName;
QString m_suffix; QString m_completeSuffix;
QString m_textureKey; QString m_textureKey;
QUrl m_icon; QUrl m_icon;
QSize m_dimensions; QSize m_dimensions;

View File

@@ -49,7 +49,7 @@ void UserTextureCategory::filter(const QString &searchText)
void UserTextureCategory::addItems(const Utils::FilePaths &paths) void UserTextureCategory::addItems(const Utils::FilePaths &paths)
{ {
for (const Utils::FilePath &filePath : paths) { for (const Utils::FilePath &filePath : paths) {
QString suffix = '.' + filePath.suffix(); QString completeSuffix = "." + filePath.completeSuffix();
QFileInfo iconFileInfo = filePath.parentDir().pathAppended("icons/" + filePath.baseName() + ".png") QFileInfo iconFileInfo = filePath.parentDir().pathAppended("icons/" + filePath.baseName() + ".png")
.toFileInfo(); .toFileInfo();
@@ -60,7 +60,7 @@ void UserTextureCategory::addItems(const Utils::FilePaths &paths)
qint64 imgFileSize = info.second; qint64 imgFileSize = info.second;
if (!iconFileInfo.exists()) { // generate an icon if one doesn't exist if (!iconFileInfo.exists()) { // generate an icon if one doesn't exist
if (suffix == ".ktx") { if (completeSuffix.endsWith(".ktx")) {
QFile::copy(":/contentlibrary/images/texture_ktx.png", iconFileInfo.absoluteFilePath()); QFile::copy(":/contentlibrary/images/texture_ktx.png", iconFileInfo.absoluteFilePath());
} else { } else {
Asset asset{filePath.toFSPathString()}; Asset asset{filePath.toFSPathString()};
@@ -71,7 +71,7 @@ void UserTextureCategory::addItems(const Utils::FilePaths &paths)
} }
} }
auto tex = new ContentLibraryTexture(this, iconFileInfo, dirPath, suffix, imgDims, imgFileSize); auto tex = new ContentLibraryTexture(this, iconFileInfo, dirPath, completeSuffix, imgDims, imgFileSize);
m_items.append(tex); m_items.append(tex);
} }