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; }