Move "Web Search" locator filter from Help to Core

It was invented as a "remote help" filter, but it actually doesn't have
anything to do with help or documentation.
Move it to more general place, also to enable future generalization to
another custom filter type.

Change-Id: Ib80eacd3c7cc33ae9f4d9353fa820272e3b0b25f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2019-12-17 14:01:56 +01:00
parent 9f3614fdbf
commit dd7e73221e
11 changed files with 74 additions and 69 deletions

View File

@@ -108,6 +108,7 @@ add_qtc_plugin(Core
locator/locatorsettingspage.cpp locator/locatorsettingspage.h locator/locatorsettingspage.ui
locator/locatorwidget.cpp locator/locatorwidget.h
locator/opendocumentsfilter.cpp locator/opendocumentsfilter.h
locator/urllocatorfilter.cpp locator/urllocatorfilter.h locator/urllocatorfilter.ui
mainwindow.cpp mainwindow.h
manhattanstyle.cpp manhattanstyle.h
menubarfilter.cpp menubarfilter.h

View File

@@ -363,13 +363,16 @@ Project {
"locator.h",
"locatorsearchutils.cpp",
"locatorsearchutils.h",
"locatorsettingspage.cpp",
"locatorsettingspage.h",
"locatorsettingspage.ui",
"locatorwidget.cpp",
"locatorwidget.h",
"opendocumentsfilter.cpp",
"opendocumentsfilter.h",
"locatorsettingspage.cpp",
"locatorsettingspage.h",
"locatorsettingspage.ui",
"urllocatorfilter.cpp",
"urllocatorfilter.h",
"urllocatorfilter.ui"
]
}

View File

@@ -36,6 +36,7 @@
#include "locatorsettingspage.h"
#include "locatorwidget.h"
#include "opendocumentsfilter.h"
#include "urllocatorfilter.h"
#include <coreplugin/coreplugin.h>
#include <coreplugin/coreconstants.h>
@@ -82,6 +83,7 @@ public:
ExternalToolsFilter m_externalToolsFilter;
LocatorFiltersFilter m_locatorsFiltersFilter;
MenuBarFilter m_menubarFilter;
UrlLocatorFilter m_urlFilter;
#ifdef Q_OS_MACOS
SpotlightLocatorFilter m_spotlightLocatorFilter;
#endif

View File

