diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2022-05-17 11:37:19 +0200 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2023-07-09 17:17:53 +0200 |
| commit | 86bb01ba9eac879d3685c439ac9da0028bc4bc80 (patch) | |
| tree | 90cc575c2d02113af459b7772418285f2e5caa1f /src/organizerproxy.cpp | |
| parent | 7d6cb8528d20e36a4cee822263865ee2f7f32481 (diff) | |
Convert everything to CRLF.
Diffstat (limited to 'src/organizerproxy.cpp')
| -rw-r--r-- | src/organizerproxy.cpp | 750 |
1 files changed, 375 insertions, 375 deletions
diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp index e9fe61c2..d5118421 100644 --- a/src/organizerproxy.cpp +++ b/src/organizerproxy.cpp @@ -1,375 +1,375 @@ -#include "organizerproxy.h"
-
-#include "shared/appconfig.h"
-#include "organizercore.h"
-#include "plugincontainer.h"
-#include "settings.h"
-#include "glob_matching.h"
-#include "downloadmanagerproxy.h"
-#include "modlistproxy.h"
-#include "pluginlistproxy.h"
-#include "proxyutils.h"
-#include "shared/util.h"
-
-#include <QObject>
-#include <QApplication>
-
-using namespace MOBase;
-using namespace MOShared;
-
-
-OrganizerProxy::OrganizerProxy(OrganizerCore* organizer, PluginContainer* pluginContainer, MOBase::IPlugin* plugin)
- : m_Proxied(organizer)
- , m_PluginContainer(pluginContainer)
- , m_Plugin(plugin)
- , m_DownloadManagerProxy(std::make_unique<DownloadManagerProxy>(this, organizer->downloadManager()))
- , m_ModListProxy(std::make_unique<ModListProxy>(this, organizer->modList()))
- , m_PluginListProxy(std::make_unique<PluginListProxy>(this, organizer->pluginList())) { }
-
-OrganizerProxy::~OrganizerProxy()
-{
- disconnectSignals();
-}
-
-void OrganizerProxy::connectSignals()
-{
- m_Connections.push_back(m_Proxied->onAboutToRun(callSignalIfPluginActive(this, m_AboutToRun, true)));
- m_Connections.push_back(m_Proxied->onFinishedRun(callSignalIfPluginActive(this, m_FinishedRun)));
- m_Connections.push_back(m_Proxied->onProfileCreated(callSignalIfPluginActive(this, m_ProfileCreated)));
- m_Connections.push_back(m_Proxied->onProfileRenamed(callSignalIfPluginActive(this, m_ProfileRenamed)));
- m_Connections.push_back(m_Proxied->onProfileRemoved(callSignalIfPluginActive(this, m_ProfileRemoved)));
- m_Connections.push_back(m_Proxied->onProfileChanged(callSignalIfPluginActive(this, m_ProfileChanged)));
-
- m_Connections.push_back(m_Proxied->onUserInterfaceInitialized(callSignalAlways(m_UserInterfaceInitialized)));
- m_Connections.push_back(m_Proxied->onPluginSettingChanged(callSignalAlways(m_PluginSettingChanged)));
- m_Connections.push_back(m_Proxied->onPluginEnabled(callSignalAlways(m_PluginEnabled)));
- m_Connections.push_back(m_Proxied->onPluginDisabled(callSignalAlways(m_PluginDisabled)));
-
- // Connect the child proxies.
- m_DownloadManagerProxy->connectSignals();
- m_ModListProxy->connectSignals();
- m_PluginListProxy->connectSignals();
-}
-
-void OrganizerProxy::disconnectSignals()
-{
- // Disconnect the child proxies.
- m_DownloadManagerProxy->disconnectSignals();
- m_ModListProxy->disconnectSignals();
- m_PluginListProxy->disconnectSignals();
-
- for (auto& conn : m_Connections) {
- conn.disconnect();
- }
- m_Connections.clear();
-}
-
-IModRepositoryBridge *OrganizerProxy::createNexusBridge() const
-{
- return new NexusBridge(m_PluginContainer, m_Plugin->name());
-}
-
-QString OrganizerProxy::profileName() const
-{
- return m_Proxied->profileName();
-}
-
-QString OrganizerProxy::profilePath() const
-{
- return m_Proxied->profilePath();
-}
-
-QString OrganizerProxy::downloadsPath() const
-{
- return m_Proxied->downloadsPath();
-}
-
-QString OrganizerProxy::overwritePath() const
-{
- return m_Proxied->overwritePath();
-}
-
-QString OrganizerProxy::basePath() const
-{
- return m_Proxied->basePath();
-}
-
-QString OrganizerProxy::modsPath() const
-{
- return m_Proxied->modsPath();
-}
-
-VersionInfo OrganizerProxy::appVersion() const
-{
- return m_Proxied->appVersion();
-}
-
-IPluginGame *OrganizerProxy::getGame(const QString &gameName) const
-{
- return m_Proxied->getGame(gameName);
-}
-
-IModInterface *OrganizerProxy::createMod(MOBase::GuessedValue<QString> &name)
-{
- return m_Proxied->createMod(name);
-}
-
-void OrganizerProxy::modDataChanged(IModInterface *mod)
-{
- m_Proxied->modDataChanged(mod);
-}
-
-bool OrganizerProxy::isPluginEnabled(QString const& pluginName) const
-{
- return m_PluginContainer->isEnabled(pluginName);
-}
-
-bool OrganizerProxy::isPluginEnabled(IPlugin* plugin) const
-{
- return m_PluginContainer->isEnabled(plugin);
-}
-
-QVariant OrganizerProxy::pluginSetting(const QString &pluginName, const QString &key) const
-{
- return m_Proxied->pluginSetting(pluginName, key);
-}
-
-void OrganizerProxy::setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value)
-{
- m_Proxied->setPluginSetting(pluginName, key, value);
-}
-
-QVariant OrganizerProxy::persistent(const QString &pluginName, const QString &key, const QVariant &def) const
-{
- return m_Proxied->persistent(pluginName, key, def);
-}
-
-void OrganizerProxy::setPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync)
-{
- m_Proxied->setPersistent(pluginName, key, value, sync);
-}
-
-QString OrganizerProxy::pluginDataPath() const
-{
- return OrganizerCore::pluginDataPath();
-}
-
-HANDLE OrganizerProxy::startApplication(
- const QString& exe, const QStringList& args, const QString &cwd,
- const QString& profile, const QString &overwrite, bool ignoreOverwrite)
-{
- log::debug(
- "a plugin has requested to start an application:\n"
- " . executable: '{}'\n"
- " . args: '{}'\n"
- " . cwd: '{}'\n"
- " . profile: '{}'\n"
- " . overwrite: '{}'\n"
- " . ignore overwrite: {}",
- exe, args.join(" "), cwd, profile, overwrite, ignoreOverwrite);
-
- auto runner = m_Proxied->processRunner();
-
- // don't wait for completion
- runner
- .setFromFileOrExecutable(exe, args, cwd, profile, overwrite, ignoreOverwrite)
- .run();
-
- // the plugin is in charge of closing the handle, unless waitForApplication()
- // is called on it
- return runner.stealProcessHandle().release();
-}
-
-bool OrganizerProxy::waitForApplication(HANDLE handle, bool refresh, LPDWORD exitCode) const
-{
- const auto pid = ::GetProcessId(handle);
-
- log::debug(
- "a plugin wants to wait for an application to complete, pid {}{}",
- pid, (pid == 0 ? "unknown (probably already completed)" : ""));
-
- auto runner = m_Proxied->processRunner();
-
- ProcessRunner::WaitFlags waitFlags = ProcessRunner::ForceWait;
-
- if (refresh) {
- waitFlags |= ProcessRunner::TriggerRefresh | ProcessRunner::WaitForRefresh;
- }
-
- const auto r = runner
- .setWaitForCompletion(waitFlags, UILocker::OutputRequired)
- .attachToProcess(handle);
-
- if (exitCode) {
- *exitCode = runner.exitCode();
- }
-
- switch (r)
- {
- case ProcessRunner::Completed:
- return true;
-
- case ProcessRunner::Cancelled: // fall-through
- case ProcessRunner::ForceUnlocked:
- // this is always an error because the application should have run to
- // completion
- return false;
-
- case ProcessRunner::Error: // fall-through
- default:
- return false;
- }
-}
-
-void OrganizerProxy::refresh(bool saveChanges)
-{
- m_Proxied->refresh(saveChanges);
-}
-
-IModInterface *OrganizerProxy::installMod(const QString &fileName, const QString &nameSuggestion)
-{
- return m_Proxied->installMod(fileName, -1, false, nullptr, nameSuggestion);
-}
-
-QString OrganizerProxy::resolvePath(const QString &fileName) const
-{
- return m_Proxied->resolvePath(fileName);
-}
-
-QStringList OrganizerProxy::listDirectories(const QString &directoryName) const
-{
- return m_Proxied->listDirectories(directoryName);
-}
-
-QStringList OrganizerProxy::findFiles(const QString &path, const std::function<bool(const QString&)> &filter) const
-{
- return m_Proxied->findFiles(path, filter);
-}
-
-QStringList OrganizerProxy::findFiles(const QString& path, const QStringList& globFilters) const
-{
- QList<GlobPattern<QChar>> patterns;
- for (auto& gfilter : globFilters) {
- patterns.append(GlobPattern(gfilter));
- }
- return findFiles(path, [&patterns](const QString& filename) {
- for (auto& p : patterns) {
- if (p.match(filename)) {
- return true;
- }
- }
- return false;
- });
-}
-
-QStringList OrganizerProxy::getFileOrigins(const QString &fileName) const
-{
- return m_Proxied->getFileOrigins(fileName);
-}
-
-QList<MOBase::IOrganizer::FileInfo> OrganizerProxy::findFileInfos(const QString &path, const std::function<bool (const MOBase::IOrganizer::FileInfo &)> &filter) const
-{
- return m_Proxied->findFileInfos(path, filter);
-}
-
-std::shared_ptr<const MOBase::IFileTree> OrganizerProxy::virtualFileTree() const
-{
- return m_Proxied->m_VirtualFileTree.value();
-}
-
-MOBase::IDownloadManager *OrganizerProxy::downloadManager() const
-{
- return m_DownloadManagerProxy.get();
-}
-
-MOBase::IPluginList *OrganizerProxy::pluginList() const
-{
- return m_PluginListProxy.get();
-}
-
-MOBase::IModList *OrganizerProxy::modList() const
-{
- return m_ModListProxy.get();
-}
-
-MOBase::IProfile *OrganizerProxy::profile() const
-{
- return m_Proxied->currentProfile();
-}
-
-MOBase::IPluginGame const *OrganizerProxy::managedGame() const
-{
- return m_Proxied->managedGame();
-}
-
-// CALLBACKS
-
-bool OrganizerProxy::onAboutToRun(const std::function<bool(const QString&)>& func)
-{
- return m_Proxied->onAboutToRun(MOShared::callIfPluginActive(this, func, true)).connected();
-}
-
-bool OrganizerProxy::onFinishedRun(const std::function<void(const QString&, unsigned int)>& func)
-{
- return m_Proxied->onFinishedRun(MOShared::callIfPluginActive(this, func)).connected();
-}
-
-bool OrganizerProxy::onProfileCreated(std::function<void(IProfile*)> const& func)
-{
- return m_ProfileCreated.connect(func).connected();
-}
-
-bool OrganizerProxy::onProfileRenamed(std::function<void(IProfile*, QString const&, QString const&)> const& func)
-{
- return m_ProfileRenamed.connect(func).connected();
-}
-
-bool OrganizerProxy::onProfileRemoved(std::function<void(QString const&)> const& func)
-{
- return m_ProfileRemoved.connect(func).connected();
-}
-
-bool OrganizerProxy::onProfileChanged(std::function<void(MOBase::IProfile*, MOBase::IProfile*)> const& func)
-{
- return m_ProfileChanged.connect(func).connected();
-}
-
-bool OrganizerProxy::onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func)
-{
- // Always call this one to allow plugin to initialize themselves even when not active:
- return m_UserInterfaceInitialized.connect(func).connected();
-}
-
-// Always call these one, otherwise plugin cannot detect they are being enabled / disabled:
-bool OrganizerProxy::onPluginSettingChanged(std::function<void(QString const&, const QString& key, const QVariant&, const QVariant&)> const& func)
-{
- return m_PluginSettingChanged.connect(func).connected();
-}
-
-bool OrganizerProxy::onPluginEnabled(std::function<void(const IPlugin*)> const& func)
-{
- return m_PluginEnabled.connect(func).connected();
-}
-
-bool OrganizerProxy::onPluginEnabled(const QString& pluginName, std::function<void()> const& func)
-{
- return onPluginEnabled([=](const IPlugin* plugin) {
- if (plugin->name().compare(pluginName, Qt::CaseInsensitive) == 0) {
- func();
- }
- });
-}
-
-bool OrganizerProxy::onPluginDisabled(std::function<void(const IPlugin*)> const& func)
-{
- return m_PluginDisabled.connect(func).connected();
-}
-
-bool OrganizerProxy::onPluginDisabled(const QString& pluginName, std::function<void()> const& func)
-{
- return onPluginDisabled([=](const IPlugin* plugin) {
- if (plugin->name().compare(pluginName, Qt::CaseInsensitive) == 0) {
- func();
- }
- });
-}
+#include "organizerproxy.h" + +#include "shared/appconfig.h" +#include "organizercore.h" +#include "plugincontainer.h" +#include "settings.h" +#include "glob_matching.h" +#include "downloadmanagerproxy.h" +#include "modlistproxy.h" +#include "pluginlistproxy.h" +#include "proxyutils.h" +#include "shared/util.h" + +#include <QObject> +#include <QApplication> + +using namespace MOBase; +using namespace MOShared; + + +OrganizerProxy::OrganizerProxy(OrganizerCore* organizer, PluginContainer* pluginContainer, MOBase::IPlugin* plugin) + : m_Proxied(organizer) + , m_PluginContainer(pluginContainer) + , m_Plugin(plugin) + , m_DownloadManagerProxy(std::make_unique<DownloadManagerProxy>(this, organizer->downloadManager())) + , m_ModListProxy(std::make_unique<ModListProxy>(this, organizer->modList())) + , m_PluginListProxy(std::make_unique<PluginListProxy>(this, organizer->pluginList())) { } + +OrganizerProxy::~OrganizerProxy() +{ + disconnectSignals(); +} + +void OrganizerProxy::connectSignals() +{ + m_Connections.push_back(m_Proxied->onAboutToRun(callSignalIfPluginActive(this, m_AboutToRun, true))); + m_Connections.push_back(m_Proxied->onFinishedRun(callSignalIfPluginActive(this, m_FinishedRun))); + m_Connections.push_back(m_Proxied->onProfileCreated(callSignalIfPluginActive(this, m_ProfileCreated))); + m_Connections.push_back(m_Proxied->onProfileRenamed(callSignalIfPluginActive(this, m_ProfileRenamed))); + m_Connections.push_back(m_Proxied->onProfileRemoved(callSignalIfPluginActive(this, m_ProfileRemoved))); + m_Connections.push_back(m_Proxied->onProfileChanged(callSignalIfPluginActive(this, m_ProfileChanged))); + + m_Connections.push_back(m_Proxied->onUserInterfaceInitialized(callSignalAlways(m_UserInterfaceInitialized))); + m_Connections.push_back(m_Proxied->onPluginSettingChanged(callSignalAlways(m_PluginSettingChanged))); + m_Connections.push_back(m_Proxied->onPluginEnabled(callSignalAlways(m_PluginEnabled))); + m_Connections.push_back(m_Proxied->onPluginDisabled(callSignalAlways(m_PluginDisabled))); + + // Connect the child proxies. + m_DownloadManagerProxy->connectSignals(); + m_ModListProxy->connectSignals(); + m_PluginListProxy->connectSignals(); +} + +void OrganizerProxy::disconnectSignals() +{ + // Disconnect the child proxies. + m_DownloadManagerProxy->disconnectSignals(); + m_ModListProxy->disconnectSignals(); + m_PluginListProxy->disconnectSignals(); + + for (auto& conn : m_Connections) { + conn.disconnect(); + } + m_Connections.clear(); +} + +IModRepositoryBridge *OrganizerProxy::createNexusBridge() const +{ + return new NexusBridge(m_PluginContainer, m_Plugin->name()); +} + +QString OrganizerProxy::profileName() const +{ + return m_Proxied->profileName(); +} + +QString OrganizerProxy::profilePath() const +{ + return m_Proxied->profilePath(); +} + +QString OrganizerProxy::downloadsPath() const +{ + return m_Proxied->downloadsPath(); +} + +QString OrganizerProxy::overwritePath() const +{ + return m_Proxied->overwritePath(); +} + +QString OrganizerProxy::basePath() const +{ + return m_Proxied->basePath(); +} + +QString OrganizerProxy::modsPath() const +{ + return m_Proxied->modsPath(); +} + +VersionInfo OrganizerProxy::appVersion() const +{ + return m_Proxied->appVersion(); +} + +IPluginGame *OrganizerProxy::getGame(const QString &gameName) const +{ + return m_Proxied->getGame(gameName); +} + +IModInterface *OrganizerProxy::createMod(MOBase::GuessedValue<QString> &name) +{ + return m_Proxied->createMod(name); +} + +void OrganizerProxy::modDataChanged(IModInterface *mod) +{ + m_Proxied->modDataChanged(mod); +} + +bool OrganizerProxy::isPluginEnabled(QString const& pluginName) const +{ + return m_PluginContainer->isEnabled(pluginName); +} + +bool OrganizerProxy::isPluginEnabled(IPlugin* plugin) const +{ + return m_PluginContainer->isEnabled(plugin); +} + +QVariant OrganizerProxy::pluginSetting(const QString &pluginName, const QString &key) const +{ + return m_Proxied->pluginSetting(pluginName, key); +} + +void OrganizerProxy::setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value) +{ + m_Proxied->setPluginSetting(pluginName, key, value); +} + +QVariant OrganizerProxy::persistent(const QString &pluginName, const QString &key, const QVariant &def) const +{ + return m_Proxied->persistent(pluginName, key, def); +} + +void OrganizerProxy::setPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync) +{ + m_Proxied->setPersistent(pluginName, key, value, sync); +} + +QString OrganizerProxy::pluginDataPath() const +{ + return OrganizerCore::pluginDataPath(); +} + +HANDLE OrganizerProxy::startApplication( + const QString& exe, const QStringList& args, const QString &cwd, + const QString& profile, const QString &overwrite, bool ignoreOverwrite) +{ + log::debug( + "a plugin has requested to start an application:\n" + " . executable: '{}'\n" + " . args: '{}'\n" + " . cwd: '{}'\n" + " . profile: '{}'\n" + " . overwrite: '{}'\n" + " . ignore overwrite: {}", + exe, args.join(" "), cwd, profile, overwrite, ignoreOverwrite); + + auto runner = m_Proxied->processRunner(); + + // don't wait for completion + runner + .setFromFileOrExecutable(exe, args, cwd, profile, overwrite, ignoreOverwrite) + .run(); + + // the plugin is in charge of closing the handle, unless waitForApplication() + // is called on it + return runner.stealProcessHandle().release(); +} + +bool OrganizerProxy::waitForApplication(HANDLE handle, bool refresh, LPDWORD exitCode) const +{ + const auto pid = ::GetProcessId(handle); + + log::debug( + "a plugin wants to wait for an application to complete, pid {}{}", + pid, (pid == 0 ? "unknown (probably already completed)" : "")); + + auto runner = m_Proxied->processRunner(); + + ProcessRunner::WaitFlags waitFlags = ProcessRunner::ForceWait; + + if (refresh) { + waitFlags |= ProcessRunner::TriggerRefresh | ProcessRunner::WaitForRefresh; + } + + const auto r = runner + .setWaitForCompletion(waitFlags, UILocker::OutputRequired) + .attachToProcess(handle); + + if (exitCode) { + *exitCode = runner.exitCode(); + } + + switch (r) + { + case ProcessRunner::Completed: + return true; + + case ProcessRunner::Cancelled: // fall-through + case ProcessRunner::ForceUnlocked: + // this is always an error because the application should have run to + // completion + return false; + + case ProcessRunner::Error: // fall-through + default: + return false; + } +} + +void OrganizerProxy::refresh(bool saveChanges) +{ + m_Proxied->refresh(saveChanges); +} + +IModInterface *OrganizerProxy::installMod(const QString &fileName, const QString &nameSuggestion) +{ + return m_Proxied->installMod(fileName, -1, false, nullptr, nameSuggestion); +} + +QString OrganizerProxy::resolvePath(const QString &fileName) const +{ + return m_Proxied->resolvePath(fileName); +} + +QStringList OrganizerProxy::listDirectories(const QString &directoryName) const +{ + return m_Proxied->listDirectories(directoryName); +} + +QStringList OrganizerProxy::findFiles(const QString &path, const std::function<bool(const QString&)> &filter) const +{ + return m_Proxied->findFiles(path, filter); +} + +QStringList OrganizerProxy::findFiles(const QString& path, const QStringList& globFilters) const +{ + QList<GlobPattern<QChar>> patterns; + for (auto& gfilter : globFilters) { + patterns.append(GlobPattern(gfilter)); + } + return findFiles(path, [&patterns](const QString& filename) { + for (auto& p : patterns) { + if (p.match(filename)) { + return true; + } + } + return false; + }); +} + +QStringList OrganizerProxy::getFileOrigins(const QString &fileName) const +{ + return m_Proxied->getFileOrigins(fileName); +} + +QList<MOBase::IOrganizer::FileInfo> OrganizerProxy::findFileInfos(const QString &path, const std::function<bool (const MOBase::IOrganizer::FileInfo &)> &filter) const +{ + return m_Proxied->findFileInfos(path, filter); +} + +std::shared_ptr<const MOBase::IFileTree> OrganizerProxy::virtualFileTree() const +{ + return m_Proxied->m_VirtualFileTree.value(); +} + +MOBase::IDownloadManager *OrganizerProxy::downloadManager() const +{ + return m_DownloadManagerProxy.get(); +} + +MOBase::IPluginList *OrganizerProxy::pluginList() const +{ + return m_PluginListProxy.get(); +} + +MOBase::IModList *OrganizerProxy::modList() const +{ + return m_ModListProxy.get(); +} + +MOBase::IProfile *OrganizerProxy::profile() const +{ + return m_Proxied->currentProfile(); +} + +MOBase::IPluginGame const *OrganizerProxy::managedGame() const +{ + return m_Proxied->managedGame(); +} + +// CALLBACKS + +bool OrganizerProxy::onAboutToRun(const std::function<bool(const QString&)>& func) +{ + return m_Proxied->onAboutToRun(MOShared::callIfPluginActive(this, func, true)).connected(); +} + +bool OrganizerProxy::onFinishedRun(const std::function<void(const QString&, unsigned int)>& func) +{ + return m_Proxied->onFinishedRun(MOShared::callIfPluginActive(this, func)).connected(); +} + +bool OrganizerProxy::onProfileCreated(std::function<void(IProfile*)> const& func) +{ + return m_ProfileCreated.connect(func).connected(); +} + +bool OrganizerProxy::onProfileRenamed(std::function<void(IProfile*, QString const&, QString const&)> const& func) +{ + return m_ProfileRenamed.connect(func).connected(); +} + +bool OrganizerProxy::onProfileRemoved(std::function<void(QString const&)> const& func) +{ + return m_ProfileRemoved.connect(func).connected(); +} + +bool OrganizerProxy::onProfileChanged(std::function<void(MOBase::IProfile*, MOBase::IProfile*)> const& func) +{ + return m_ProfileChanged.connect(func).connected(); +} + +bool OrganizerProxy::onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func) +{ + // Always call this one to allow plugin to initialize themselves even when not active: + return m_UserInterfaceInitialized.connect(func).connected(); +} + +// Always call these one, otherwise plugin cannot detect they are being enabled / disabled: +bool OrganizerProxy::onPluginSettingChanged(std::function<void(QString const&, const QString& key, const QVariant&, const QVariant&)> const& func) +{ + return m_PluginSettingChanged.connect(func).connected(); +} + +bool OrganizerProxy::onPluginEnabled(std::function<void(const IPlugin*)> const& func) +{ + return m_PluginEnabled.connect(func).connected(); +} + +bool OrganizerProxy::onPluginEnabled(const QString& pluginName, std::function<void()> const& func) +{ + return onPluginEnabled([=](const IPlugin* plugin) { + if (plugin->name().compare(pluginName, Qt::CaseInsensitive) == 0) { + func(); + } + }); +} + +bool OrganizerProxy::onPluginDisabled(std::function<void(const IPlugin*)> const& func) +{ + return m_PluginDisabled.connect(func).connected(); +} + +bool OrganizerProxy::onPluginDisabled(const QString& pluginName, std::function<void()> const& func) +{ + return onPluginDisabled([=](const IPlugin* plugin) { + if (plugin->name().compare(pluginName, Qt::CaseInsensitive) == 0) { + func(); + } + }); +} |
