diff options
| author | Peter Penz <[email protected]> | 2010-10-27 17:08:02 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2010-10-27 17:08:02 +0000 |
| commit | 4383f4238ee61668d82e45f08935a9b99892f16e (patch) | |
| tree | 3533b803dfb02f6a72157d1ded458fd684ec9a2f /src/panels | |
| parent | e521e260b6c95242e87fad9f22a0faa696cfa948 (diff) | |
- Automatically show the filter-panel when a searching is done
- Remove filter-prototypes that conflict with the filterpanel
svn path=/trunk/KDE/kdebase/apps/; revision=1190445
Diffstat (limited to 'src/panels')
| -rw-r--r-- | src/panels/filter/filterpanel.cpp | 107 | ||||
| -rw-r--r-- | src/panels/filter/filterpanel.h | 24 |
2 files changed, 64 insertions, 67 deletions
diff --git a/src/panels/filter/filterpanel.cpp b/src/panels/filter/filterpanel.cpp index 4410a5456..44cac7ecf 100644 --- a/src/panels/filter/filterpanel.cpp +++ b/src/panels/filter/filterpanel.cpp @@ -21,6 +21,7 @@ #include <nepomuk/filequery.h> #include <nepomuk/facetwidget.h> +#include <nepomuk/facet.h> #include <Nepomuk/Query/FileQuery> #include <Nepomuk/Query/Term> @@ -31,98 +32,92 @@ #include <QtGui/QVBoxLayout> #include <QtGui/QTreeView> #include <QtGui/QPushButton> -#include <kdebug.h> - -FilterPanel::FilterPanel(QWidget* parent) - : Panel(parent) +FilterPanel::FilterPanel(QWidget* parent) : + Panel(parent) { QVBoxLayout* layout = new QVBoxLayout(this); - m_buttonRemoveFolderRestriction = new QPushButton( i18n( "Remove folder restriction" ), this ); - connect( m_buttonRemoveFolderRestriction, SIGNAL( clicked() ), SLOT( slotRemoveFolderRestrictionClicked() ) ); + m_removeFolderRestrictionButton = new QPushButton(i18n("Remove folder restriction"), this); + connect(m_removeFolderRestrictionButton, SIGNAL(clicked()), SLOT(slotRemoveFolderRestrictionClicked())); + + layout->addWidget(m_removeFolderRestrictionButton); - layout->addWidget(m_buttonRemoveFolderRestriction); + m_facetWidget = new Nepomuk::Utils::FacetWidget(this); + layout->addWidget(m_facetWidget, 1); + connect(m_facetWidget, SIGNAL(facetsChanged()), this, SLOT(slotFacetsChanged())); - 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 + // Init to empty panel setQuery(Nepomuk::Query::Query()); } - FilterPanel::~FilterPanel() { } -void FilterPanel::setUrl(const KUrl& url) +bool FilterPanel::urlChanged() { - kDebug() << url; - Panel::setUrl(url); + if (!isVisible()) { + return true; + } - // disable us + // Disable us setQuery(Nepomuk::Query::Query()); - // get the query from the item - m_lastSetUrlStatJob = KIO::stat(url, KIO::HideProgressInfo); + // Get the query from the item + m_lastSetUrlStatJob = KIO::stat(url(), KIO::HideProgressInfo); connect(m_lastSetUrlStatJob, SIGNAL(result(KJob*)), this, SLOT(slotSetUrlStatFinished(KJob*))); -} - - -void FilterPanel::setQuery(const Nepomuk::Query::Query& query) -{ - kDebug() << query << query.isValid() << query.toSparqlQuery(); - if (query.isValid()) { - m_buttonRemoveFolderRestriction->setVisible( query.isFileQuery() && !query.toFileQuery().includeFolders().isEmpty() ); - m_unfacetedRestQuery = query; - m_unfacetedRestQuery.setTerm( m_facetWidget->extractFacetsFromTerm( query.term() ) ); - m_facetWidget->setClientQuery( query ); - kDebug() << "Rest query after facets:" << m_unfacetedRestQuery; - setEnabled(true); - } - else { - m_unfacetedRestQuery = Nepomuk::Query::Query(); - setEnabled(false); - } + return true; } - void FilterPanel::slotSetUrlStatFinished(KJob* job) { m_lastSetUrlStatJob = 0; - kDebug() << url(); const KIO::UDSEntry uds = static_cast<KIO::StatJob*>(job)->statResult(); - const QString nepomukQueryStr = uds.stringValue( KIO::UDSEntry::UDS_NEPOMUK_QUERY ); - kDebug() << nepomukQueryStr; + const QString nepomukQueryStr = uds.stringValue(KIO::UDSEntry::UDS_NEPOMUK_QUERY); Nepomuk::Query::FileQuery nepomukQuery; - if ( !nepomukQueryStr.isEmpty() ) { - nepomukQuery = Nepomuk::Query::Query::fromString( nepomukQueryStr ); - } - else if ( url().isLocalFile() ) { - // fallback query for local file URLs + if (!nepomukQueryStr.isEmpty()) { + nepomukQuery = Nepomuk::Query::Query::fromString(nepomukQueryStr); + } else if (url().isLocalFile()) { + // Fallback query for local file URLs nepomukQuery.addIncludeFolder(url(), false); } - kDebug() << nepomukQuery; setQuery(nepomukQuery); } - void FilterPanel::slotFacetsChanged() { - Nepomuk::Query::Query query( m_unfacetedRestQuery && m_facetWidget->queryTerm() ); - kDebug() << query; - emit urlActivated( query.toSearchUrl() ); + Nepomuk::Query::Query query(m_unfacetedRestQuery && m_facetWidget->queryTerm()); + emit urlActivated(query.toSearchUrl()); } - void FilterPanel::slotRemoveFolderRestrictionClicked() { - Nepomuk::Query::FileQuery query( m_unfacetedRestQuery && m_facetWidget->queryTerm() ); - query.setIncludeFolders( KUrl::List() ); - query.setExcludeFolders( KUrl::List() ); - m_facetWidget->setClientQuery( query ); - emit urlActivated( query.toSearchUrl() ); + Nepomuk::Query::FileQuery query(m_unfacetedRestQuery && m_facetWidget->queryTerm()); + query.setIncludeFolders(KUrl::List()); + query.setExcludeFolders(KUrl::List()); + m_facetWidget->setClientQuery(query); + emit urlActivated(query.toSearchUrl()); +} + +void FilterPanel::setQuery(const Nepomuk::Query::Query& query) +{ + if (query.isValid()) { + m_removeFolderRestrictionButton->setVisible(query.isFileQuery() && !query.toFileQuery().includeFolders().isEmpty()); + m_unfacetedRestQuery = query; + m_unfacetedRestQuery.setTerm(m_facetWidget->extractFacetsFromTerm(query.term())); + m_facetWidget->setClientQuery(query); + setEnabled(true); + } + else { + m_unfacetedRestQuery = Nepomuk::Query::Query(); + setEnabled(false); + } } diff --git a/src/panels/filter/filterpanel.h b/src/panels/filter/filterpanel.h index d42c2f0bd..9269bd21a 100644 --- a/src/panels/filter/filterpanel.h +++ b/src/panels/filter/filterpanel.h @@ -20,8 +20,8 @@ #ifndef FILTERPANEL_H #define FILTERPANEL_H -#include "../panel.h" #include <nepomuk/query.h> +#include <panels/panel.h> class KJob; class QPushButton; @@ -32,20 +32,23 @@ namespace Nepomuk { } } +/** + * @brief Allows the filtering of search results. + */ class FilterPanel : public Panel { Q_OBJECT public: FilterPanel(QWidget* parent = 0); - ~FilterPanel(); - -public slots: - void setUrl(const KUrl& url); - void setQuery(const Nepomuk::Query::Query& query); + virtual ~FilterPanel(); signals: - void urlActivated( const KUrl& url ); + void urlActivated(const KUrl& url); + +protected: + /** @see Panel::urlChanged() */ + virtual bool urlChanged(); private slots: void slotSetUrlStatFinished(KJob*); @@ -53,13 +56,12 @@ private slots: void slotRemoveFolderRestrictionClicked(); private: - bool urlChanged() { - return true; - } + void setQuery(const Nepomuk::Query::Query& query); +private: KJob* m_lastSetUrlStatJob; - QPushButton* m_buttonRemoveFolderRestriction; + QPushButton* m_removeFolderRestrictionButton; Nepomuk::Utils::FacetWidget* m_facetWidget; Nepomuk::Query::Query m_unfacetedRestQuery; }; |
