From: Peter Penz Date: Wed, 27 Oct 2010 18:31:39 +0000 (+0000) Subject: Postpone the initialization of the filter-panel until it is shown. This prevents... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/8a7591e20b7184c6214b9d4420298d169d326e4d Postpone the initialization of the filter-panel until it is shown. This prevents overhead if the filter-panel is disabled. svn path=/trunk/KDE/kdebase/apps/; revision=1190460 --- 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(job)->statResult(); const KUrl url = static_cast(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 #include -#include -#include -#include +#include +#include +#include +#include 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(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;