diff options
| author | Seth Riley <17361645+Qudix@users.noreply.github.com> | 2020-12-01 15:55:50 -0600 |
|---|---|---|
| committer | Seth Riley <17361645+Qudix@users.noreply.github.com> | 2020-12-01 15:55:50 -0600 |
| commit | 852d8745a1ac3ef2aaa83ae21d473d20428d7d30 (patch) | |
| tree | 7ff242377cd3ec72571cd96cd631c28bbaac6470 /src/organizercore.cpp | |
| parent | 60688ecf5bc6e44795472cb22888ec5994a904a8 (diff) | |
| parent | 1ec3ab2b8a845f75495b4cacbeb17c86ea137a01 (diff) | |
Merge https://github.com/ModOrganizer2/modorganizer into ignore_alt
Diffstat (limited to 'src/organizercore.cpp')
| -rw-r--r-- | src/organizercore.cpp | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/organizercore.cpp b/src/organizercore.cpp index f57903e2..a9e62e77 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -287,6 +287,7 @@ void OrganizerCore::connectPlugins(PluginContainer *container) m_InstallationManager.getSupportedExtensions()); m_PluginContainer = container; m_Updater.setPluginContainer(m_PluginContainer); + m_InstallationManager.setPluginContainer(m_PluginContainer); m_DownloadManager.setPluginContainer(m_PluginContainer); m_ModList.setPluginContainer(m_PluginContainer); @@ -294,6 +295,11 @@ void OrganizerCore::connectPlugins(PluginContainer *container) m_GamePlugin = m_PluginContainer->managedGame(m_GameName); emit managedGameChanged(m_GamePlugin); } + + connect(m_PluginContainer, &PluginContainer::pluginEnabled, + [&](IPlugin* plugin) { m_PluginEnabled(plugin); }); + connect(m_PluginContainer, &PluginContainer::pluginDisabled, + [&](IPlugin* plugin) { m_PluginDisabled(plugin); }); } void OrganizerCore::disconnectPlugins() @@ -959,13 +965,13 @@ QStringList OrganizerCore::findFiles( { QStringList result; DirectoryEntry *dir = m_DirectoryStructure; - if (!path.isEmpty()) + if (!path.isEmpty() && path != ".") dir = dir->findSubDirectoryRecursive(ToWString(path)); if (dir != nullptr) { std::vector<FileEntryPtr> files = dir->getFiles(); for (FileEntryPtr &file: files) { QString fullPath = ToQString(file->getFullPath()); - if (filter(fullPath)) { + if (filter(ToQString(file->getName()))) { result.append(fullPath); } } @@ -1224,6 +1230,16 @@ bool OrganizerCore::onPluginSettingChanged(std::function<void(QString const&, co return m_PluginSettingChanged.connect(func).connected(); } +bool OrganizerCore::onPluginEnabled(std::function<void(const IPlugin*)> const& func) +{ + return m_PluginEnabled.connect(func).connected(); +} + +bool OrganizerCore::onPluginDisabled(std::function<void(const IPlugin*)> const& func) +{ + return m_PluginDisabled.connect(func).connected(); +} + void OrganizerCore::refresh(bool saveChanges) { // don't lose changes! @@ -1449,10 +1465,13 @@ void OrganizerCore::loggedInAction(QWidget* parent, std::function<void ()> f) void OrganizerCore::requestDownload(const QUrl &url, QNetworkReply *reply) { - if (m_PluginContainer != nullptr) { - for (IPluginModPage *modPage : - m_PluginContainer->plugins<MOBase::IPluginModPage>()) { - ModRepositoryFileInfo *fileInfo = new ModRepositoryFileInfo(); + if (!m_PluginContainer) { + return; + } + for (IPluginModPage *modPage : + m_PluginContainer->plugins<MOBase::IPluginModPage>()) { + if (m_PluginContainer->isEnabled(modPage)) { + ModRepositoryFileInfo* fileInfo = new ModRepositoryFileInfo(); if (modPage->handlesDownload(url, reply->url(), *fileInfo)) { fileInfo->repository = modPage->name(); m_DownloadManager.addDownload(reply, fileInfo); @@ -2040,7 +2059,7 @@ std::vector<Mapping> OrganizerCore::fileMapping(const QString &profileName, for (MOBase::IPluginFileMapper *mapper : m_PluginContainer->plugins<MOBase::IPluginFileMapper>()) { IPlugin *plugin = dynamic_cast<IPlugin *>(mapper); - if (plugin->isActive()) { + if (m_PluginContainer->isEnabled(plugin)) { MappingType pluginMap = mapper->mappings(); result.reserve(result.size() + pluginMap.size()); result.insert(result.end(), pluginMap.begin(), pluginMap.end()); |
