]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Postpone the initialization of the filter-panel until it is shown. This prevents...
authorPeter Penz <peter.penz19@gmail.com>
Wed, 27 Oct 2010 18:31:39 +0000 (18:31 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Wed, 27 Oct 2010 18:31:39 +0000 (18:31 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1190460

src/dolphinmainwindow.cpp
src/panels/filter/filterpanel.cpp
src/panels/filter/filterpanel.h

index 54e6d8b6c39394bff578547e006c4d7dea2146b9..043f70f126681e699ce0a6355c0c4d17de793067 100644 (file)
@@ -1178,7 +1178,7 @@ void DolphinMainWindow::slotHandleUrlStatFinished(KJob* job)
     m_lastHandleUrlStatJob = 0;
     const KIO::UDSEntry entry = static_cast<KIO::StatJob*>(job)->statResult();
     const KUrl url = static_cast<KIO::StatJob*>(job)->url();
-    if ( entry.isDir() ) {
+    if (entry.isDir()) {
         activeViewContainer()->setUrl(url);
     } else {
         new KRun(url, this);
index 44cac7ecf870cbd5739735e10333e4af28be144e..42bb09ced30e59f5fed1449e05645aedb9a05ff8 100644 (file)
 #include <kio/jobclasses.h>
 #include <kio/job.h>
 
-#include <QtGui/QVBoxLayout>
-#include <QtGui/QTreeView>
-#include <QtGui/QPushButton>
+#include <QPushButton>
+#include <QShowEvent>
+#include <QTreeView>
+#include <QVBoxLayout>
 
 FilterPanel::FilterPanel(QWidget* parent) :
-    Panel(parent)
+    Panel(parent),
+    m_initialized(false),
+    m_lastSetUrlStatJob(0),
+    m_removeFolderRestrictionButton(0),
+    m_facetWidget(0),
+    m_unfacetedRestQuery()
 {
-    QVBoxLayout* layout = new QVBoxLayout(this);
-    m_removeFolderRestrictionButton = new QPushButton(i18n("Remove folder restriction"), this);
-    connect(m_removeFolderRestrictionButton, SIGNAL(clicked()), SLOT(slotRemoveFolderRestrictionClicked()));
-
-    layout->addWidget(m_removeFolderRestrictionButton);
-
-    m_facetWidget = new Nepomuk::Utils::FacetWidget(this);
-    layout->addWidget(m_facetWidget, 1);
-    connect(m_facetWidget, SIGNAL(facetsChanged()), this, SLOT(slotFacetsChanged()));
-
-    /*m_facetWidget->addFacet(Nepomuk::Utils::Facet::createFileTypeFacet());
-    m_facetWidget->addFacet(Nepomuk::Utils::Facet::createTypeFacet());
-    m_facetWidget->addFacet(Nepomuk::Utils::Facet::createDateFacet());
-    m_facetWidget->addFacet(Nepomuk::Utils::Facet::createPriorityFacet());
-    m_facetWidget->addFacet(Nepomuk::Utils::Facet::createRatingFacet());*/
-
-    // Init to empty panel
-    setQuery(Nepomuk::Query::Query());
 }
 
 FilterPanel::~FilterPanel()
@@ -62,24 +50,60 @@ FilterPanel::~FilterPanel()
 
 bool FilterPanel::urlChanged()
 {
-    if (!isVisible()) {
-        return true;
-    }
+    if (isVisible()) {
+        setQuery(Nepomuk::Query::Query());
 
-    // Disable us
-    setQuery(Nepomuk::Query::Query());
+        delete m_lastSetUrlStatJob;
 
-    // Get the query from the item
-    m_lastSetUrlStatJob = KIO::stat(url(), KIO::HideProgressInfo);
-    connect(m_lastSetUrlStatJob, SIGNAL(result(KJob*)),
-            this, SLOT(slotSetUrlStatFinished(KJob*)));
+        m_lastSetUrlStatJob = KIO::stat(url(), KIO::HideProgressInfo);
+        connect(m_lastSetUrlStatJob, SIGNAL(result(KJob*)),
+                this, SLOT(slotSetUrlStatFinished(KJob*)));
+    }
 
     return true;
 }
 
+void FilterPanel::showEvent(QShowEvent* event)
+{
+    if (event->spontaneous()) {
+        Panel::showEvent(event);
+        return;
+    }
+
+    if (!m_initialized) {
+        QVBoxLayout* layout = new QVBoxLayout(this);
+        Q_ASSERT(m_removeFolderRestrictionButton == 0);
+        m_removeFolderRestrictionButton = new QPushButton(i18n("Remove folder restriction"), this);
+        connect(m_removeFolderRestrictionButton, SIGNAL(clicked()), SLOT(slotRemoveFolderRestrictionClicked()));
+
+        layout->addWidget(m_removeFolderRestrictionButton);
+
+        Q_ASSERT(m_facetWidget == 0);
+        m_facetWidget = new Nepomuk::Utils::FacetWidget(this);
+        layout->addWidget(m_facetWidget, 1);
+
+        m_facetWidget->addFacet(Nepomuk::Utils::Facet::createFileTypeFacet());
+        m_facetWidget->addFacet(Nepomuk::Utils::Facet::createDateFacet());
+        m_facetWidget->addFacet(Nepomuk::Utils::Facet::createRatingFacet());
+        m_facetWidget->addFacet(Nepomuk::Utils::Facet::createTagFacet());
+
+        Q_ASSERT(m_lastSetUrlStatJob == 0);
+        m_lastSetUrlStatJob = KIO::stat(url(), KIO::HideProgressInfo);
+        connect(m_lastSetUrlStatJob, SIGNAL(result(KJob*)),
+                this, SLOT(slotSetUrlStatFinished(KJob*)));
+
+        connect(m_facetWidget, SIGNAL(facetsChanged()), this, SLOT(slotFacetsChanged()));
+
+        m_initialized = true;
+    }
+
+    Panel::showEvent(event);
+}
+
 void FilterPanel::slotSetUrlStatFinished(KJob* job)
 {
     m_lastSetUrlStatJob = 0;
+
     const KIO::UDSEntry uds = static_cast<KIO::StatJob*>(job)->statResult();
     const QString nepomukQueryStr = uds.stringValue(KIO::UDSEntry::UDS_NEPOMUK_QUERY);
     Nepomuk::Query::FileQuery nepomukQuery;
@@ -115,8 +139,7 @@ void FilterPanel::setQuery(const Nepomuk::Query::Query& query)
         m_unfacetedRestQuery.setTerm(m_facetWidget->extractFacetsFromTerm(query.term()));
         m_facetWidget->setClientQuery(query);
         setEnabled(true);
-    }
-    else {
+    } else {
         m_unfacetedRestQuery = Nepomuk::Query::Query();
         setEnabled(false);
     }
index 9269bd21ac5b95688b6cca9e879a847dd0a52de4..929a8e7fe91563415dc89e6a6e6ef77034a39271 100644 (file)
@@ -50,6 +50,9 @@ protected:
     /** @see Panel::urlChanged() */
     virtual bool urlChanged();
 
+    /** @see QWidget::showEvent() */
+    virtual void showEvent(QShowEvent* event);
+
 private slots:
     void slotSetUrlStatFinished(KJob*);
     void slotFacetsChanged();
@@ -59,6 +62,7 @@ private:
     void setQuery(const Nepomuk::Query::Query& query);
 
 private:
+    bool m_initialized;
     KJob* m_lastSetUrlStatJob;
 
     QPushButton* m_removeFolderRestrictionButton;