diff options
author | Petr Mrázek <peterix@gmail.com> | 2019-05-31 21:52:58 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2019-05-31 21:53:58 +0200 |
commit | 3470a3df966100d4f1ea6488892ac048118a3131 (patch) | |
tree | fc0f649f4bba0859f7f38d2b81876fd52a8266a2 /api/logic/icons/IconUtils.cpp | |
parent | 61913daaf3b21960de13340a6069bc3daca8744a (diff) | |
download | PrismLauncher-3470a3df966100d4f1ea6488892ac048118a3131.tar.gz PrismLauncher-3470a3df966100d4f1ea6488892ac048118a3131.tar.bz2 PrismLauncher-3470a3df966100d4f1ea6488892ac048118a3131.zip |
NOISSUE improve icon handling while importing and exporting instances
Now it handles formats other than png.
Diffstat (limited to 'api/logic/icons/IconUtils.cpp')
-rw-r--r-- | api/logic/icons/IconUtils.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/api/logic/icons/IconUtils.cpp b/api/logic/icons/IconUtils.cpp new file mode 100644 index 00000000..1b6d7553 --- /dev/null +++ b/api/logic/icons/IconUtils.cpp @@ -0,0 +1,62 @@ +#include "IconUtils.h" + +#include "FileSystem.h" +#include <QDirIterator> + +#include <array> + +namespace { +std::array<const char *, 6> validIconExtensions = { + "svg", + "png", + "ico", + "gif", + "jpg", + "jpeg" +}; +} + +namespace IconUtils{ + +QString findBestIconIn(const QString &folder, const QString & iconKey) { + int best_found = validIconExtensions.size(); + QString best_filename; + + QDirIterator it(folder, QDir::NoDotAndDotDot | QDir::Files, QDirIterator::NoIteratorFlags); + while (it.hasNext()) { + it.next(); + auto fileInfo = it.fileInfo(); + + if(fileInfo.completeBaseName() != iconKey) + continue; + + auto extension = fileInfo.suffix(); + + for(int i = 0; i < best_found; i++) { + if(extension == validIconExtensions[i]) { + best_found = i; + qDebug() << i << " : " << fileInfo.fileName(); + best_filename = fileInfo.fileName(); + } + } + } + return FS::PathCombine(folder, best_filename); +} + +QString getIconFilter() { + QString out; + QTextStream stream(&out); + stream << '('; + for(size_t i = 0; i < validIconExtensions.size() - 1; i++) { + if(i > 0) { + stream << " "; + } + stream << "*." << validIconExtensions[i]; + } + stream << " *." << validIconExtensions[validIconExtensions.size() - 1]; + stream << ')'; + return out; +} + +} + |