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/locatorsettingspage.cpp locator/locatorsettingspage.h locator/locatorsettingspage.ui
locator/locatorwidget.cpp locator/locatorwidget.h locator/locatorwidget.cpp locator/locatorwidget.h
locator/opendocumentsfilter.cpp locator/opendocumentsfilter.h locator/opendocumentsfilter.cpp locator/opendocumentsfilter.h
locator/urllocatorfilter.cpp locator/urllocatorfilter.h locator/urllocatorfilter.ui
mainwindow.cpp mainwindow.h mainwindow.cpp mainwindow.h
manhattanstyle.cpp manhattanstyle.h manhattanstyle.cpp manhattanstyle.h
menubarfilter.cpp menubarfilter.h menubarfilter.cpp menubarfilter.h

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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