diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2016-06-18 00:28:43 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2016-06-18 00:28:43 +0200 |
| commit | ed34963870de3c40faa3aad1da1d6dc56cabc093 (patch) | |
| tree | 0f415cbc940085707a82e32eec22ee35fd3fd013 | |
| parent | 5b83caec50d86f976b31579b1051caa5f5a33c9a (diff) | |
| download | manager-ed34963870de3c40faa3aad1da1d6dc56cabc093.tar.gz manager-ed34963870de3c40faa3aad1da1d6dc56cabc093.zip | |
Fix case insensitivity in normal folders and make list case insensitive
| -rw-r--r-- | src/crsm.cpp | 53 | ||||
| -rw-r--r-- | src/crsm.hpp | 1 |
2 files changed, 40 insertions, 14 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp index 8f0b13e..e89357d 100644 --- a/src/crsm.cpp +++ b/src/crsm.cpp @@ -837,6 +837,19 @@ void CRSM::cleanUp() out("\n"); } +QString CRSM::caseInsensitive(QString name, QString dir) +{ + const QStringList& entryList = QDir(Config.Auto.Volatile.Clonk.Directory + dir + QDir::separator()).entryList(); + foreach(const QString& entry, entryList) + { + if(entry.compare(name, Qt::CaseInsensitive) == 0) + { + return entry; + } + } + return QString(); +} + QString CRSM::scenPath(QString scenName) { bool isAlias = false; @@ -874,18 +887,29 @@ QString CRSM::scenPath(QString scenName) QString name = scenName.mid(split.first().length() + 1); if(split.length() >= 2) { - if(split.first().endsWith(".c4f")) + QString folderName = caseInsensitive(split.first()); + if(!folderName.isEmpty()) { - const QStringList& entryList = QDir(Config.Auto.Volatile.Clonk.Directory).entryList(QStringList() << "*.c4f"); - QString folderName = split.first(); - foreach(const QString& entry, entryList) - { - if(entry.compare(folderName, Qt::CaseInsensitive) == 0) - { - folderName = entry; - break; - } - } +// QDir dir(Config.Auto.Volatile.Clonk.Directory + folderName); +// if(dir.exists()) +// { +// QString file = caseInsensitive(name, folderName); +// if(!file.isEmpty()) +// { +// if(isAlias) +// { +// return aliasName; +// } +// else +// { +// return folderName + '/' + file; +// } +// } +// else +// { +// return QString(); +// } +// } QFile lstFile(Config.CRSM.ListFolder + folderName + ".lst"); if(lstFile.exists()) { @@ -944,10 +968,11 @@ QString CRSM::listScenarios(QString commandArgs) } else { - QFile file(Config.CRSM.ListFolder + commandArgs + ".lst"); - if(file.exists() && !Config.Clonk.Server.IgnoreFolders.contains(QFileInfo(file).completeBaseName())) + QString folder = caseInsensitive(commandArgs); + QFile file(Config.CRSM.ListFolder + folder + ".lst"); + if(!folder.isEmpty() && file.exists() && !Config.Clonk.Server.IgnoreFolders.contains(QFileInfo(file).completeBaseName())) { - ret += "Der Ordner \"" + commandArgs + QString("\" enthält folgende Szenarien:\n"); + ret += "Der Ordner \"" + folder + QString("\" enthält folgende Szenarien:\n"); file.open(QFile::ReadOnly); while(!file.atEnd()) ret += " " + QString::fromUtf8(file.readLine()).trimmed() + "\n"; diff --git a/src/crsm.hpp b/src/crsm.hpp index 6cc03ff..f957054 100644 --- a/src/crsm.hpp +++ b/src/crsm.hpp @@ -250,6 +250,7 @@ private: void readScenarios(); void listC4Folders(); void cleanUp(); + QString caseInsensitive(QString name, QString dir = ""); QString scenPath(QString scenName); QString listScenarios(QString commandArgs); QString printQueue(); |
