aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/help/helpwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/help/helpwidget.cpp')
-rw-r--r--src/plugins/help/helpwidget.cpp56
1 files changed, 52 insertions, 4 deletions
diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp
index e8d85caa18..7d25d631a9 100644
--- a/src/plugins/help/helpwidget.cpp
+++ b/src/plugins/help/helpwidget.cpp
@@ -61,6 +61,11 @@
#include <QStatusBar>
#include <QToolButton>
+#ifdef HELP_NEW_FILTER_ENGINE
+#include <QtHelp/QHelpEngine>
+#include <QtHelp/QHelpFilterEngine>
+#endif
+
static const char kWindowSideBarSettingsKey[] = "Help/WindowSideBar";
static const char kModeSideBarSettingsKey[] = "Help/ModeSideBar";
@@ -233,7 +238,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
if (style == ExternalWindow) {
static int windowId = 0;
Core::ICore::registerWindow(this,
- Core::Context(Core::Id("Help.Window.").withSuffix(++windowId)));
+ Core::Context(Utils::Id("Help.Window.").withSuffix(++windowId)));
setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing
}
if (style != SideBarWidget) {
@@ -359,15 +364,24 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
m_filterComboBox = new QComboBox;
m_filterComboBox->setMinimumContentsLength(15);
+ layout->addWidget(m_filterComboBox);
+#ifndef HELP_NEW_FILTER_ENGINE
m_filterComboBox->setModel(LocalHelpManager::filterModel());
m_filterComboBox->setCurrentIndex(LocalHelpManager::filterIndex());
- layout->addWidget(m_filterComboBox);
connect(m_filterComboBox, QOverload<int>::of(&QComboBox::activated),
LocalHelpManager::instance(), &LocalHelpManager::setFilterIndex);
connect(LocalHelpManager::instance(),
&LocalHelpManager::filterIndexChanged,
m_filterComboBox,
&QComboBox::setCurrentIndex);
+#else
+ connect(&LocalHelpManager::helpEngine(), &QHelpEngine::setupFinished,
+ this, &HelpWidget::setupFilterCombo, Qt::QueuedConnection);
+ connect(m_filterComboBox, QOverload<int>::of(&QComboBox::activated),
+ this, &HelpWidget::filterDocumentation);
+ connect(LocalHelpManager::filterEngine(), &QHelpFilterEngine::filterActivated,
+ this, &HelpWidget::currentFilterChanged);
+#endif
Core::ActionContainer *windowMenu = Core::ActionManager::actionContainer(
Core::Constants::M_WINDOW);
@@ -487,6 +501,41 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
}
}
+#ifdef HELP_NEW_FILTER_ENGINE
+
+void HelpWidget::setupFilterCombo()
+{
+ const QString currentFilter = LocalHelpManager::filterEngine()->activeFilter();
+ m_filterComboBox->clear();
+ m_filterComboBox->addItem(tr("Unfiltered"));
+ const QStringList allFilters = LocalHelpManager::filterEngine()->filters();
+ if (!allFilters.isEmpty())
+ m_filterComboBox->insertSeparator(1);
+ for (const QString &filter : allFilters)
+ m_filterComboBox->addItem(filter, filter);
+
+ int idx = m_filterComboBox->findData(currentFilter);
+ if (idx < 0)
+ idx = 0;
+ m_filterComboBox->setCurrentIndex(idx);
+}
+
+void HelpWidget::filterDocumentation(int filterIndex)
+{
+ const QString filter = m_filterComboBox->itemData(filterIndex).toString();
+ LocalHelpManager::filterEngine()->setActiveFilter(filter);
+}
+
+void HelpWidget::currentFilterChanged(const QString &filter)
+{
+ int index = m_filterComboBox->findData(filter);
+ if (index < 0)
+ index = 0;
+ m_filterComboBox->setCurrentIndex(index);
+}
+
+#endif
+
HelpWidget::~HelpWidget()
{
saveState();
@@ -499,7 +548,6 @@ HelpWidget::~HelpWidget()
if (m_openPagesAction)
Core::ActionManager::unregisterAction(m_openPagesAction, Constants::HELP_OPENPAGES);
}
- Core::ICore::removeContextObject(m_context);
Core::ActionManager::unregisterAction(m_copy, Core::Constants::COPY);
Core::ActionManager::unregisterAction(m_printAction, Core::Constants::PRINT);
if (m_toggleSideBarAction)
@@ -753,7 +801,7 @@ HelpViewer *HelpWidget::openNewPage(const QUrl &url)
return page;
}
-void HelpWidget::showLinks(const QMap<QString, QUrl> &links,
+void HelpWidget::showLinks(const QMultiMap<QString, QUrl> &links,
const QString &keyword, bool newPage)
{
if (links.size() < 1)