From 965107fd024be86eb014ee360211a66b320a3b43 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Wed, 21 Dec 2011 21:45:46 +0100 Subject: [PATCH] Update previews when the preview-plugin settings have changed Thanks to Janardhan Reddy for the initial patch. BUG: 288726 FIXED-IN: 4.8.0 --- src/kitemviews/kfileitemlistview.cpp | 17 +++++++++++++---- src/kitemviews/kfileitemlistview.h | 17 +++++++++++++++++ src/kitemviews/kfileitemmodelrolesupdater.cpp | 11 +++++++++++ src/kitemviews/kfileitemmodelrolesupdater.h | 5 +---- src/views/dolphinitemlistcontainer.cpp | 7 +++++++ 5 files changed, 49 insertions(+), 8 deletions(-) diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp index e2bde3b12..89fec9d0f 100644 --- a/src/kitemviews/kfileitemlistview.cpp +++ b/src/kitemviews/kfileitemlistview.cpp @@ -107,6 +107,18 @@ KFileItemListView::Layout KFileItemListView::itemLayout() const return m_itemLayout; } +void KFileItemListView::setEnabledPlugins(const QStringList& list) +{ + if (m_modelRolesUpdater) { + m_modelRolesUpdater->setEnabledPlugins(list); + } +} + +QStringList KFileItemListView::enabledPlugins() const +{ + return m_modelRolesUpdater ? m_modelRolesUpdater->enabledPlugins() : QStringList(); +} + QSizeF KFileItemListView::itemSizeHint(int index) const { const QHash values = model()->data(index); @@ -333,10 +345,7 @@ void KFileItemListView::onModelChanged(KItemModelBase* current, KItemModelBase* Q_UNUSED(previous); Q_ASSERT(qobject_cast(current)); - if (m_modelRolesUpdater) { - delete m_modelRolesUpdater; - } - + delete m_modelRolesUpdater; m_modelRolesUpdater = new KFileItemModelRolesUpdater(static_cast(current), this); const int size = styleOption().iconSize; m_modelRolesUpdater->setIconSize(QSize(size, size)); diff --git a/src/kitemviews/kfileitemlistview.h b/src/kitemviews/kfileitemlistview.h index a41d091b7..203fb78c4 100644 --- a/src/kitemviews/kfileitemlistview.h +++ b/src/kitemviews/kfileitemlistview.h @@ -57,6 +57,23 @@ public: void setItemLayout(Layout layout); Layout itemLayout() const; + /** + * Sets the list of enabled thumbnail plugins that are used for previews. + * Per default all plugins enabled in the KConfigGroup "PreviewSettings" + * are used. + * + * For a list of available plugins, call KServiceTypeTrader::self()->query("ThumbCreator"). + * + * @see enabledPlugins + */ + void setEnabledPlugins(const QStringList& list); + + /** + * Returns the list of enabled thumbnail plugins. + * @see setEnabledPlugins + */ + QStringList enabledPlugins() const; + /** @reimp */ virtual QSizeF itemSizeHint(int index) const; diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 4fe45624c..671352cac 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -169,7 +169,18 @@ bool KFileItemModelRolesUpdater::isPreviewShown() const void KFileItemModelRolesUpdater::setEnabledPlugins(const QStringList& list) { + if (m_enabledPlugins == list) { + return; + } + m_enabledPlugins = list; + if (m_previewShown) { + if (m_paused) { + m_previewChangedDuringPausing = true; + } else { + sortAndResolveAllRoles(); + } + } } void KFileItemModelRolesUpdater::setPaused(bool paused) diff --git a/src/kitemviews/kfileitemmodelrolesupdater.h b/src/kitemviews/kfileitemmodelrolesupdater.h index 993cc5244..065f069c8 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.h +++ b/src/kitemviews/kfileitemmodelrolesupdater.h @@ -82,13 +82,10 @@ public: QSet roles() const; /** - * Sets the list of enabled thumbnail plugins. + * Sets the list of enabled thumbnail plugins that are used for previews. * Per default all plugins enabled in the KConfigGroup "PreviewSettings" * are used. * - * Note that this method doesn't cause already generated previews - * to be regenerated. - * * For a list of available plugins, call KServiceTypeTrader::self()->query("ThumbCreator"). * * @see enabledPlugins diff --git a/src/views/dolphinitemlistcontainer.cpp b/src/views/dolphinitemlistcontainer.cpp index 870043bc4..9e7a15f74 100644 --- a/src/views/dolphinitemlistcontainer.cpp +++ b/src/views/dolphinitemlistcontainer.cpp @@ -176,6 +176,13 @@ void DolphinItemListContainer::refresh() updateFont(); updateGridSize(); + + const KConfigGroup globalConfig(KGlobal::config(), "PreviewSettings"); + const QStringList plugins = globalConfig.readEntry("Plugins", QStringList() + << "directorythumbnail" + << "imagethumbnail" + << "jpegthumbnail"); + m_fileItemListView->setEnabledPlugins(plugins); } void DolphinItemListContainer::updateGridSize() -- 2.47.3