┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp2
-rw-r--r--src/panels/filter/filterpanel.cpp89
-rw-r--r--src/panels/filter/filterpanel.h4
3 files changed, 61 insertions, 34 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 54e6d8b6c..043f70f12 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -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);
diff --git a/src/panels/filter/filterpanel.cpp b/src/panels/filter/filterpanel.cpp
index 44cac7ecf..42bb09ced 100644
--- a/src/panels/filter/filterpanel.cpp
+++ b/src/panels/filter/filterpanel.cpp
@@ -29,31 +29,19 @@
#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);
}
diff --git a/src/panels/filter/filterpanel.h b/src/panels/filter/filterpanel.h
index 9269bd21a..929a8e7fe 100644
--- a/src/panels/filter/filterpanel.h
+++ b/src/panels/filter/filterpanel.h
@@ -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;