@@ -15,6 +15,7 @@ HEADERS += \
$$PWD/executefilter.h \
$$PWD/locatorsearchutils.h \
$$PWD/locatorsettingspage.h \
$$PWD/urllocatorfilter.h \
$$PWD/externaltoolsfilter.h
SOURCES += \
@@ -31,7 +32,11 @@ SOURCES += \
$$PWD/executefilter.cpp \
$$PWD/locatorsearchutils.cpp \
$$PWD/locatorsettingspage.cpp \
$$PWD/externaltoolsfilter.cpp \
$$PWD/urllocatorfilter.cpp \
$$PWD/externaltoolsfilter.cpp
FORMS += \
$$PWD/urllocatorfilter.ui
qtHaveModule(script) {
QT *= script

View File

@@ -23,20 +23,21 @@
**
****************************************************************************/
#include "remotehelpfilter.h"
#include "urllocatorfilter.h"
#include <QDesktopServices>
#include <QMutexLocker>
#include <QUrl>
namespace Help {
namespace Core {
namespace Internal {
RemoteFilterOptions::RemoteFilterOptions(RemoteHelpFilter *filter, QWidget *parent)
UrlFilterOptions::UrlFilterOptions(UrlLocatorFilter *filter, QWidget *parent)
: QDialog(parent)
, m_filter(filter)
{
m_ui.setupUi(this);
setWindowTitle(Core::ILocatorFilter::msgConfigureDialogTitle());
setWindowTitle(ILocatorFilter::msgConfigureDialogTitle());
m_ui.prefixLabel->setText(Core::ILocatorFilter::msgPrefixLabel());
m_ui.prefixLabel->setToolTip(Core::ILocatorFilter::msgPrefixToolTip());
m_ui.includeByDefault->setText(Core::ILocatorFilter::msgIncludeByDefault());
@@ -51,20 +52,18 @@ RemoteFilterOptions::RemoteFilterOptions(RemoteHelpFilter *filter, QWidget *pare
item->setFlags(item->flags() | Qt::ItemIsEditable);
}
connect(m_ui.add, &QPushButton::clicked,
this, &RemoteFilterOptions::addNewItem);
connect(m_ui.remove, &QPushButton::clicked,
this, &RemoteFilterOptions::removeItem);
connect(m_ui.moveUp, &QPushButton::clicked,
this, &RemoteFilterOptions::moveItemUp);
connect(m_ui.moveDown, &QPushButton::clicked,
this, &RemoteFilterOptions::moveItemDown);
connect(m_ui.listWidget, &QListWidget::currentItemChanged,
this, &RemoteFilterOptions::updateActionButtons);
connect(m_ui.add, &QPushButton::clicked, this, &UrlFilterOptions::addNewItem);
connect(m_ui.remove, &QPushButton::clicked, this, &UrlFilterOptions::removeItem);
connect(m_ui.moveUp, &QPushButton::clicked, this, &UrlFilterOptions::moveItemUp);
connect(m_ui.moveDown, &QPushButton::clicked, this, &UrlFilterOptions::moveItemDown);
connect(m_ui.listWidget,
&QListWidget::currentItemChanged,
this,
&UrlFilterOptions::updateActionButtons);
updateActionButtons();
}
void RemoteFilterOptions::addNewItem()
void UrlFilterOptions::addNewItem()
{
QListWidgetItem *item = new QListWidgetItem(tr("Double-click to edit item."));
m_ui.listWidget->addItem(item);
@@ -74,7 +73,7 @@ void RemoteFilterOptions::addNewItem()
m_ui.listWidget->editItem(item);
}
void RemoteFilterOptions::removeItem()
void UrlFilterOptions::removeItem()
{
if (QListWidgetItem *item = m_ui.listWidget->currentItem()) {
m_ui.listWidget->removeItemWidget(item);
@@ -82,7 +81,7 @@ void RemoteFilterOptions::removeItem()
}
}
void RemoteFilterOptions::moveItemUp()
void UrlFilterOptions::moveItemUp()
{
const int row = m_ui.listWidget->currentRow();
if (row > 0) {
@@ -92,7 +91,7 @@ void RemoteFilterOptions::moveItemUp()
}
}
void RemoteFilterOptions::moveItemDown()
void UrlFilterOptions::moveItemDown()
{
const int row = m_ui.listWidget->currentRow();
if (row >= 0 && row < m_ui.listWidget->count() - 1) {
@@ -102,7 +101,7 @@ void RemoteFilterOptions::moveItemDown()
}
}
void RemoteFilterOptions::updateActionButtons()
void UrlFilterOptions::updateActionButtons()
{
m_ui.remove->setEnabled(m_ui.listWidget->currentItem());
const int row = m_ui.listWidget->currentRow();
@@ -110,9 +109,11 @@ void RemoteFilterOptions::updateActionButtons()
m_ui.moveDown->setEnabled(row >= 0 && row < m_ui.listWidget->count() - 1);
}
// -- RemoteHelpFilter
} // namespace Internal
RemoteHelpFilter::RemoteHelpFilter()
// -- UrlLocatorFilter
UrlLocatorFilter::UrlLocatorFilter()
{
setId("RemoteHelpFilter");
setDisplayName(tr("Web Search"));
@@ -127,9 +128,10 @@ RemoteHelpFilter::RemoteHelpFilter()
m_remoteUrls.append("https://en.wikipedia.org/w/index.php?search=%1");
}
RemoteHelpFilter::~RemoteHelpFilter() = default;
UrlLocatorFilter::~UrlLocatorFilter() = default;
QList<Core::LocatorFilterEntry> RemoteHelpFilter::matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future, const QString &entry)
QList<Core::LocatorFilterEntry> UrlLocatorFilter::matchesFor(
QFutureInterface<Core::LocatorFilterEntry> &future, const QString &entry)
{
QList<Core::LocatorFilterEntry> entries;
const QStringList urls = remoteUrls();
@@ -144,24 +146,26 @@ QList<Core::LocatorFilterEntry> RemoteHelpFilter::matchesFor(QFutureInterface<Co
return entries;
}
void RemoteHelpFilter::accept(Core::LocatorFilterEntry selection,
QString *newText, int *selectionStart, int *selectionLength) const
void UrlLocatorFilter::accept(Core::LocatorFilterEntry selection,
QString *newText,
int *selectionStart,
int *selectionLength) const
{
Q_UNUSED(newText)
Q_UNUSED(selectionStart)
Q_UNUSED(selectionLength)
const QString &url = selection.displayName;
if (!url.isEmpty())
emit linkActivated(url);
QDesktopServices::openUrl(url);
}
void RemoteHelpFilter::refresh(QFutureInterface<void> &future)
void UrlLocatorFilter::refresh(QFutureInterface<void> &future)
{
Q_UNUSED(future)
// Nothing to refresh
}
QByteArray RemoteHelpFilter::saveState() const
QByteArray UrlLocatorFilter::saveState() const
{
QByteArray value;
QDataStream out(&value, QIODevice::WriteOnly);
@@ -171,7 +175,7 @@ QByteArray RemoteHelpFilter::saveState() const
return value;
}
void RemoteHelpFilter::restoreState(const QByteArray &state)
void UrlLocatorFilter::restoreState(const QByteArray &state)
{
QDataStream in(state);
@@ -188,10 +192,10 @@ void RemoteHelpFilter::restoreState(const QByteArray &state)
setIncludedByDefault(defaultFilter);
}
bool RemoteHelpFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
bool UrlLocatorFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
{
Q_UNUSED(needsRefresh)
RemoteFilterOptions optionsDialog(this, parent);
Internal::UrlFilterOptions optionsDialog(this, parent);
if (optionsDialog.exec() == QDialog::Accepted) {
QMutexLocker lock(&m_mutex); Q_UNUSED(lock)
m_remoteUrls.clear();
@@ -204,11 +208,10 @@ bool RemoteHelpFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
return true;
}
QStringList RemoteHelpFilter::remoteUrls() const
QStringList UrlLocatorFilter::remoteUrls() const
{
QMutexLocker lock(&m_mutex); Q_UNUSED(lock)
return m_remoteUrls;
}
} // namespace Internal
} // namespace Help
} // namespace Core

View File

@@ -25,22 +25,23 @@
#pragma once
#include "ui_remotehelpfilter.h"
#include "ui_urllocatorfilter.h"
#include <coreplugin/locator/ilocatorfilter.h>
#include "ilocatorfilter.h"
#include <coreplugin/core_global.h>
#include <QIcon>
#include <QMutex>
namespace Help {
namespace Internal {
namespace Core {
class RemoteHelpFilter : public Core::ILocatorFilter
class CORE_EXPORT UrlLocatorFilter : public Core::ILocatorFilter
{
Q_OBJECT
public:
RemoteHelpFilter();
~RemoteHelpFilter() final;
UrlLocatorFilter();
~UrlLocatorFilter() final;
// ILocatorFilter
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
@@ -54,22 +55,21 @@ public:
QStringList remoteUrls() const;
signals:
void linkActivated(const QUrl &url) const;
private:
QIcon m_icon;
QStringList m_remoteUrls;
mutable QMutex m_mutex;
};
class RemoteFilterOptions : public QDialog
namespace Internal {
class UrlFilterOptions : public QDialog
{
Q_OBJECT
friend class RemoteHelpFilter;
friend class Core::UrlLocatorFilter;
public:
explicit RemoteFilterOptions(RemoteHelpFilter *filter, QWidget *parent = nullptr);
explicit UrlFilterOptions(UrlLocatorFilter *filter, QWidget *parent = nullptr);
private:
void addNewItem();
@@ -78,9 +78,10 @@ private:
void moveItemDown();
void updateActionButtons();
RemoteHelpFilter *m_filter = nullptr;
Ui::RemoteFilterOptions m_ui;
UrlLocatorFilter *m_filter = nullptr;
Ui::UrlFilterOptions m_ui;
};
} // namespace Internal
} // namespace Help
} // namespace Core

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Help::Internal::RemoteFilterOptions</class>
<widget class="QDialog" name="Help::Internal::RemoteFilterOptions">
<class>Core::Internal::UrlFilterOptions</class>
<widget class="QDialog" name="Core::Internal::UrlFilterOptions">
<property name="geometry">
<rect>
<x>0</x>
@@ -154,7 +154,7 @@
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Help::Internal::RemoteFilterOptions</receiver>
<receiver>Core::Internal::UrlFilterOptions</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
@@ -170,7 +170,7 @@
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Help::Internal::RemoteFilterOptions</receiver>
<receiver>Core::Internal::UrlFilterOptions</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">

View File

@@ -20,7 +20,6 @@ add_qtc_plugin(Help
openpagesmanager.cpp openpagesmanager.h
openpagesswitcher.cpp openpagesswitcher.h
openpageswidget.cpp openpageswidget.h
remotehelpfilter.cpp remotehelpfilter.h remotehelpfilter.ui
searchtaskhandler.cpp searchtaskhandler.h
searchwidget.cpp searchwidget.h
textbrowserhelpviewer.cpp textbrowserhelpviewer.h

View File

@@ -23,7 +23,6 @@ HEADERS += \
openpagesmanager.h \
openpagesswitcher.h \
openpageswidget.h \
remotehelpfilter.h \
searchwidget.h \
xbelsupport.h \
searchtaskhandler.h \
@@ -44,7 +43,6 @@ SOURCES += \
openpagesmanager.cpp \
openpagesswitcher.cpp \
openpageswidget.cpp \
remotehelpfilter.cpp \
searchwidget.cpp \
xbelsupport.cpp \
searchtaskhandler.cpp \
@@ -53,8 +51,7 @@ SOURCES += \
FORMS += docsettingspage.ui \
filtersettingspage.ui \
generalsettingspage.ui \
remotehelpfilter.ui
generalsettingspage.ui
!isEmpty(QT.webenginewidgets.name) {
QT += webenginewidgets

View File

@@ -44,7 +44,6 @@ QtcPlugin {
"openpagesmanager.cpp", "openpagesmanager.h",
"openpagesswitcher.cpp", "openpagesswitcher.h",
"openpageswidget.cpp", "openpageswidget.h",
"remotehelpfilter.cpp", "remotehelpfilter.h", "remotehelpfilter.ui",
"searchtaskhandler.cpp", "searchtaskhandler.h",
"searchwidget.cpp", "searchwidget.h",
"textbrowserhelpviewer.cpp", "textbrowserhelpviewer.h",

View File

@@ -39,7 +39,6 @@
#include "helpwidget.h"
#include "localhelpmanager.h"
#include "openpagesmanager.h"
#include "remotehelpfilter.h"
#include "searchtaskhandler.h"
#include "searchwidget.h"
#include "topicchooser.h"
@@ -155,7 +154,6 @@ public:
LocalHelpManager m_localHelpManager;
HelpIndexFilter helpIndexFilter;
RemoteHelpFilter remoteHelpFilter;
};
static HelpPluginPrivate *dd = nullptr;
@@ -281,9 +279,6 @@ HelpPluginPrivate::HelpPluginPrivate()
connect(&helpIndexFilter, &HelpIndexFilter::linksActivated,
this, &HelpPluginPrivate::showLinksInCurrentViewer);
connect(&remoteHelpFilter, &RemoteHelpFilter::linkActivated,
this, &QDesktopServices::openUrl);
QDesktopServices::setUrlHandler("qthelp", HelpManager::instance(), "showHelpUrl");
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
this, &HelpPluginPrivate::modeChanged);