summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/installationmanager.cpp25
-rw-r--r--src/installationmanager.h15
-rw-r--r--src/plugincontainer.cpp5
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;
}