From f229dbaaa7f516dc1958d0a0555b47cb17136377 Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Fri, 4 Dec 2020 08:03:40 +0100 Subject: Do not store the list of preview plugins in PreviewGenerator. --- src/plugincontainer.cpp | 1 - src/previewgenerator.cpp | 31 +++++++++++++++---------------- src/previewgenerator.h | 8 -------- 3 files changed, 15 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp index 1bcf7243..9b73a964 100644 --- a/src/plugincontainer.cpp +++ b/src/plugincontainer.cpp @@ -560,7 +560,6 @@ IPlugin* PluginContainer::registerPlugin(QObject *plugin, const QString& filepat IPluginPreview *preview = qobject_cast(plugin); if (initPlugin(preview, pluginProxy, skipInit)) { bf::at_key(m_Plugins).push_back(preview); - m_PreviewGenerator.registerPlugin(preview); return preview; } } diff --git a/src/previewgenerator.cpp b/src/previewgenerator.cpp index c7df5a25..904d679f 100644 --- a/src/previewgenerator.cpp +++ b/src/previewgenerator.cpp @@ -27,33 +27,32 @@ along with Mod Organizer. If not, see . #include "plugincontainer.h" +using namespace MOBase; + PreviewGenerator::PreviewGenerator(const PluginContainer* pluginContainer) : m_PluginContainer(pluginContainer) { m_MaxSize = QGuiApplication::primaryScreen()->size() * 0.8; } -void PreviewGenerator::registerPlugin(MOBase::IPluginPreview *plugin) -{ - for (const QString &extension : plugin->supportedExtensions()) { - m_PreviewPlugins.insert(std::make_pair(extension, plugin)); - } -} - bool PreviewGenerator::previewSupported(const QString &fileExtension) const { - auto it = m_PreviewPlugins.find(fileExtension.toLower()); - if (it == m_PreviewPlugins.end()) { - return false; + auto& previews = m_PluginContainer->plugins(); + for (auto* preview : previews) { + if (preview->supportedExtensions().contains(fileExtension)) { + return true; + } } - return m_PluginContainer->isEnabled(it->second); + return false; } QWidget *PreviewGenerator::genPreview(const QString &fileName) const { - auto iter = m_PreviewPlugins.find(QFileInfo(fileName).suffix().toLower()); - if (iter != m_PreviewPlugins.end() && m_PluginContainer->isEnabled(iter->second)) { - return iter->second->genFilePreview(fileName, m_MaxSize); - } else { - return nullptr; + const QString ext = QFileInfo(fileName).suffix().toLower(); + auto& previews = m_PluginContainer->plugins(); + for (auto* preview : previews) { + if (m_PluginContainer->isEnabled(preview) && preview->supportedExtensions().contains(ext)) { + return preview->genFilePreview(fileName, m_MaxSize); + } } + return nullptr; } diff --git a/src/previewgenerator.h b/src/previewgenerator.h index 0d8f0781..f70649b5 100644 --- a/src/previewgenerator.h +++ b/src/previewgenerator.h @@ -33,21 +33,13 @@ class PreviewGenerator public: PreviewGenerator(const PluginContainer* pluginContainer); - void registerPlugin(MOBase::IPluginPreview *plugin); - bool previewSupported(const QString &fileExtension) const; QWidget *genPreview(const QString &fileName) const; -private: - - QWidget *genImagePreview(const QString &fileName) const; - QWidget *genTxtPreview(const QString &fileName) const; - private: const PluginContainer* m_PluginContainer; - std::map m_PreviewPlugins; QSize m_MaxSize; }; -- cgit v1.3.1