diff options
| author | Jeremy Rimpo <jeremy.rimpo@servermonkey.com> | 2024-07-11 09:46:29 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-11 16:46:29 +0200 |
| commit | 193442e77362edfdb55636f907a14098be59fd2a (patch) | |
| tree | 9b2a1726857cedc6785afcec942a6e696f498ce7 /src/previewgenerator.cpp | |
| parent | a4f6298111b9b4518d00e6df3a53dd176858dd34 (diff) | |
Archive preview support (#2056)
* Support for archive file previews
- Should account for alternates
- Extracts files and requests preview from plugins that claim support
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; +} |
