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;
 | 
						|
}
 | 
						|
 | 
						|
}
 | 
						|
 |