From: Peter Penz Date: Sun, 4 Apr 2010 22:51:39 +0000 (+0000) Subject: Do expensive loading operations in the Dolphin Preferences when getting the QShowEven... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/04a30d8803ea728a787fc33ed2870967427ab953?ds=inline 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 --- 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() diff --git a/src/settings/previewssettingspage.h b/src/settings/previewssettingspage.h index bcd21ffcb..e9a80af1e 100644 --- a/src/settings/previewssettingspage.h +++ b/src/settings/previewssettingspage.h @@ -50,7 +50,10 @@ public: virtual void restoreDefaults(); protected: - virtual bool event(QEvent* event); + virtual void showEvent(QShowEvent* event); + +private slots: + void loadPreviewPlugins(); private: void loadSettings(); diff --git a/src/settings/servicessettingspage.cpp b/src/settings/servicessettingspage.cpp index 14de2d4ae..98b26e358 100644 --- a/src/settings/servicessettingspage.cpp +++ b/src/settings/servicessettingspage.cpp @@ -34,12 +34,12 @@ #include #include -#include #include #include #include #include #include +#include ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : SettingsPageBase(parent), @@ -131,14 +131,14 @@ void ServicesSettingsPage::restoreDefaults() } } -bool ServicesSettingsPage::event(QEvent* event) +void ServicesSettingsPage::showEvent(QShowEvent* event) { - if ((event->type() == QEvent::Polish) && !m_initialized) { + if (!event->spontaneous() && !m_initialized) { QMetaObject::invokeMethod(this, "loadServices", Qt::QueuedConnection); QMetaObject::invokeMethod(this, "loadVersionControlSystems", Qt::QueuedConnection); m_initialized = true; } - return SettingsPageBase::event(event); + SettingsPageBase::showEvent(event); } void ServicesSettingsPage::loadServices() diff --git a/src/settings/servicessettingspage.h b/src/settings/servicessettingspage.h index d2787e09b..cb526460f 100644 --- a/src/settings/servicessettingspage.h +++ b/src/settings/servicessettingspage.h @@ -46,7 +46,7 @@ public: virtual void restoreDefaults(); protected: - virtual bool event(QEvent* event); + virtual void showEvent(QShowEvent* event); private slots: /**