summaryrefslogtreecommitdiff
path: root/src/installationmanager.cpp
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-12-02 21:04:18 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2020-12-02 21:04:18 +0100
commitfacb4e7fe4bcc30539ea3fc79a23ab217735a5ab (patch)
tree141b895c38c07196870b29469543d13e0e450440 /src/installationmanager.cpp
parent90154e621af03bc0464a17821f56385e6b0f6ac5 (diff)
Do not store installers in InstallationManager, use the ones from PluginContainer.
Diffstat (limited to 'src/installationmanager.cpp')
-rw-r--r--src/installationmanager.cpp25
1 files changed, 10 insertions, 15 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());
}