-/***************************************************************************
-* Copyright (C) 2010 by Peter Penz <peter.penz19@gmail.com> *
-* *
-* This program is free software; you can redistribute it and/or modify *
-* it under the terms of the GNU General Public License as published by *
-* the Free Software Foundation; either version 2 of the License, or *
-* (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program; if not, write to the *
-* Free Software Foundation, Inc., *
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
-* **************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2010 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
#include "global.h"
#include "dolphinsearchbox.h"
#include "dolphin_searchsettings.h"
#include "dolphinfacetswidget.h"
+#include "dolphinplacesmodelsingleton.h"
#include "dolphinquery.h"
-#include "panels/places/placesitemmodel.h"
#include <KLocalizedString>
-#include <KNS3/KMoreToolsMenuFactory>
+#include <KMoreToolsMenuFactory>
#include <KSeparator>
-#include <config-baloo.h>
-#ifdef HAVE_BALOO
+#include "config-dolphin.h"
+#if HAVE_BALOO
#include <Baloo/Query>
#include <Baloo/IndexerConfig>
#endif
#include <QHBoxLayout>
#include <QIcon>
#include <QKeyEvent>
-#include <QLabel>
#include <QLineEdit>
#include <QScrollArea>
#include <QShowEvent>
void DolphinSearchBox::fromSearchUrl(const QUrl& url)
{
- if (url.scheme() == QLatin1String("baloosearch")) {
- const DolphinQuery query = DolphinQuery::fromBalooSearchUrl(url);
+ if (DolphinQuery::supportsScheme(url.scheme())) {
+ const DolphinQuery query = DolphinQuery::fromSearchUrl(url);
updateFromQuery(query);
} else if (url.scheme() == QLatin1String("filenamesearch")) {
const QUrlQuery query(url);
m_active = active;
if (active) {
- emit activated();
+ Q_EMIT activated();
}
}
}
QWidget::keyReleaseEvent(event);
if (event->key() == Qt::Key_Escape) {
if (m_searchInput->text().isEmpty()) {
- emit closeRequest();
+ Q_EMIT closeRequest();
} else {
m_searchInput->clear();
}
}
else if (event->key() == Qt::Key_Down) {
- emit focusViewRequest();
+ Q_EMIT focusViewRequest();
}
}
m_startSearchTimer->stop();
m_startedSearching = true;
m_saveSearchAction->setEnabled(true);
- emit searchRequest();
+ Q_EMIT searchRequest();
}
void DolphinSearchBox::emitCloseRequest()
m_startSearchTimer->stop();
m_startedSearching = false;
m_saveSearchAction->setEnabled(false);
- emit closeRequest();
+ Q_EMIT closeRequest();
}
void DolphinSearchBox::slotConfigurationChanged()
} else {
m_startSearchTimer->start();
}
- emit searchTextChanged(text);
+ Q_EMIT searchTextChanged(text);
}
void DolphinSearchBox::slotReturnPressed()
{
emitSearchRequest();
- emit focusViewRequest();
+ Q_EMIT focusViewRequest();
}
void DolphinSearchBox::slotFacetChanged()
{
m_startedSearching = true;
m_startSearchTimer->stop();
- emit searchRequest();
+ Q_EMIT searchRequest();
}
void DolphinSearchBox::slotSearchSaved()
{
const QUrl searchURL = urlForSearching();
if (searchURL.isValid()) {
- PlacesItemModel model;
const QString label = i18n("Search for %1 in %2", text(), searchPath().fileName());
- model.createPlacesItem(label,
- searchURL,
- QStringLiteral("folder-saved-search-symbolic"));
+ DolphinPlacesModelSingleton::instance().placesModel()->addPlace(label, searchURL, QStringLiteral("folder-saved-search-symbolic"));
}
}
m_facetsWidget->layout()->setSpacing(Dolphin::LAYOUT_SPACING_SMALL);
connect(m_facetsWidget, &DolphinFacetsWidget::facetChanged, this, &DolphinSearchBox::slotFacetChanged);
+ // Put the options into a QScrollArea. This prevents increasing the view width
+ // in case that not enough width for the options is available.
+ QWidget* optionsContainer = new QWidget(this);
+
// Apply layout for the options
- QHBoxLayout* optionsLayout = new QHBoxLayout();
+ QHBoxLayout* optionsLayout = new QHBoxLayout(optionsContainer);
optionsLayout->setContentsMargins(0, 0, 0, 0);
optionsLayout->setSpacing(Dolphin::LAYOUT_SPACING_SMALL);
optionsLayout->addWidget(m_fileNameButton);
optionsLayout->addWidget(moreSearchToolsButton);
optionsLayout->addStretch(1);
- // Put the options into a QScrollArea. This prevents increasing the view width
- // in case that not enough width for the options is available.
- QWidget* optionsContainer = new QWidget(this);
- optionsContainer->setLayout(optionsLayout);
-
m_optionsScrollArea = new QScrollArea(this);
m_optionsScrollArea->setFrameShape(QFrame::NoFrame);
m_optionsScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_optionsScrollArea->setWidgetResizable(true);
m_topLayout = new QVBoxLayout(this);
- m_topLayout->setContentsMargins(0, 0, 0, 0);
+ m_topLayout->setContentsMargins(0, Dolphin::LAYOUT_SPACING_SMALL, 0, 0);
m_topLayout->setSpacing(Dolphin::LAYOUT_SPACING_SMALL);
m_topLayout->addLayout(searchInputLayout);
m_topLayout->addWidget(m_optionsScrollArea);
QUrl DolphinSearchBox::balooUrlForSearching() const
{
-#ifdef HAVE_BALOO
+#if HAVE_BALOO
const QString text = m_searchInput->text();
Baloo::Query query;
setSearchPath(QUrl::fromLocalFile(QDir::homePath()));
}
- setText(query.text());
+ // If the input box has focus, do not update to avoid messing with user typing
+ if (!m_searchInput->hasFocus()) {
+ setText(query.text());
+ }
if (query.hasContentSearch()) {
m_contentButton->setChecked(true);
bool DolphinSearchBox::isIndexingEnabled() const
{
-#ifdef HAVE_BALOO
+#if HAVE_BALOO
const Baloo::IndexerConfig searchInfo;
return searchInfo.fileIndexingEnabled() && !searchPath().isEmpty() && searchInfo.shouldBeIndexed(searchPath().toLocalFile());
#else