forked from qt-creator/qt-creator
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:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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">
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user