[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/apps/dolphin/src
From: Peter Penz <peter.penz19 () gmail ! com>
Date: 2010-10-27 18:31:39
Message-ID: 20101027183139.9468EAC897 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1190460 by ppenz:
Postpone the initialization of the filter-panel until it is shown. This prevents \
overhead if the filter-panel is disabled.
U dolphinmainwindow.cpp
M +52 -29 panels/filter/filterpanel.cpp
M +4 -0 panels/filter/filterpanel.h
--- trunk/KDE/kdebase/apps/dolphin/src/panels/filter/filterpanel.cpp #1190459:1190460
@@ -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 @@
bool FilterPanel::urlChanged()
{
- if (!isVisible()) {
+ if (isVisible()) {
+ setQuery(Nepomuk::Query::Query());
+
+ delete m_lastSetUrlStatJob;
+
+ m_lastSetUrlStatJob = KIO::stat(url(), KIO::HideProgressInfo);
+ connect(m_lastSetUrlStatJob, SIGNAL(result(KJob*)),
+ this, SLOT(slotSetUrlStatFinished(KJob*)));
+ }
+
return true;
}
- // Disable us
- setQuery(Nepomuk::Query::Query());
+void FilterPanel::showEvent(QShowEvent* event)
+{
+ if (event->spontaneous()) {
+ Panel::showEvent(event);
+ return;
+ }
- // Get the query from the item
+ 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*)));
- return true;
+ 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 @@
m_unfacetedRestQuery.setTerm(m_facetWidget->extractFacetsFromTerm(query.term()));
m_facetWidget->setClientQuery(query);
setEnabled(true);
- }
- else {
+ } else {
m_unfacetedRestQuery = Nepomuk::Query::Query();
setEnabled(false);
}
--- trunk/KDE/kdebase/apps/dolphin/src/panels/filter/filterpanel.h #1190459:1190460
@@ -50,6 +50,9 @@
/** @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 @@
void setQuery(const Nepomuk::Query::Query& query);
private:
+ bool m_initialized;
KJob* m_lastSetUrlStatJob;
QPushButton* m_removeFolderRestrictionButton;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic