diff options
| -rw-r--r-- | src/installationmanager.cpp | 25 | ||||
| -rw-r--r-- | src/installationmanager.h | 15 | ||||
| -rw-r--r-- | src/plugincontainer.cpp | 5 |
3 files changed, 14 insertions, 31 deletions
diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp index 078f7088..e9324b41 100644 --- a/src/installationmanager.cpp +++ b/src/installationmanager.cpp @@ -117,9 +117,6 @@ InstallationManager::~InstallationManager() void InstallationManager::setParentWidget(QWidget *widget) { m_ParentWidget = widget; - for (IPluginInstaller *installer : m_Installers) { - installer->setParentWidget(widget); - } } void InstallationManager::setPluginContainer(const PluginContainer* pluginContainer) @@ -700,11 +697,13 @@ IPluginInstaller::EInstallResult InstallationManager::install(const QString &fil archiveOpen ? ArchiveFileTree::makeTree(*m_ArchiveHandler) : nullptr; IPluginInstaller::EInstallResult installResult = IPluginInstaller::RESULT_NOTATTEMPTED; - std::sort(m_Installers.begin(), m_Installers.end(), [] (IPluginInstaller *LHS, IPluginInstaller *RHS) { - return LHS->priority() > RHS->priority(); - }); + auto installers = m_PluginContainer->plugins<IPluginInstaller>(); + + std::sort(installers.begin(), installers.end(), [] (IPluginInstaller* lhs, IPluginInstaller* rhs) { + return lhs->priority() > rhs->priority(); + }); - for (IPluginInstaller *installer : m_Installers) { + for (IPluginInstaller *installer : installers) { // don't use inactive installers (installer can't be null here but vc static code analysis thinks it could) if ((installer == nullptr) || !m_PluginContainer->isEnabled(installer)) { continue; @@ -846,12 +845,6 @@ QString InstallationManager::getErrorString(Archive::Error errorCode) } } -void InstallationManager::registerInstaller(IPluginInstaller *installer) -{ - m_Installers.push_back(installer); - installer->setInstallationManager(this); -} - QStringList InstallationManager::getSupportedExtensions() const { std::set<QString, CaseInsensitive> supportedExtensions({ "zip", "rar", "7z", "fomod", "001" }); @@ -868,7 +861,8 @@ QStringList InstallationManager::getSupportedExtensions() const void InstallationManager::notifyInstallationStart(QString const& archive, bool reinstallation, ModInfo::Ptr currentMod) { - for (auto* installer : m_Installers) { + auto& installers = m_PluginContainer->plugins<IPluginInstaller>(); + for (auto* installer : installers) { if (m_PluginContainer->isEnabled(installer)) { installer->onInstallationStart(archive, reinstallation, currentMod.get()); } @@ -879,7 +873,8 @@ void InstallationManager::notifyInstallationEnd( MOBase::IPluginInstaller::EInstallResult result, ModInfo::Ptr newMod) { - for (auto* installer : m_Installers) { + auto& installers = m_PluginContainer->plugins<IPluginInstaller>(); + for (auto* installer : installers) { if (m_PluginContainer->isEnabled(installer)) { installer->onInstallationEnd(result, newMod.get()); } diff --git a/src/installationmanager.h b/src/installationmanager.h index 2378178a..277c276a 100644 --- a/src/installationmanager.h +++ b/src/installationmanager.h @@ -129,12 +129,6 @@ public: static QString getErrorString(Archive::Error errorCode); /** - * @brief register an installer-plugin - * @param the installer to register - */ - void registerInstaller(MOBase::IPluginInstaller *installer); - - /** * @return the extensions of archives supported by this installation manager. */ QStringList getSupportedExtensions() const override; @@ -256,13 +250,6 @@ signals: private: - struct ByPriority { - bool operator()(MOBase::IPluginInstaller *LHS, MOBase::IPluginInstaller *RHS) const - { - return LHS->priority() > RHS->priority(); - } - }; - struct CaseInsensitive { bool operator() (const QString &LHS, const QString &RHS) const { @@ -295,8 +282,6 @@ private: QString m_ModsDirectory; QString m_DownloadsDirectory; - std::vector<MOBase::IPluginInstaller*> m_Installers; - // Archive management. std::unique_ptr<Archive> m_ArchiveHandler; QString m_CurrentFile; diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp index 5a485dfe..1fb8638f 100644 --- a/src/plugincontainer.cpp +++ b/src/plugincontainer.cpp @@ -301,6 +301,9 @@ void PluginContainer::setUserInterface(IUserInterface *userInterface) for (IPluginTool* tool : bf::at_key<IPluginTool>(m_Plugins)) {
tool->setParentWidget(userInterface->mainWindow());
}
+ for (IPluginInstaller* installer : bf::at_key<IPluginInstaller>(m_Plugins)) {
+ installer->setParentWidget(userInterface->mainWindow());
+ }
}
m_UserInterface = userInterface;
@@ -537,7 +540,7 @@ IPlugin* PluginContainer::registerPlugin(QObject *plugin, const QString &fileNam if (initPlugin(installer, pluginProxy, skipInit)) {
bf::at_key<IPluginInstaller>(m_Plugins).push_back(installer);
if (m_Organizer) {
- m_Organizer->installationManager()->registerInstaller(installer);
+ installer->setInstallationManager(m_Organizer->installationManager());
}
return installer;
}
|
