diff options
| author | Peter Penz <[email protected]> | 2010-10-27 18:31:39 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2010-10-27 18:31:39 +0000 |
| commit | 8a7591e20b7184c6214b9d4420298d169d326e4d (patch) | |
| tree | a0cc351cd4546741d9d8b7e387d28c75d301e6ff /src | |
| parent | d9141a2aded8b9f13eeac0786e8ee3f065d5b911 (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphinmainwindow.cpp | 2 | ||||
| -rw-r--r-- | src/panels/filter/filterpanel.cpp | 89 | ||||
| -rw-r--r-- | src/panels/filter/filterpanel.h | 4 |
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; |
