summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainwindow.cpp2
-rw-r--r--src/modinfo.cpp2
-rw-r--r--src/modinfo.h2
-rw-r--r--src/modinfodialogconflicts.cpp14
-rw-r--r--src/modlist.cpp48
-rw-r--r--src/modlist.h8
-rw-r--r--src/organizerproxy.cpp36
-rw-r--r--src/organizerproxy.h85
-rw-r--r--src/pluginlist.cpp9
-rw-r--r--src/pluginlist.h3
-rw-r--r--src/thread_utils.h5
11 files changed, 123 insertions, 91 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 9ad51510..6a648512 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -4221,7 +4221,7 @@ void MainWindow::checkModsForUpdates()
{
bool checkingModsForUpdate = false;
if (NexusInterface::instance().getAccessManager()->validated()) {
- checkingModsForUpdate = ModInfo::checkAllForUpdate(this);
+ checkingModsForUpdate = ModInfo::checkAllForUpdate(&m_PluginContainer, this);
NexusInterface::instance().requestEndorsementInfo(this, QVariant(), QString());
NexusInterface::instance().requestTrackingInfo(this, QVariant(), QString());
} else {
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index 04cb18ce..a0382fe8 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -295,7 +295,7 @@ ModInfo::ModInfo(PluginContainer *pluginContainer)
}
-bool ModInfo::checkAllForUpdate(QObject *receiver)
+bool ModInfo::checkAllForUpdate(PluginContainer *pluginContainer, QObject *receiver)
{
bool updatesAvailable = true;
diff --git a/src/modinfo.h b/src/modinfo.h
index 480fe013..e5e46741 100644
--- a/src/modinfo.h
+++ b/src/modinfo.h
@@ -197,7 +197,7 @@ public: // Static functions:
*
* @return true if any mods are checked for update.
*/
- static bool checkAllForUpdate(QObject *receiver);
+ static bool checkAllForUpdate(PluginContainer *pluginContainer, QObject *receiver);
/**
*
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index 0103b58a..cf7f6340 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -1001,7 +1001,7 @@ std::optional<ConflictItem> AdvancedConflictsTab::createItem(
if (currOrigin->getID() == fileOrigin) {
// current origin is the active winner, all alternatives go in 'before'
-
+
if (showAllAlts) {
for (const auto& alt : alternatives)
{
@@ -1023,7 +1023,7 @@ std::optional<ConflictItem> AdvancedConflictsTab::createItem(
}
else {
// current mod is one of the alternatives, find its position
-
+
auto currOrgId = currOrigin->getID();
auto currModIter = std::find_if(alternatives.begin(), alternatives.end(),
@@ -1037,14 +1037,14 @@ std::optional<ConflictItem> AdvancedConflictsTab::createItem(
}
isCurrOrigArchive = currModIter->isFromArchive();
-
+
if (showAllAlts) {
// fills 'before' and 'after' with all the alternatives that come
- // before and after the current mod, trusting the alternatives vector to be
+ // before and after the current mod, trusting the alternatives vector to be
// already sorted correctly
-
+
for (auto iter = alternatives.begin(); iter != alternatives.end(); iter++) {
-
+
const auto& altOrigin = ds.getOriginByID(iter->originID());
if (iter < currModIter) {
@@ -1094,7 +1094,7 @@ std::optional<ConflictItem> AdvancedConflictsTab::createItem(
after += ds.getOriginByID(fileOrigin).getName();
}
-
+
}
}
}
diff --git a/src/modlist.cpp b/src/modlist.cpp
index bf9aef83..c98464a9 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -977,7 +977,7 @@ int ModList::setActive(const QStringList& names, bool active) {
indices.append(modIndex);
}
else {
- log::debug("Trying to {} mod {} which does not exist.",
+ log::debug("Trying to {} mod {} which does not exist.",
active ? "enable" : "disable", name);
}
}
@@ -1043,7 +1043,7 @@ void ModList::notifyModRemoved(QString const& modName) const
m_ModRemoved(modName);
}
-void ModList::notifyModStateChanged(QList<unsigned int> modIndices) const
+void ModList::notifyModStateChanged(QList<unsigned int> modIndices) const
{
std::map<QString, ModStates> mods;
for (auto modIndex : modIndices) {
@@ -1530,7 +1530,7 @@ void ModList::disableSelected(const QItemSelectionModel *selectionModel)
}
-QString DummyModList::displayName(const QString &internalName) const
+QString DummyModList::displayName(const QString&) const
{
return {};
}
@@ -1540,32 +1540,62 @@ QStringList DummyModList::allMods() const
return {};
}
-IModList::ModStates DummyModList::state(const QString &name) const
+QStringList DummyModList::allModsByProfilePriority(MOBase::IProfile*) const
+{
+ return {};
+}
+
+IModInterface* DummyModList::getMod(const QString&) const
+{
+ return nullptr;
+}
+
+bool DummyModList::removeMod(MOBase::IModInterface*)
+{
+ return true;
+}
+
+IModList::ModStates DummyModList::state(const QString&) const
{
return 0;
}
-bool DummyModList::setActive(const QString &name, bool active)
+bool DummyModList::setActive(const QString&, bool)
{
return true;
}
-int DummyModList::priority(const QString &name) const
+int DummyModList::setActive(const QStringList&, bool)
+{
+ return 0;
+}
+
+int DummyModList::priority(const QString&) const
{
return -1;
}
-bool DummyModList::setPriority(const QString &name, int newPriority)
+bool DummyModList::setPriority(const QString&, int)
+{
+ return true;
+}
+
+bool DummyModList::onModInstalled(const std::function<void(IModInterface *)>&)
+{
+ return true;
+}
+
+bool DummyModList::onModRemoved(const std::function<void(QString const&)>&)
{
return true;
}
-bool DummyModList::onModStateChanged(const std::function<void(const QString&, ModStates)> &func)
+bool DummyModList::onModStateChanged(const std::function<void(const std::map<QString, ModStates>&)>&)
{
return true;
}
-bool DummyModList::onModMoved(const std::function<void (const QString &, int, int)> &func)
+bool DummyModList::onModMoved(const std::function<void (const QString &, int, int)>&)
{
return true;
}
diff --git a/src/modlist.h b/src/modlist.h
index 3ab486c9..1a469ee7 100644
--- a/src/modlist.h
+++ b/src/modlist.h
@@ -403,11 +403,17 @@ class DummyModList : public MOBase::IModList
public:
QString displayName(const QString &internalName) const override;
QStringList allMods() const override;
+ QStringList allModsByProfilePriority(MOBase::IProfile *profile = nullptr) const override;
+ MOBase::IModInterface* getMod(const QString& name) const override;
+ bool removeMod(MOBase::IModInterface *mod) override;
ModStates state(const QString &name) const override;
bool setActive(const QString &name, bool active) override;
+ int setActive(const QStringList& names, bool active) override;
int priority(const QString &name) const override;
bool setPriority(const QString &name, int newPriority) override;
- bool onModStateChanged(const std::function<void(const QString&, ModStates)> &func) override;
+ bool onModInstalled(const std::function<void(MOBase::IModInterface *)>& func) override;
+ bool onModRemoved(const std::function<void(QString const&)>& func) override;
+ bool onModStateChanged(const std::function<void(const std::map<QString, ModStates>&)> &func) override;
bool onModMoved(const std::function<void (const QString &, int, int)> &func) override;
};
diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp
index 8cc95a8b..b2a4f791 100644
--- a/src/organizerproxy.cpp
+++ b/src/organizerproxy.cpp
@@ -290,9 +290,8 @@ bool OrganizerProxy::onPluginSettingChanged(std::function<void(QString const&, c
-DummyOrganizerProxy::DummyOrganizerProxy(const QString &pluginName) :
- m_PluginName(pluginName),
- m_mods(new DummyModList), m_plugins(new DummyPluginList)
+DummyOrganizerProxy::DummyOrganizerProxy(MOBase::IPlugin* plugin)
+ : m_mods(new DummyModList), m_plugins(new DummyPluginList)
{
}
@@ -338,11 +337,6 @@ VersionInfo DummyOrganizerProxy::appVersion() const
return {};
}
-IModInterface *DummyOrganizerProxy::getMod(const QString &name) const
-{
- return nullptr;
-}
-
IPluginGame *DummyOrganizerProxy::getGame(const QString &gameName) const
{
return nullptr;
@@ -353,11 +347,6 @@ IModInterface *DummyOrganizerProxy::createMod(MOBase::GuessedValue<QString> &nam
return nullptr;
}
-bool DummyOrganizerProxy::removeMod(IModInterface *mod)
-{
- return true;
-}
-
void DummyOrganizerProxy::modDataChanged(IModInterface *mod)
{
}
@@ -411,12 +400,22 @@ bool DummyOrganizerProxy::onFinishedRun(const std::function<void (const QString
return true;
}
-bool DummyOrganizerProxy::onModInstalled(const std::function<void (const QString &)> &func)
+bool DummyOrganizerProxy::onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func)
{
return true;
}
-bool DummyOrganizerProxy::onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func)
+bool DummyOrganizerProxy::onProfileCreated(std::function<void(MOBase::IProfile*)> const& func)
+{
+ return true;
+}
+
+bool DummyOrganizerProxy::onProfileRenamed(std::function<void(MOBase::IProfile*, QString const&, QString const&)> const& func)
+{
+ return true;
+}
+
+bool DummyOrganizerProxy::onProfileRemoved(std::function<void(QString const&)> const& func)
{
return true;
}
@@ -431,7 +430,7 @@ bool DummyOrganizerProxy::onPluginSettingChanged(std::function<void(QString cons
return true;
}
-void DummyOrganizerProxy::refreshModList(bool saveChanges)
+void DummyOrganizerProxy::refresh(bool saveChanges)
{
}
@@ -494,8 +493,3 @@ MOBase::IPluginGame const *DummyOrganizerProxy::managedGame() const
{
return nullptr;
}
-
-QStringList DummyOrganizerProxy::modsSortedByProfilePriority() const
-{
- return {};
-}
diff --git a/src/organizerproxy.h b/src/organizerproxy.h
index 3bd70113..144a7732 100644
--- a/src/organizerproxy.h
+++ b/src/organizerproxy.h
@@ -85,57 +85,54 @@ private:
class DummyOrganizerProxy : public MOBase::IOrganizer
{
public:
- DummyOrganizerProxy(const QString &pluginName);
+ DummyOrganizerProxy(MOBase::IPlugin* plugin);
~DummyOrganizerProxy();
- virtual MOBase::IModRepositoryBridge *createNexusBridge() const;
- virtual QString profileName() const;
- virtual QString profilePath() const;
- virtual QString downloadsPath() const;
- virtual QString overwritePath() const;
- virtual QString basePath() const;
- virtual QString modsPath() const;
- virtual MOBase::VersionInfo appVersion() const;
- virtual MOBase::IModInterface *getMod(const QString &name) const;
- virtual MOBase::IPluginGame *getGame(const QString &gameName) const;
- virtual MOBase::IModInterface *createMod(MOBase::GuessedValue<QString> &name);
- virtual bool removeMod(MOBase::IModInterface *mod);
- virtual void modDataChanged(MOBase::IModInterface *mod);
- virtual QVariant pluginSetting(const QString &pluginName, const QString &key) const;
- virtual void setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value);
- virtual QVariant persistent(const QString &pluginName, const QString &key, const QVariant &def = QVariant()) const;
- virtual void setPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync = true);
- virtual QString pluginDataPath() const;
- virtual MOBase::IModInterface *installMod(const QString &fileName, const QString &nameSuggestion = QString());
- virtual QString resolvePath(const QString &fileName) const;
- virtual QStringList listDirectories(const QString &directoryName) const;
- virtual QStringList findFiles(const QString &path, const std::function<bool(const QString &)> &filter) const override;
- virtual QStringList findFiles(const QString &path, const QStringList &globFilters) const override;
- virtual QStringList getFileOrigins(const QString &fileName) const;
- virtual QList<FileInfo> findFileInfos(const QString &path, const std::function<bool(const FileInfo&)> &filter) const;
+ MOBase::IModRepositoryBridge *createNexusBridge() const override;
+ QString profileName() const override;
+ QString profilePath() const override;
+ QString downloadsPath() const override;
+ QString overwritePath() const override;
+ QString basePath() const override;
+ QString modsPath() const override;
+ MOBase::VersionInfo appVersion() const override;
+ MOBase::IPluginGame *getGame(const QString &gameName) const override;
+ MOBase::IModInterface *createMod(MOBase::GuessedValue<QString> &name) override;
+ void modDataChanged(MOBase::IModInterface *mod) override;
+ QVariant pluginSetting(const QString &pluginName, const QString &key) const override;
+ void setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value) override;
+ QVariant persistent(const QString &pluginName, const QString &key, const QVariant &def = QVariant()) const override;
+ void setPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync = true) override;
+ QString pluginDataPath() const override;
+ MOBase::IModInterface *installMod(const QString &fileName, const QString &nameSuggestion = QString()) override;
+ QString resolvePath(const QString &fileName) const override;
+ QStringList listDirectories(const QString &directoryName) const override;
+ QStringList findFiles(const QString &path, const std::function<bool(const QString &)> &filter) const override;
+ QStringList findFiles(const QString &path, const QStringList &globFilters) const override;
+ QStringList getFileOrigins(const QString &fileName) const override;
+ QList<FileInfo> findFileInfos(const QString &path, const std::function<bool(const FileInfo&)> &filter) const override;
- virtual MOBase::IDownloadManager *downloadManager() const;
- virtual MOBase::IPluginList *pluginList() const;
- virtual MOBase::IModList *modList() const;
- virtual MOBase::IProfile *profile() const override;
- virtual HANDLE startApplication(const QString &executable, const QStringList &args = QStringList(), const QString &cwd = "",
- const QString &profile = "", const QString &forcedCustomOverwrite = "", bool ignoreCustomOverwrite = false);
- virtual bool waitForApplication(HANDLE handle, LPDWORD exitCode = nullptr) const;
- virtual void refreshModList(bool saveChanges);
-
- virtual bool onAboutToRun(const std::function<bool(const QString&)> &func);
- virtual bool onFinishedRun(const std::function<void (const QString&, unsigned int)> &func);
- virtual bool onModInstalled(const std::function<void (const QString&)> &func);
- virtual bool onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func);
- virtual bool onProfileChanged(std::function<void(MOBase::IProfile*, MOBase::IProfile*)> const& func);
- virtual bool onPluginSettingChanged(std::function<void(QString const&, const QString& key, const QVariant&, const QVariant&)> const& func);
+ MOBase::IDownloadManager *downloadManager() const override;
+ MOBase::IPluginList *pluginList() const override;
+ MOBase::IModList *modList() const override;
+ MOBase::IProfile *profile() const override;
+ HANDLE startApplication(const QString &executable, const QStringList &args = QStringList(), const QString &cwd = "",
+ const QString &profile = "", const QString &forcedCustomOverwrite = "", bool ignoreCustomOverwrite = false) override;
+ bool waitForApplication(HANDLE handle, LPDWORD exitCode = nullptr) const override;
+ void refresh(bool saveChanges = true) override;
- virtual MOBase::IPluginGame const *managedGame() const;
+ bool onAboutToRun(const std::function<bool(const QString&)> &func) override;
+ bool onFinishedRun(const std::function<void (const QString&, unsigned int)> &func) override;
+ bool onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func) override;
+ bool onProfileCreated(std::function<void(MOBase::IProfile*)> const& func) override;
+ bool onProfileRenamed(std::function<void(MOBase::IProfile*, QString const&, QString const&)> const& func) override;
+ bool onProfileRemoved(std::function<void(QString const&)> const& func) override;
+ bool onProfileChanged(std::function<void(MOBase::IProfile*, MOBase::IProfile*)> const& func) override;
+ bool onPluginSettingChanged(std::function<void(QString const&, const QString& key, const QVariant&, const QVariant&)> const& func) override;
- virtual QStringList modsSortedByProfilePriority() const;
+ MOBase::IPluginGame const *managedGame() const override;
private:
- const QString &m_PluginName;
std::unique_ptr<MOBase::IPluginList> m_plugins;
std::unique_ptr<MOBase::IModList> m_mods;
};
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index 7134d246..bda360ba 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -801,7 +801,7 @@ bool PluginList::setPriority(const QString& name, int newPriority) {
int rowIndex = findPluginByPriority(oldPriority);
- // We need to increment newPriority if its above the old one, otherwise the
+ // We need to increment newPriority if its above the old one, otherwise the
// plugin is place right below the new priority.
if (oldPriority < newPriority) {
newPriority += 1;
@@ -1702,6 +1702,11 @@ void DummyPluginList::setLoadOrder(const QStringList &pluginList)
{
}
+bool DummyPluginList::setPriority(const QString&, int)
+{
+ return true;
+}
+
bool DummyPluginList::isMaster(const QString &name) const
{
return false;
@@ -1727,7 +1732,7 @@ bool DummyPluginList::onPluginMoved(const std::function<void (const QString &, i
return true;
}
-bool DummyPluginList::onPluginStateChanged(const std::function<void (const QString &, PluginStates)> &func)
+bool DummyPluginList::onPluginStateChanged(const std::function<void (const std::map<QString, PluginStates>&)> &func)
{
return true;
}
diff --git a/src/pluginlist.h b/src/pluginlist.h
index bfadaf4f..27c15056 100644
--- a/src/pluginlist.h
+++ b/src/pluginlist.h
@@ -420,12 +420,13 @@ public:
int priority(const QString &name) const override;
int loadOrder(const QString &name) const override;
void setLoadOrder(const QStringList &pluginList) override;
+ bool setPriority(const QString& name, int newPriority) override;
bool isMaster(const QString &name) const override;
QStringList masters(const QString &name) const override;
QString origin(const QString &name) const override;
bool onRefreshed(const std::function<void()> &callback) override;
bool onPluginMoved(const std::function<void (const QString &, int, int)> &func) override;
- bool onPluginStateChanged(const std::function<void (const QString &, PluginStates)> &func) override;
+ bool onPluginStateChanged(const std::function<void (const std::map<QString, PluginStates>&)> &func) override;
};
#pragma warning(pop)
diff --git a/src/thread_utils.h b/src/thread_utils.h
index 607d73a9..f64dd601 100644
--- a/src/thread_utils.h
+++ b/src/thread_utils.h
@@ -7,8 +7,7 @@
#include <thread>
// in main.cpp
-void setUnhandledExceptionHandler();
-LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS *exceptionPtrs);
+void setExceptionHandlers();
namespace MOShared {
@@ -20,7 +19,7 @@ template <class F>
std::thread startSafeThread(F&& f)
{
return std::thread([f=std::forward<F>(f)] {
- setUnhandledExceptionHandler();
+ setExceptionHandlers();
f();
});
}