diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-12-04 08:03:40 +0100 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-12-04 08:03:40 +0100 |
| commit | f229dbaaa7f516dc1958d0a0555b47cb17136377 (patch) | |
| tree | df4cb8f32ac0dcc673c0c77a2774466074766e0e | |
| parent | a6654eaec8190d7f9297a35499f8271a8f28176c (diff) | |
Do not store the list of preview plugins in PreviewGenerator.
| -rw-r--r-- | src/plugincontainer.cpp | 1 | ||||
| -rw-r--r-- | src/previewgenerator.cpp | 31 | ||||
| -rw-r--r-- | src/previewgenerator.h | 8 |
3 files changed, 15 insertions, 25 deletions
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<IPluginPreview*>(plugin);
if (initPlugin(preview, pluginProxy, skipInit)) {
bf::at_key<IPluginPreview>(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 <http://www.gnu.org/licenses/>. #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<IPluginPreview>();
+ 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<IPluginPreview>();
+ 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<QString, MOBase::IPluginPreview*> m_PreviewPlugins;
QSize m_MaxSize;
};
|
