diff options
Diffstat (limited to 'src/previewgenerator.cpp')
| -rw-r--r-- | src/previewgenerator.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/previewgenerator.cpp b/src/previewgenerator.cpp index ba73c065..dad41c2f 100644 --- a/src/previewgenerator.cpp +++ b/src/previewgenerator.cpp @@ -35,12 +35,16 @@ PreviewGenerator::PreviewGenerator(const PluginContainer& pluginContainer) m_MaxSize = QGuiApplication::primaryScreen()->size() * 0.8; } -bool PreviewGenerator::previewSupported(const QString& fileExtension) const +bool PreviewGenerator::previewSupported(const QString& fileExtension, + const bool& isArchive) const { auto& previews = m_PluginContainer.plugins<IPluginPreview>(); for (auto* preview : previews) { if (preview->supportedExtensions().contains(fileExtension)) { - return true; + if (!isArchive) + return true; + if (preview->supportsArchives()) + return true; } } return false; @@ -58,3 +62,17 @@ QWidget* PreviewGenerator::genPreview(const QString& fileName) const } return nullptr; } + +QWidget* PreviewGenerator::genArchivePreview(const QByteArray& fileData, + const QString& fileName) const +{ + 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) && preview->supportsArchives()) { + return preview->genDataPreview(fileData, fileName, m_MaxSize); + } + } + return nullptr; +} |
