From facb4e7fe4bcc30539ea3fc79a23ab217735a5ab Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Wed, 2 Dec 2020 21:04:18 +0100 Subject: Do not store installers in InstallationManager, use the ones from PluginContainer. --- src/installationmanager.cpp | 25 ++++++++++--------------- src/installationmanager.h | 15 --------------- src/plugincontainer.cpp | 5 ++++- 3 files changed, 14 insertions(+), 31 deletions(-) (limited to 'src') 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(); + + 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 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(); + 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(); + 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 @@ -128,12 +128,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. */ @@ -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 m_Installers; - // Archive management. std::unique_ptr 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(m_Plugins)) { tool->setParentWidget(userInterface->mainWindow()); } + for (IPluginInstaller* installer : bf::at_key(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(m_Plugins).push_back(installer); if (m_Organizer) { - m_Organizer->installationManager()->registerInstaller(installer); + installer->setInstallationManager(m_Organizer->installationManager()); } return installer; } -- cgit v1.3.1