summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Rimpo <jrim@rimpo.org>2017-11-30 17:34:28 -0600
committerJeremy Rimpo <jrim@rimpo.org>2017-11-30 17:34:28 -0600
commit797a007eab2695c231a00240225d77b3a9928992 (patch)
tree850ead2730c8ab50babc865a505a513d8fba5f46 /src
parentd7bc542b3d1a96a546d48850e61d3ecdc953c4cc (diff)
Add unmanaged mods and fix plugin identification
Diffstat (limited to 'src')
-rw-r--r--src/modinfoforeign.cpp6
-rw-r--r--src/pluginlist.cpp9
2 files changed, 13 insertions, 2 deletions
diff --git a/src/modinfoforeign.cpp b/src/modinfoforeign.cpp
index 4ba16bb1..6ad8b6d8 100644
--- a/src/modinfoforeign.cpp
+++ b/src/modinfoforeign.cpp
@@ -30,12 +30,16 @@ std::vector<ModInfo::EFlag> ModInfoForeign::getFlags() const
std::vector<ModInfo::EFlag> result = ModInfoWithConflictInfo::getFlags();
result.push_back(FLAG_FOREIGN);
+ if (m_PluginSelected) {
+ result.push_back(ModInfo::FLAG_PLUGIN_SELECTED);
+ }
+
return result;
}
int ModInfoForeign::getHighlight() const
{
- return 0;
+ return m_PluginSelected ? ModInfo::HIGHLIGHT_PLUGIN : ModInfo::HIGHLIGHT_NONE;
}
QString ModInfoForeign::getDescription() const
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index a215b9d3..add34b3f 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -118,8 +118,15 @@ void PluginList::highlightPlugins(const QItemSelection &selected, const MOShared
if (!selectedMod.isNull()) {
QDir dir(selectedMod->absolutePath());
QStringList plugins = dir.entryList(QStringList() << "*.esp" << "*.esm" << "*.esl");
+ MOShared::FilesOrigin origin = directoryEntry.getOriginByName(selectedMod->internalName().toStdWString());
if (plugins.size() > 0) {
- for (auto plugin : plugins) {
+ for (auto plugin : plugins) {
+ MOShared::FileEntry::Ptr file = directoryEntry.findFile(plugin.toStdWString());
+ if (file->getOrigin() != origin.getID()) {
+ const std::vector<int> alternatives = file->getAlternatives();
+ if (std::find(alternatives.begin(), alternatives.end(), origin.getID()) == alternatives.end())
+ continue;
+ }
std::map<QString, int>::iterator iter = m_ESPsByName.find(plugin.toLower());
if (iter != m_ESPsByName.end()) {
m_ESPs[iter->second].m_ModSelected = true;