┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/search
diff options
context:
space:
mode:
Diffstat (limited to 'src/search')
-rw-r--r--src/search/dolphinfacetswidget.cpp3
-rw-r--r--src/search/dolphinfacetswidget.h2
-rw-r--r--src/search/dolphinsearchbox.cpp77
-rw-r--r--src/search/dolphinsearchbox.h17
-rw-r--r--src/search/filenamesearchprotocol.cpp15
-rw-r--r--src/search/filenamesearchprotocol.h2
6 files changed, 77 insertions, 39 deletions
diff --git a/src/search/dolphinfacetswidget.cpp b/src/search/dolphinfacetswidget.cpp
index f20ae68d5..8e1a9c470 100644
--- a/src/search/dolphinfacetswidget.cpp
+++ b/src/search/dolphinfacetswidget.cpp
@@ -295,9 +295,8 @@ QRadioButton* DolphinFacetsWidget::createRadioButton(const QString& text,
QButtonGroup* group)
{
QRadioButton* button = new QRadioButton(text);
- connect(button, SIGNAL(clicked()), this, SIGNAL(facetChanged()));
+ connect(button, &QRadioButton::clicked, this, &DolphinFacetsWidget::facetChanged);
group->addButton(button);
return button;
}
-#include "dolphinfacetswidget.moc"
diff --git a/src/search/dolphinfacetswidget.h b/src/search/dolphinfacetswidget.h
index 757dcd482..46c84ce1a 100644
--- a/src/search/dolphinfacetswidget.h
+++ b/src/search/dolphinfacetswidget.h
@@ -24,7 +24,7 @@
#include <config-baloo.h>
#ifdef HAVE_BALOO
- #include <baloo/term.h>
+ #include <Baloo/Term>
#endif
class QButtonGroup;
diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp
index 46ca01a4c..0ab4d86cd 100644
--- a/src/search/dolphinsearchbox.cpp
+++ b/src/search/dolphinsearchbox.cpp
@@ -26,6 +26,7 @@
#include <KLineEdit>
#include <KLocale>
#include <KSeparator>
+#include <KGlobalSettings>
#include <QButtonGroup>
#include <QDir>
@@ -39,11 +40,12 @@
#include <QToolButton>
#include <QVBoxLayout>
-#include <config-baloo.h>
#ifdef HAVE_BALOO
- #include <baloo/query.h>
- #include <baloo/term.h>
- #include <baloo/indexerconfig.h>
+ #include <Baloo/NaturalFileQueryParser>
+ #include <Baloo/QueryBuilder>
+ #include <Baloo/Query>
+ #include <Baloo/Term>
+ #include <Baloo/IndexerConfig>
#endif
DolphinSearchBox::DolphinSearchBox(QWidget* parent) :
@@ -251,8 +253,10 @@ void DolphinSearchBox::slotConfigurationChanged()
}
}
-void DolphinSearchBox::slotSearchTextChanged(const QString& text)
+void DolphinSearchBox::slotSearchTextChanged()
{
+ const QString text = m_searchInput->text();
+
if (text.isEmpty()) {
m_startSearchTimer->stop();
} else {
@@ -261,10 +265,17 @@ void DolphinSearchBox::slotSearchTextChanged(const QString& text)
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_BALOO
+ m_searchInput->setParsingEnabled(m_contentButton->isChecked());
+#endif
}
void DolphinSearchBox::slotFacetsButtonToggled()
@@ -287,7 +298,7 @@ void DolphinSearchBox::initButton(QToolButton* button)
button->setAutoExclusive(true);
button->setAutoRaise(true);
button->setCheckable(true);
- connect(button, SIGNAL(clicked(bool)), this, SLOT(slotConfigurationChanged()));
+ connect(button, &QToolButton::clicked, this, &DolphinSearchBox::slotConfigurationChanged);
}
void DolphinSearchBox::loadSettings()
@@ -305,6 +316,7 @@ void DolphinSearchBox::loadSettings()
}
m_facetsWidget->setVisible(SearchSettings::showFacetsWidget());
+ updateSearchInputParsing();
}
void DolphinSearchBox::saveSettings()
@@ -322,21 +334,30 @@ void DolphinSearchBox::init()
closeButton->setAutoRaise(true);
closeButton->setIcon(KIcon("dialog-close"));
closeButton->setToolTip(i18nc("@info:tooltip", "Quit searching"));
- connect(closeButton, SIGNAL(clicked()), this, SLOT(emitCloseRequest()));
+ connect(closeButton, &QToolButton::clicked, this, &DolphinSearchBox::emitCloseRequest);
// Create search label
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());
+ connect(m_searchInput, &KLineEdit::returnPressed,
+ this, &DolphinSearchBox::slotReturnPressed);
+ connect(m_searchInput, &KLineEdit::textChanged,
+ this, &DolphinSearchBox::slotSearchTextChanged);
+#endif
setFocusProxy(m_searchInput);
- connect(m_searchInput, SIGNAL(returnPressed(QString)),
- this, SLOT(slotReturnPressed(QString)));
- connect(m_searchInput, SIGNAL(textChanged(QString)),
- this, SLOT(slotSearchTextChanged(QString)));
// Apply layout for the search input
QHBoxLayout* searchInputLayout = new QHBoxLayout();
@@ -357,6 +378,8 @@ void DolphinSearchBox::init()
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);
@@ -377,12 +400,12 @@ void DolphinSearchBox::init()
m_facetsToggleButton = new QToolButton(this);
m_facetsToggleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
initButton(m_facetsToggleButton);
- connect(m_facetsToggleButton, SIGNAL(clicked()), this, SLOT(slotFacetsButtonToggled()));
+ connect(m_facetsToggleButton, &QToolButton::clicked, this, &DolphinSearchBox::slotFacetsButtonToggled);
m_facetsWidget = new DolphinFacetsWidget(this);
m_facetsWidget->installEventFilter(this);
m_facetsWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
- connect(m_facetsWidget, SIGNAL(facetChanged()), this, SLOT(slotFacetChanged()));
+ connect(m_facetsWidget, &DolphinFacetsWidget::facetChanged, this, &DolphinSearchBox::slotFacetChanged);
// Apply layout for the options
QHBoxLayout* optionsLayout = new QHBoxLayout();
@@ -422,7 +445,7 @@ void DolphinSearchBox::init()
m_startSearchTimer = new QTimer(this);
m_startSearchTimer->setSingleShot(true);
m_startSearchTimer->setInterval(1000);
- connect(m_startSearchTimer, SIGNAL(timeout()), this, SLOT(emitSearchRequest()));
+ connect(m_startSearchTimer, &QTimer::timeout, this, &DolphinSearchBox::emitSearchRequest);
updateFacetsToggleButton();
}
@@ -433,28 +456,31 @@ KUrl DolphinSearchBox::balooUrlForSearching() const
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
@@ -472,7 +498,7 @@ void DolphinSearchBox::fromBalooSearchUrl(const KUrl& url)
// while we adjust the search text and the facet widget.
blockSignals(true);
- const QVariantHash customOptions = query.customOptions();
+ const QVariantMap customOptions = query.customOptions();
if (customOptions.contains("includeFolder")) {
setSearchPath(customOptions.value("includeFolder").toString());
} else {
@@ -512,4 +538,3 @@ void DolphinSearchBox::updateFacetsToggleButton()
m_facetsToggleButton->setText(facetsIsVisible ? i18nc("action:button", "Fewer Options") : i18nc("action:button", "More Options"));
}
-#include "dolphinsearchbox.moc"
diff --git a/src/search/dolphinsearchbox.h b/src/search/dolphinsearchbox.h
index 53b12ffab..eba81346d 100644
--- a/src/search/dolphinsearchbox.h
+++ b/src/search/dolphinsearchbox.h
@@ -24,6 +24,8 @@
#include <QList>
#include <QWidget>
+#include <config-baloo.h>
+
class DolphinFacetsWidget;
class KLineEdit;
class KSeparator;
@@ -32,6 +34,11 @@ class QScrollArea;
class QLabel;
class QVBoxLayout;
+namespace Baloo {
+ class QueryBuilder;
+ class NaturalQueryParser;
+}
+
/**
* @brief Input box for searching files with or without Baloo.
*
@@ -134,10 +141,11 @@ private slots:
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);
@@ -164,7 +172,12 @@ private:
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;
diff --git a/src/search/filenamesearchprotocol.cpp b/src/search/filenamesearchprotocol.cpp
index 38dd26b23..b56a99580 100644
--- a/src/search/filenamesearchprotocol.cpp
+++ b/src/search/filenamesearchprotocol.cpp
@@ -25,6 +25,7 @@
#include <KIO/NetAccess>
#include <KIO/Job>
#include <KUrl>
+#include <kdemacros.h>
#include <ktemporaryfile.h>
#include <QCoreApplication>
@@ -44,22 +45,22 @@ FileNameSearchProtocol::~FileNameSearchProtocol()
cleanup();
}
-void FileNameSearchProtocol::listDir(const KUrl& url)
+void FileNameSearchProtocol::listDir(const QUrl& url)
{
cleanup();
- const QString search = url.queryItem("search");
+ const QString search = url.queryItemValue("search");
if (!search.isEmpty()) {
m_regExp = new QRegExp(search, Qt::CaseInsensitive, QRegExp::Wildcard);
}
m_checkContent = false;
- const QString checkContent = url.queryItem("checkContent");
+ const QString checkContent = url.queryItemValue("checkContent");
if (checkContent == QLatin1String("yes")) {
m_checkContent = true;
}
- const QString urlString = url.queryItem("url");
+ const QString urlString = url.queryItemValue("url");
searchDirectory(KUrl(urlString));
cleanup();
@@ -80,8 +81,8 @@ void FileNameSearchProtocol::searchDirectory(const KUrl& directory)
dirLister->openUrl(directory);
QEventLoop eventLoop;
- QObject::connect(dirLister, SIGNAL(canceled()), &eventLoop, SLOT(quit()));
- QObject::connect(dirLister, SIGNAL(completed()), &eventLoop, SLOT(quit()));
+ QObject::connect(dirLister, static_cast<void(KDirLister::*)()>(&KDirLister::canceled), &eventLoop, &QEventLoop::quit);
+ QObject::connect(dirLister, static_cast<void(KDirLister::*)()>(&KDirLister::completed), &eventLoop, &QEventLoop::quit);
eventLoop.exec();
// Visualize all items that match the search pattern
@@ -91,7 +92,7 @@ void FileNameSearchProtocol::searchDirectory(const KUrl& directory)
bool addItem = false;
if (!m_regExp || item.name().contains(*m_regExp)) {
addItem = true;
- } else if (m_checkContent && item.determineMimeType()->is(QLatin1String("text/plain"))) {
+ } else if (m_checkContent && item.determineMimeType().inherits(QLatin1String("text/plain"))) {
addItem = contentContainsPattern(item.url());
}
diff --git a/src/search/filenamesearchprotocol.h b/src/search/filenamesearchprotocol.h
index 4a854d729..f691f998b 100644
--- a/src/search/filenamesearchprotocol.h
+++ b/src/search/filenamesearchprotocol.h
@@ -39,7 +39,7 @@ public:
FileNameSearchProtocol(const QByteArray& pool, const QByteArray& app);
virtual ~FileNameSearchProtocol();
- virtual void listDir(const KUrl& url);
+ virtual void listDir(const QUrl& url) Q_DECL_OVERRIDE;
private:
void searchDirectory(const KUrl& directory);