#include <QToolButton>
#include <QVBoxLayout>
-#include <config-baloo.h>
#ifdef HAVE_BALOO
+ #include <Baloo/NaturalFileQueryParser>
+ #include <Baloo/QueryBuilder>
#include <Baloo/Query>
#include <Baloo/Term>
#include <Baloo/IndexerConfig>
}
}
-void DolphinSearchBox::slotSearchTextChanged(const QString& text)
+void DolphinSearchBox::slotSearchTextChanged()
{
+ const QString text = m_searchInput->text();
+
if (text.isEmpty()) {
m_startSearchTimer->stop();
} else {
emit searchTextChanged(text);
}
-void DolphinSearchBox::slotReturnPressed(const QString& text)
+void DolphinSearchBox::slotReturnPressed()
{
emitSearchRequest();
- emit returnPressed(text);
+ emit returnPressed(m_searchInput->text());
+}
+
+void DolphinSearchBox::updateSearchInputParsing()
+{
+#ifdef HAVE_NEPOMUK
+ m_searchInput->setParsingEnabled(m_contentButton->isChecked());
+#endif
}
void DolphinSearchBox::slotFacetsButtonToggled()
}
m_facetsWidget->setVisible(SearchSettings::showFacetsWidget());
+ updateSearchInputParsing();
}
void DolphinSearchBox::saveSettings()
m_searchLabel = new QLabel(this);
// Create search box
+#ifdef HAVE_BALOO
+ m_queryParser.reset(new Baloo::NaturalFileQueryParser);
+ m_searchInput = new Baloo::QueryBuilder(m_queryParser.data(), this);
+ connect(m_searchInput, &Baloo::QueryBuilder::editingFinished,
+ this, &DolphinSearchBox::slotReturnPressed);
+ connect(m_searchInput, &Baloo::QueryBuilder::textChanged,
+ this, &DolphinSearchBox::slotSearchTextChanged);
+#else
m_searchInput = new KLineEdit(this);
m_searchInput->installEventFilter(this);
m_searchInput->setClearButtonShown(true);
m_searchInput->setFont(KGlobalSettings::generalFont());
- setFocusProxy(m_searchInput);
- connect(m_searchInput, static_cast<void(KLineEdit::*)(const QString&)>(&KLineEdit::returnPressed),
+ connect(m_searchInput, &KLineEdit::returnPressed,
this, &DolphinSearchBox::slotReturnPressed);
connect(m_searchInput, &KLineEdit::textChanged,
this, &DolphinSearchBox::slotSearchTextChanged);
+#endif
+ setFocusProxy(m_searchInput);
// Apply layout for the search input
QHBoxLayout* searchInputLayout = new QHBoxLayout();
QButtonGroup* searchWhatGroup = new QButtonGroup(this);
searchWhatGroup->addButton(m_fileNameButton);
searchWhatGroup->addButton(m_contentButton);
+ connect(searchWhatGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked),
+ this, &DolphinSearchBox::updateSearchInputParsing);
m_separator = new KSeparator(Qt::Vertical, this);
const QString text = m_searchInput->text();
Baloo::Query query;
+
+ if (m_contentButton->isChecked()) {
+ query = m_queryParser->parse(text, Baloo::NaturalQueryParser::DetectFilenamePattern);
+ } else {
+ query.setTerm(Baloo::Term(QLatin1String("filename"), text));
+ }
+
+ // Configure the query so that it returns files and takes the rating into account
query.addType("File");
query.addType(m_facetsWidget->facetType());
Baloo::Term term(Baloo::Term::And);
-
Baloo::Term ratingTerm = m_facetsWidget->ratingTerm();
+
if (ratingTerm.isValid()) {
+ term.addSubTerm(query.term());
term.addSubTerm(ratingTerm);
- }
- if (m_contentButton->isChecked()) {
- query.setSearchString(text);
- } else if (!text.isEmpty()) {
- term.addSubTerm(Baloo::Term(QLatin1String("filename"), text));
+ query.setTerm(term);
}
if (m_fromHereButton->isChecked()) {
query.addCustomOption("includeFolder", m_searchPath.toLocalFile());
}
- query.setTerm(term);
-
return query.toSearchUrl(i18nc("@title UDS_DISPLAY_NAME for a KIO directory listing. %1 is the query the user entered.",
"Query Results from '%1'", text));
#else
#include <QList>
#include <QWidget>
+#include <config-baloo.h>
+
class DolphinFacetsWidget;
class KLineEdit;
class KSeparator;
class QLabel;
class QVBoxLayout;
+namespace Baloo {
+ class QueryBuilder;
+ class NaturalQueryParser;
+}
+
/**
* @brief Input box for searching files with or without Baloo.
*
void emitSearchRequest();
void emitCloseRequest();
void slotConfigurationChanged();
- void slotSearchTextChanged(const QString& text);
- void slotReturnPressed(const QString& text);
+ void slotSearchTextChanged();
+ void slotReturnPressed();
void slotFacetsButtonToggled();
void slotFacetChanged();
+ void updateSearchInputParsing();
private:
void initButton(QToolButton* button);
QVBoxLayout* m_topLayout;
QLabel* m_searchLabel;
+#ifdef HAVE_BALOO
+ Baloo::QueryBuilder* m_searchInput;
+ QScopedPointer<Baloo::NaturalQueryParser> m_queryParser;
+#else
KLineEdit* m_searchInput;
+#endif
QScrollArea* m_optionsScrollArea;
QToolButton* m_fileNameButton;
QToolButton* m_contentButton;