summaryrefslogtreecommitdiff
path: root/src/previewgenerator.cpp
diff options
context:
space:
mode:
authorJeremy Rimpo <jeremy.rimpo@servermonkey.com>2024-07-11 09:46:29 -0500
committerGitHub <noreply@github.com>2024-07-11 16:46:29 +0200
commit193442e77362edfdb55636f907a14098be59fd2a (patch)
tree9b2a1726857cedc6785afcec942a6e696f498ce7 /src/previewgenerator.cpp
parenta4f6298111b9b4518d00e6df3a53dd176858dd34 (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.cpp22
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;
+}