From 04a30d8803ea728a787fc33ed2870967427ab953 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 4 Apr 2010 22:51:39 +0000 Subject: Do expensive loading operations in the Dolphin Preferences when getting the QShowEvent and not the QPolish event. svn path=/trunk/KDE/kdebase/apps/; revision=1111143 --- src/settings/previewssettingspage.cpp | 48 ++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 23 deletions(-) (limited to 'src/settings/previewssettingspage.cpp') diff --git a/src/settings/previewssettingspage.cpp b/src/settings/previewssettingspage.cpp index 9ddb2ad0f..4313cbf29 100644 --- a/src/settings/previewssettingspage.cpp +++ b/src/settings/previewssettingspage.cpp @@ -22,15 +22,6 @@ #include "dolphin_generalsettings.h" -#include -#include -#include -#include -#include -#include -#include -#include - #include #include #include @@ -39,7 +30,15 @@ #include #include #include -#include + +#include +#include +#include +#include +#include +#include +#include +#include // default settings const bool USE_THUMBNAILS = true; @@ -138,22 +137,25 @@ void PreviewsSettingsPage::restoreDefaults() m_useFileThumbnails->setChecked(USE_THUMBNAILS); } -bool PreviewsSettingsPage::event(QEvent* event) +void PreviewsSettingsPage::showEvent(QShowEvent* event) { - if ((event->type() == QEvent::Polish) && !m_initialized) { - // load all available plugins for previews - const KService::List plugins = KServiceTypeTrader::self()->query("ThumbCreator"); - foreach (const KSharedPtr& service, plugins) { - QListWidgetItem* item = new QListWidgetItem(service->name(), - m_previewPluginsList); - item->setData(Qt::UserRole, service->desktopEntryName()); - const bool show = m_enabledPreviewPlugins.contains(service->desktopEntryName()); - item->setCheckState(show ? Qt::Checked : Qt::Unchecked); - } - + if (!event->spontaneous() && !m_initialized) { + QMetaObject::invokeMethod(this, "loadPreviewPlugins", Qt::QueuedConnection); m_initialized = true; } - return SettingsPageBase::event(event); + SettingsPageBase::showEvent(event); +} + +void PreviewsSettingsPage::loadPreviewPlugins() +{ + const KService::List plugins = KServiceTypeTrader::self()->query("ThumbCreator"); + foreach (const KSharedPtr& service, plugins) { + QListWidgetItem* item = new QListWidgetItem(service->name(), + m_previewPluginsList); + item->setData(Qt::UserRole, service->desktopEntryName()); + const bool show = m_enabledPreviewPlugins.contains(service->desktopEntryName()); + item->setCheckState(show ? Qt::Checked : Qt::Unchecked); + } } void PreviewsSettingsPage::loadSettings() -- cgit v1.3