fix: icon import with dot in name

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2025-06-28 23:34:13 +03:00
parent 497cea0bd5
commit 53dcc15766
No known key found for this signature in database
GPG key ID: 55EF5DA53DB36318
2 changed files with 9 additions and 8 deletions

View file

@ -263,9 +263,9 @@ void InstanceImportTask::extractFinished()
} }
} }
bool installIcon(QString root, QString instIcon) bool installIcon(QString root, QString instIconKey)
{ {
auto importIconPath = IconUtils::findBestIconIn(root, instIcon); auto importIconPath = IconUtils::findBestIconIn(root, instIconKey);
if (importIconPath.isNull() || !QFile::exists(importIconPath)) if (importIconPath.isNull() || !QFile::exists(importIconPath))
importIconPath = IconUtils::findBestIconIn(root, "icon.png"); importIconPath = IconUtils::findBestIconIn(root, "icon.png");
if (importIconPath.isNull() || !QFile::exists(importIconPath)) if (importIconPath.isNull() || !QFile::exists(importIconPath))
@ -273,10 +273,10 @@ bool installIcon(QString root, QString instIcon)
if (!importIconPath.isNull() && QFile::exists(importIconPath)) { if (!importIconPath.isNull() && QFile::exists(importIconPath)) {
// import icon // import icon
auto iconList = APPLICATION->icons(); auto iconList = APPLICATION->icons();
if (iconList->iconFileExists(instIcon)) { if (iconList->iconFileExists(instIconKey)) {
iconList->deleteIcon(instIcon); iconList->deleteIcon(instIconKey);
} }
iconList->installIcon(importIconPath, instIcon); iconList->installIcon(importIconPath, instIconKey + ".png");
return true; return true;
} }
return false; return false;

View file

@ -55,7 +55,7 @@ IconList::IconList(const QStringList& builtinPaths, const QString& path, QObject
QDir instanceIcons(builtinPath); QDir instanceIcons(builtinPath);
auto fileInfoList = instanceIcons.entryInfoList(QDir::Files, QDir::Name); auto fileInfoList = instanceIcons.entryInfoList(QDir::Files, QDir::Name);
for (const auto& fileInfo : fileInfoList) { for (const auto& fileInfo : fileInfoList) {
builtinNames.insert(fileInfo.baseName()); builtinNames.insert(fileInfo.completeBaseName());
} }
} }
for (const auto& builtinName : builtinNames) { for (const auto& builtinName : builtinNames) {
@ -127,10 +127,11 @@ QStringList IconList::getIconFilePaths() const
QString formatName(const QDir& iconsDir, const QFileInfo& iconFile) QString formatName(const QDir& iconsDir, const QFileInfo& iconFile)
{ {
if (iconFile.dir() == iconsDir) if (iconFile.dir() == iconsDir)
return iconFile.baseName(); return iconFile.completeBaseName();
constexpr auto delimiter = " » "; constexpr auto delimiter = " » ";
QString relativePathWithoutExtension = iconsDir.relativeFilePath(iconFile.dir().path()) + QDir::separator() + iconFile.baseName(); QString relativePathWithoutExtension =
iconsDir.relativeFilePath(iconFile.dir().path()) + QDir::separator() + iconFile.completeBaseName();
return relativePathWithoutExtension.replace(QDir::separator(), delimiter); return relativePathWithoutExtension.replace(QDir::separator(), delimiter);
} }