┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-04-04 22:51:39 +0000
committerPeter Penz <[email protected]>2010-04-04 22:51:39 +0000
commit04a30d8803ea728a787fc33ed2870967427ab953 (patch)
treee7051ebc5543f926f74066b065de04a92dd45efa
parent110cbf5b2777d5451ec83ac42a8c83692d1aa3a9 (diff)
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
-rw-r--r--src/settings/previewssettingspage.cpp48
-rw-r--r--src/settings/previewssettingspage.h5
-rw-r--r--src/settings/servicessettingspage.cpp8
-rw-r--r--src/settings/servicessettingspage.h2
4 files changed, 34 insertions, 29 deletions
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 <QCheckBox>
-#include <QEvent>
-#include <QGroupBox>
-#include <QLabel>
-#include <QListWidget>
-#include <QRadioButton>
-#include <QSlider>
-#include <QBoxLayout>
-
#include <kconfiggroup.h>
#include <kdialog.h>
#include <kglobal.h>
@@ -39,7 +30,15 @@
#include <KNumInput>
#include <kservicetypetrader.h>
#include <kservice.h>
-#include <kvbox.h>
+
+#include <QCheckBox>
+#include <QGroupBox>
+#include <QLabel>
+#include <QListWidget>
+#include <QRadioButton>
+#include <QShowEvent>
+#include <QSlider>
+#include <QBoxLayout>
// 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<KService>& 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<KService>& 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 <kstandarddirs.h>
#include <QCheckBox>
-#include <QEvent>
#include <QGridLayout>
#include <QGroupBox>
#include <QLabel>
#include <QListWidget>
#include <QPushButton>
+#include <QShowEvent>
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:
/**