summaryrefslogtreecommitdiff
path: root/src/pluginlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pluginlist.cpp')
-rw-r--r--src/pluginlist.cpp40
1 files changed, 31 insertions, 9 deletions
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index 2f70cd27..3f7830c4 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -41,6 +41,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <QTextCodec>
#include <QFileInfo>
#include <QListWidgetItem>
+#include <QRegularExpression>
#include <QString>
#include <QApplication>
#include <QKeyEvent>
@@ -174,6 +175,19 @@ 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) {
@@ -198,15 +212,23 @@ void PluginList::refresh(const QString &profileName
try {
FilesOrigin &origin = baseDirectory.getOriginByID(current->getOrigin(archive));
+ //name without extension
+ QString baseName = QFileInfo(filename).baseName();
- QString iniPath = QFileInfo(filename).baseName() + ".ini";
+ 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) {
- QString candidateName = ToQString(archiveCandidate->getName());
- if (candidateName.contains(QRegExp(QFileInfo(filename).baseName() + "*.bsa", Qt::CaseInsensitive, QRegExp::Wildcard)) ||
- candidateName.contains(QRegExp(QFileInfo(filename).baseName() + "*.ba2", Qt::CaseInsensitive, QRegExp::Wildcard))) {
+ candidateName = ToQString(archiveCandidate->getName());
+ if (candidateName.contains(bsaReg) || candidateName.contains(ba2Reg)) {
loadedArchives.insert(candidateName);
}
}
@@ -413,7 +435,7 @@ void PluginList::addInformation(const QString &name, const QString &message)
if (iter != m_ESPsByName.end()) {
m_AdditionalInfo[name.toLower()].m_Messages.append(message);
} else {
- qWarning("failed to associate message for \"%s\"", qPrintable(name));
+ qWarning("failed to associate message for \"%s\"", qUtf8Printable(name));
}
}
@@ -477,7 +499,7 @@ void PluginList::writeLockedOrder(const QString &fileName) const
file->write(QString("%1|%2\r\n").arg(iter->first).arg(iter->second).toUtf8());
}
file.commit();
- qDebug("%s saved", QDir::toNativeSeparators(fileName).toUtf8().constData());
+ qDebug("%s saved", qUtf8Printable(QDir::toNativeSeparators(fileName)));
}
@@ -502,7 +524,7 @@ void PluginList::saveTo(const QString &lockedOrderFileName
}
}
if (deleterFile.commitIfDifferent(m_LastSaveHash[deleterFileName])) {
- qDebug("%s saved", qPrintable(QDir::toNativeSeparators(deleterFileName)));
+ qDebug("%s saved", qUtf8Printable(QDir::toNativeSeparators(deleterFileName)));
}
} else if (QFile::exists(deleterFileName)) {
shellDelete(QStringList() << deleterFileName);
@@ -690,7 +712,7 @@ void PluginList::setState(const QString &name, PluginStates state) {
m_ESPs[iter->second].m_Enabled = (state == IPluginList::STATE_ACTIVE) ||
m_ESPs[iter->second].m_ForceEnabled;
} else {
- qWarning("plugin %s not found", qPrintable(name));
+ qWarning("plugin %s not found", qUtf8Printable(name));
}
}
@@ -1364,7 +1386,7 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled,
m_Masters.insert(QString(iter->c_str()));
}
} catch (const std::exception &e) {
- qCritical("failed to parse plugin file %s: %s", qPrintable(fullPath), e.what());
+ qCritical("failed to parse plugin file %s: %s", qUtf8Printable(fullPath), e.what());
m_IsMaster = false;
m_IsLight = false;
m_IsLightFlagged = false;