63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #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;
 | |
| }
 | |
| 
 | |
| }
 | |
| 
 |