Improved performance of pluginlist refresh by removing regex

This commit is contained in:
Al
2019-01-22 13:25:31 +01:00
parent fe04cb47e1
commit 11b2e0fe34
2 changed files with 5 additions and 22 deletions
+2 -1
View File
@@ -631,7 +631,8 @@ QStringList ModInfoRegular::archives() const
{
QStringList result;
QDir dir(this->absolutePath());
for (const QString &archive : dir.entryList(QStringList({ "*.bsa", "*.ba2" }))) {
QStringList bsaList = dir.entryList(QStringList({ "*.bsa", "*.ba2" }));
for (const QString &archive : bsaList) {
result.append(this->absolutePath() + "/" + archive);
}
return result;
+3 -21
View File
@@ -175,19 +175,6 @@ void PluginList::refresh(const QString &profileName
QStringList availablePlugins;
QRegExp bsaReg = QRegExp();
QRegExp ba2Reg = QRegExp();
bsaReg.setPatternSyntax(QRegExp::Wildcard);
bsaReg.setCaseSensitivity(Qt::CaseInsensitive);
ba2Reg.setPatternSyntax(QRegExp::Wildcard);
ba2Reg.setCaseSensitivity(Qt::CaseInsensitive);
//TODO: try QRegularExpression when we move to Qt5.12
/*QRegularExpression bsaReg = QRegularExpression();
QRegularExpression ba2Reg = QRegularExpression();
bsaReg.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
ba2Reg.setPatternOptions(QRegularExpression::CaseInsensitiveOption);*/
std::vector<FileEntry::Ptr> files = baseDirectory.getFiles();
for (FileEntry::Ptr current : files) {
if (current.get() == nullptr) {
@@ -217,18 +204,13 @@ void PluginList::refresh(const QString &profileName
QString iniPath = baseName + ".ini";
bool hasIni = baseDirectory.findFile(ToWString(iniPath)).get() != nullptr;
bsaReg.setPattern(baseName + "*.bsa");
ba2Reg.setPattern(baseName + "*.ba2");
//bsaReg.setPattern(QRegularExpression::wildcardToRegularExpression(baseName + "*.bsa"));
//ba2Reg.setPattern(QRegularExpression::wildcardToRegularExpression(baseName + "*.ba2"));
std::set<QString> loadedArchives;
QString candidateName;
for (FileEntry::Ptr archiveCandidate : files) {
candidateName = ToQString(archiveCandidate->getName());
if (candidateName.contains(bsaReg) || candidateName.contains(ba2Reg)) {
if (candidateName.startsWith(baseName, Qt::CaseInsensitive) &&
(candidateName.endsWith(".bsa", Qt::CaseInsensitive) ||
candidateName.endsWith(".ba2", Qt::CaseInsensitive))) {
loadedArchives.insert(candidateName);
}
}