]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Do expensive loading operations in the Dolphin Preferences when getting the QShowEven...
authorPeter Penz <peter.penz19@gmail.com>
Sun, 4 Apr 2010 22:51:39 +0000 (22:51 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 4 Apr 2010 22:51:39 +0000 (22:51 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1111143

src/settings/previewssettingspage.cpp
src/settings/previewssettingspage.h
src/settings/servicessettingspage.cpp
src/settings/servicessettingspage.h

index 9ddb2ad0fad5d165d5cdcdee32335493594a5217..4313cbf29727f01038311dc9835370f4d85fe232 100644 (file)
 
 #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>
 #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()
index bcd21ffcb32b53287e1c42cb0da0b559d4dff35e..e9a80af1e4abe09301efc785bcdd3dda4f069f67 100644 (file)
@@ -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();
index 14de2d4ae90eadda61f09e8049942dfb0484f5fc..98b26e3581eaea1f6e8bf5c079b2c9c39b59359c 100644 (file)
 #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()
index d2787e09b5568803e1b56818f6fa0638333bfbbd..cb526460fa7d649a899bbba2ea18cfc66b59bc42 100644 (file)
@@ -46,7 +46,7 @@ public:
     virtual void restoreDefaults();
 
 protected:
-    virtual bool event(QEvent* event);
+    virtual void showEvent(QShowEvent* event);
 
 private slots:
     /**