summaryrefslogtreecommitdiff
path: root/src/organizercore.cpp
diff options
context:
space:
mode:
authorMikaƫl Capelle <capelle.mikael@gmail.com>2020-11-18 10:01:27 +0100
committerGitHub <noreply@github.com>2020-11-18 10:01:27 +0100
commitddba54382aab3cb5548485d14c85e2611272f3cb (patch)
treee3b1aa7f86c3d6852f2f749e40ff61971c0961b3 /src/organizercore.cpp
parent06686403382a98d23685232d404dfe5837ffb8a1 (diff)
parent61554d3df7be909acf6609b4b7465b03d7f16081 (diff)
Merge pull request #1292 from Holt59/iplugin-isactive-refactoring
IPlugin::isActive refactoring
Diffstat (limited to 'src/organizercore.cpp')
-rw-r--r--src/organizercore.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index ef9c190f..a9e62e77 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -287,6 +287,7 @@ void OrganizerCore::connectPlugins(PluginContainer *container)
m_InstallationManager.getSupportedExtensions());
m_PluginContainer = container;
m_Updater.setPluginContainer(m_PluginContainer);
+ m_InstallationManager.setPluginContainer(m_PluginContainer);
m_DownloadManager.setPluginContainer(m_PluginContainer);
m_ModList.setPluginContainer(m_PluginContainer);
@@ -294,6 +295,11 @@ void OrganizerCore::connectPlugins(PluginContainer *container)
m_GamePlugin = m_PluginContainer->managedGame(m_GameName);
emit managedGameChanged(m_GamePlugin);
}
+
+ connect(m_PluginContainer, &PluginContainer::pluginEnabled,
+ [&](IPlugin* plugin) { m_PluginEnabled(plugin); });
+ connect(m_PluginContainer, &PluginContainer::pluginDisabled,
+ [&](IPlugin* plugin) { m_PluginDisabled(plugin); });
}
void OrganizerCore::disconnectPlugins()
@@ -1224,6 +1230,16 @@ bool OrganizerCore::onPluginSettingChanged(std::function<void(QString const&, co
return m_PluginSettingChanged.connect(func).connected();
}
+bool OrganizerCore::onPluginEnabled(std::function<void(const IPlugin*)> const& func)
+{
+ return m_PluginEnabled.connect(func).connected();
+}
+
+bool OrganizerCore::onPluginDisabled(std::function<void(const IPlugin*)> const& func)
+{
+ return m_PluginDisabled.connect(func).connected();
+}
+
void OrganizerCore::refresh(bool saveChanges)
{
// don't lose changes!
@@ -1449,10 +1465,13 @@ void OrganizerCore::loggedInAction(QWidget* parent, std::function<void ()> f)
void OrganizerCore::requestDownload(const QUrl &url, QNetworkReply *reply)
{
- if (m_PluginContainer != nullptr) {
- for (IPluginModPage *modPage :
- m_PluginContainer->plugins<MOBase::IPluginModPage>()) {
- ModRepositoryFileInfo *fileInfo = new ModRepositoryFileInfo();
+ if (!m_PluginContainer) {
+ return;
+ }
+ for (IPluginModPage *modPage :
+ m_PluginContainer->plugins<MOBase::IPluginModPage>()) {
+ if (m_PluginContainer->isEnabled(modPage)) {
+ ModRepositoryFileInfo* fileInfo = new ModRepositoryFileInfo();
if (modPage->handlesDownload(url, reply->url(), *fileInfo)) {
fileInfo->repository = modPage->name();
m_DownloadManager.addDownload(reply, fileInfo);
@@ -2040,7 +2059,7 @@ std::vector<Mapping> OrganizerCore::fileMapping(const QString &profileName,
for (MOBase::IPluginFileMapper *mapper :
m_PluginContainer->plugins<MOBase::IPluginFileMapper>()) {
IPlugin *plugin = dynamic_cast<IPlugin *>(mapper);
- if (plugin->isActive()) {
+ if (m_PluginContainer->isEnabled(plugin)) {
MappingType pluginMap = mapper->mappings();
result.reserve(result.size() + pluginMap.size());
result.insert(result.end(), pluginMap.begin(), pluginMap.end());