From dd7e73221e81a125b3d64c6650c17a43b9d9dc95 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 17 Dec 2019 14:01:56 +0100 Subject: [PATCH] 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 Reviewed-by: David Schulz --- src/plugins/coreplugin/CMakeLists.txt | 1 + src/plugins/coreplugin/coreplugin.qbs | 9 ++- src/plugins/coreplugin/locator/locator.cpp | 2 + src/plugins/coreplugin/locator/locator.pri | 7 +- .../locator/urllocatorfilter.cpp} | 71 ++++++++++--------- .../locator/urllocatorfilter.h} | 33 ++++----- .../locator/urllocatorfilter.ui} | 8 +-- src/plugins/help/CMakeLists.txt | 1 - src/plugins/help/help.pro | 5 +- src/plugins/help/help.qbs | 1 - src/plugins/help/helpplugin.cpp | 5 -- 11 files changed, 74 insertions(+), 69 deletions(-) rename src/plugins/{help/remotehelpfilter.cpp => coreplugin/locator/urllocatorfilter.cpp} (76%) rename src/plugins/{help/remotehelpfilter.h => coreplugin/locator/urllocatorfilter.h} (80%) rename src/plugins/{help/remotehelpfilter.ui => coreplugin/locator/urllocatorfilter.ui} (95%) diff --git a/src/plugins/coreplugin/CMakeLists.txt b/src/plugins/coreplugin/CMakeLists.txt index edeadeb1142..af7c3c4edaa 100644 --- a/src/plugins/coreplugin/CMakeLists.txt +++ b/src/plugins/coreplugin/CMakeLists.txt @@ -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 diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs index 4a603b655c3..346489102ed 100644 --- a/src/plugins/coreplugin/coreplugin.qbs +++ b/src/plugins/coreplugin/coreplugin.qbs @@ -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" ] } diff --git a/src/plugins/coreplugin/locator/locator.cpp b/src/plugins/coreplugin/locator/locator.cpp index 48749cce3e9..024091696ab 100644 --- a/src/plugins/coreplugin/locator/locator.cpp +++ b/src/plugins/coreplugin/locator/locator.cpp @@ -36,6 +36,7 @@ #include "locatorsettingspage.h" #include "locatorwidget.h" #include "opendocumentsfilter.h" +#include "urllocatorfilter.h" #include #include @@ -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 diff --git a/src/plugins/coreplugin/locator/locator.pri b/src/plugins/coreplugin/locator/locator.pri index c5f2cfaf9c2..2223836c19f 100644 --- a/src/plugins/coreplugin/locator/locator.pri +++ b/src/plugins/coreplugin/locator/locator.pri @@ -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 diff --git a/src/plugins/help/remotehelpfilter.cpp b/src/plugins/coreplugin/locator/urllocatorfilter.cpp similarity index 76% rename from src/plugins/help/remotehelpfilter.cpp rename to src/plugins/coreplugin/locator/urllocatorfilter.cpp index 683754c75d6..2dc0cbd0ed9 100644 --- a/src/plugins/help/remotehelpfilter.cpp +++ b/src/plugins/coreplugin/locator/urllocatorfilter.cpp @@ -23,20 +23,21 @@ ** ****************************************************************************/ -#include "remotehelpfilter.h" +#include "urllocatorfilter.h" +#include #include #include -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 RemoteHelpFilter::matchesFor(QFutureInterface &future, const QString &entry) +QList UrlLocatorFilter::matchesFor( + QFutureInterface &future, const QString &entry) { QList entries; const QStringList urls = remoteUrls(); @@ -144,24 +146,26 @@ QList RemoteHelpFilter::matchesFor(QFutureInterface &future) +void UrlLocatorFilter::refresh(QFutureInterface &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 diff --git a/src/plugins/help/remotehelpfilter.h b/src/plugins/coreplugin/locator/urllocatorfilter.h similarity index 80% rename from src/plugins/help/remotehelpfilter.h rename to src/plugins/coreplugin/locator/urllocatorfilter.h index 550c67fc86e..d26beb31992 100644 --- a/src/plugins/help/remotehelpfilter.h +++ b/src/plugins/coreplugin/locator/urllocatorfilter.h @@ -25,22 +25,23 @@ #pragma once -#include "ui_remotehelpfilter.h" +#include "ui_urllocatorfilter.h" -#include +#include "ilocatorfilter.h" + +#include #include #include -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 matchesFor(QFutureInterface &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 diff --git a/src/plugins/help/remotehelpfilter.ui b/src/plugins/coreplugin/locator/urllocatorfilter.ui similarity index 95% rename from src/plugins/help/remotehelpfilter.ui rename to src/plugins/coreplugin/locator/urllocatorfilter.ui index 5c70d032a09..b06dbfb5f7f 100644 --- a/src/plugins/help/remotehelpfilter.ui +++ b/src/plugins/coreplugin/locator/urllocatorfilter.ui @@ -1,7 +1,7 @@ - Help::Internal::RemoteFilterOptions - + Core::Internal::UrlFilterOptions + 0 @@ -154,7 +154,7 @@ buttonBox accepted() - Help::Internal::RemoteFilterOptions + Core::Internal::UrlFilterOptions accept() @@ -170,7 +170,7 @@ buttonBox rejected() - Help::Internal::RemoteFilterOptions + Core::Internal::UrlFilterOptions reject() diff --git a/src/plugins/help/CMakeLists.txt b/src/plugins/help/CMakeLists.txt index ac70c823e2a..a6711862638 100644 --- a/src/plugins/help/CMakeLists.txt +++ b/src/plugins/help/CMakeLists.txt @@ -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 diff --git a/src/plugins/help/help.pro b/src/plugins/help/help.pro index f4786112958..7b58578ef1c 100644 --- a/src/plugins/help/help.pro +++ b/src/plugins/help/help.pro @@ -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 diff --git a/src/plugins/help/help.qbs b/src/plugins/help/help.qbs index d1458d8470f..d7dde195bbc 100644 --- a/src/plugins/help/help.qbs +++ b/src/plugins/help/help.qbs @@ -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", diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index a6ae3dcb43e..02f29931f10 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -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);