diff options
| author | Silarn <jrim@rimpo.org> | 2018-04-08 14:56:46 -0500 |
|---|---|---|
| committer | Silarn <jrim@rimpo.org> | 2018-04-08 14:56:46 -0500 |
| commit | 208eaccbf7f1fc0441861d55c68c4b66e5c7d387 (patch) | |
| tree | 3724ce893df14c2c8643417a3ea86c627d4465c0 /src | |
| parent | 0f8852f487cb1f8b993141042da4196db965e038 (diff) | |
Updates to allow a full plugin data refresh in certain circumstances
Diffstat (limited to 'src')
| -rw-r--r-- | src/mainwindow.cpp | 5 | ||||
| -rw-r--r-- | src/organizercore.cpp | 16 | ||||
| -rw-r--r-- | src/organizercore.h | 2 | ||||
| -rw-r--r-- | src/pluginlist.cpp | 9 | ||||
| -rw-r--r-- | src/pluginlist.h | 3 |
5 files changed, 21 insertions, 14 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 48a09718..85e96993 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1980,7 +1980,6 @@ void MainWindow::directory_refreshed() refreshDataTree();
updateProblemsButton();
statusBar()->hide();
- m_OrganizerCore.refreshESPList();
}
void MainWindow::modorder_changed()
@@ -4811,7 +4810,7 @@ void MainWindow::on_bossButton_clicked() }
m_IntegratedBrowser.openUrl(url);
}
- m_OrganizerCore.refreshESPList();
+ m_OrganizerCore.refreshESPList(false);
m_OrganizerCore.savePluginList();
}
}
@@ -4888,7 +4887,7 @@ void MainWindow::on_restoreButton_clicked() QMessageBox::critical(this, tr("Restore failed"),
tr("Failed to restore the backup. Errorcode: %1").arg(windowsErrorString(::GetLastError())));
}
- m_OrganizerCore.refreshESPList();
+ m_OrganizerCore.refreshESPList(true);
}
}
diff --git a/src/organizercore.cpp b/src/organizercore.cpp index 0398e9ac..895b3b9c 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -1107,7 +1107,7 @@ void OrganizerCore::spawnBinary(const QFileInfo &binary, const QString &argument }
refreshDirectoryStructure();
- refreshESPList();
+ refreshESPList(true);
savePluginList();
//These callbacks should not fiddle with directoy structure and ESPs.
@@ -1559,13 +1559,13 @@ void OrganizerCore::refreshModList(bool saveChanges) refreshDirectoryStructure();
}
-void OrganizerCore::refreshESPList()
+void OrganizerCore::refreshESPList(bool force)
{
if (m_DirectoryUpdate) {
// don't mess up the esp list if we're currently updating the directory
// structure
- m_PostRefreshTasks.append([this]() {
- this->refreshESPList();
+ m_PostRefreshTasks.append([=]() {
+ this->refreshESPList(force);
});
return;
}
@@ -1574,7 +1574,7 @@ void OrganizerCore::refreshESPList() // clear list
try {
m_PluginList.refresh(m_CurrentProfile->name(), *m_DirectoryStructure,
- m_CurrentProfile->getLockedOrderFileName());
+ m_CurrentProfile->getLockedOrderFileName(), force);
} catch (const std::exception &e) {
reportError(tr("Failed to refresh list of esps: %1").arg(e.what()));
}
@@ -1615,7 +1615,7 @@ void OrganizerCore::refreshBSAList() void OrganizerCore::refreshLists()
{
if ((m_CurrentProfile != nullptr) && m_DirectoryStructure->isPopulated()) {
- refreshESPList();
+ refreshESPList(true);
refreshBSAList();
} // no point in refreshing lists if no files have been added to the directory
// tree
@@ -1678,7 +1678,7 @@ void OrganizerCore::updateModInDirectoryStructure(unsigned int index, modInfo->stealFiles());
DirectoryRefresher::cleanStructure(m_DirectoryStructure);
// need to refresh plugin list now so we can activate esps
- refreshESPList();
+ refreshESPList(true);
// activate all esps of the specified mod so the bsas get activated along with
// it
updateModActiveState(index, true);
@@ -1839,7 +1839,7 @@ void OrganizerCore::modStatusChanged(unsigned int index) updateModInDirectoryStructure(index, modInfo);
} else {
updateModActiveState(index, false);
- refreshESPList();
+ refreshESPList(true);
if (m_DirectoryStructure->originExists(ToWString(modInfo->name()))) {
FilesOrigin &origin
= m_DirectoryStructure->getOriginByName(ToWString(modInfo->name()));
diff --git a/src/organizercore.h b/src/organizercore.h index 9e81f0c3..54d9dd6d 100644 --- a/src/organizercore.h +++ b/src/organizercore.h @@ -130,7 +130,7 @@ public: void prepareStart();
- void refreshESPList();
+ void refreshESPList(bool force = false);
void refreshBSAList();
void refreshDirectoryStructure();
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 8bf438f1..9bbcdc11 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -140,8 +140,15 @@ void PluginList::highlightPlugins(const QItemSelection &selected, const MOShared void PluginList::refresh(const QString &profileName
, const DirectoryEntry &baseDirectory
- , const QString &lockedOrderFile)
+ , const QString &lockedOrderFile
+ , bool force)
{
+ if (force) {
+ m_ESPs.clear();
+ m_ESPsByName.clear();
+ m_ESPsByPriority.clear();
+ }
+
ChangeBracket<PluginList> layoutChange(this);
QStringList primaryPlugins = m_GamePlugin->primaryPlugins();
diff --git a/src/pluginlist.h b/src/pluginlist.h index 4762f79f..f9173810 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -116,7 +116,8 @@ public: **/
void refresh(const QString &profileName
, const MOShared::DirectoryEntry &baseDirectory
- , const QString &lockedOrderFile);
+ , const QString &lockedOrderFile
+ , bool refresh);
/**
* @brief enable a plugin based on its name
|
