diff --git a/containments/desktop/package/contents/config/main.xml b/containments/desktop/package/contents/config/main.xml
--- a/containments/desktop/package/contents/config/main.xml
+++ b/containments/desktop/package/contents/config/main.xml
@@ -91,8 +91,8 @@
true
-
- imagethumbnail,jpegthumbnail
+
+
diff --git a/containments/desktop/plugins/folder/foldermodel.h b/containments/desktop/plugins/folder/foldermodel.h
--- a/containments/desktop/plugins/folder/foldermodel.h
+++ b/containments/desktop/plugins/folder/foldermodel.h
@@ -343,7 +343,11 @@
bool m_sortDirsFirst;
bool m_parseDesktopFiles;
bool m_previews;
+ // An empty previewPlugin list means use default.
+ // We don't want to leak that fact to the QML side, however, so the property stays empty
+ // and internally we operate on effectivePreviewPlugins instead.
QStringList m_previewPlugins;
+ QStringList m_effectivePreviewPlugins;
FilterMode m_filterMode;
QString m_filterPattern;
bool m_filterPatternMatchAll;
diff --git a/containments/desktop/plugins/folder/foldermodel.cpp b/containments/desktop/plugins/folder/foldermodel.cpp
--- a/containments/desktop/plugins/folder/foldermodel.cpp
+++ b/containments/desktop/plugins/folder/foldermodel.cpp
@@ -70,6 +70,7 @@
#include
#include
#include
+#include
#include
#include
@@ -513,7 +514,7 @@
if (m_viewAdapter && !m_previewGenerator) {
m_previewGenerator = new KFilePreviewGenerator(abstractViewAdapter, this);
m_previewGenerator->setPreviewShown(m_previews);
- m_previewGenerator->setEnabledPlugins(m_previewPlugins);
+ m_previewGenerator->setEnabledPlugins(m_effectivePreviewPlugins);
}
emit viewAdapterChanged();
@@ -545,15 +546,23 @@
void FolderModel::setPreviewPlugins(const QStringList& previewPlugins)
{
- if (m_previewPlugins != previewPlugins) {
- m_previewPlugins = previewPlugins;
+ QStringList effectivePlugins = previewPlugins;
+ if (effectivePlugins.isEmpty()) {
+ effectivePlugins = KIO::PreviewJob::defaultPlugins();
+ }
+
+ if (m_effectivePreviewPlugins != effectivePlugins) {
+ m_effectivePreviewPlugins = effectivePlugins;
if (m_previewGenerator) {
m_previewGenerator->setPreviewShown(false);
- m_previewGenerator->setEnabledPlugins(m_previewPlugins);
+ m_previewGenerator->setEnabledPlugins(m_effectivePreviewPlugins);
m_previewGenerator->setPreviewShown(true);
}
+ }
+ if (m_previewPlugins != previewPlugins) {
+ m_previewPlugins = previewPlugins;
emit previewPluginsChanged();
}
}
diff --git a/containments/desktop/plugins/folder/previewpluginsmodel.cpp b/containments/desktop/plugins/folder/previewpluginsmodel.cpp
--- a/containments/desktop/plugins/folder/previewpluginsmodel.cpp
+++ b/containments/desktop/plugins/folder/previewpluginsmodel.cpp
@@ -22,6 +22,10 @@
#include
+#include
+
+#include
+
static bool lessThan(const KService::Ptr &a, const KService::Ptr &b)
{
return QString::localeAwareCompare(a->name(), b->name()) < 0;
@@ -92,9 +96,14 @@
void PreviewPluginsModel::setCheckedPlugins(const QStringList &list)
{
+ QStringList plugins = list;
+ if (plugins.isEmpty()) {
+ plugins = KIO::PreviewJob::defaultPlugins();
+ }
+
m_checkedRows = QVector(m_plugins.size(), false);
- foreach (const QString &name, list) {
+ for (const QString &name : plugins) {
const int row = indexOfPlugin(name);
if (row != -1) {
m_checkedRows[row] = true;
@@ -114,5 +123,15 @@
list.append(m_plugins.at(i)->desktopEntryName());
}
}
+
+ const QStringList defaultPlugins = KIO::PreviewJob::defaultPlugins();
+
+ // If the list of checked plugins is the default set, return an empty list
+ // which denotes the default set.
+ // This ensures newly installed thumbnails are always automatically enabled.
+ if (std::is_permutation(list.constBegin(), list.constEnd(), defaultPlugins.begin())) {
+ return QStringList();
+ }
+
return list;
}