aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/help/helpwidget.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2016-09-16 13:54:41 +0200
committerEike Ziller <eike.ziller@qt.io>2016-09-23 11:54:00 +0000
commit1da05949e9b46844f81148cbd4eafd5ffcc6b0b3 (patch)
tree34a8ab211c3f59f43aebd72b0959207d9ea6a0ed /src/plugins/help/helpwidget.cpp
parenta416a5b6e3e0d0c038276f1093cc5a1a770c3d5c (diff)
Help: Add button for opening help in external window
Task-number: QTCREATORBUG-16842 Change-Id: I2d647ea08c108459b56abacc765555d64e787951 Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/help/helpwidget.cpp')
-rw-r--r--src/plugins/help/helpwidget.cpp42
1 files changed, 35 insertions, 7 deletions
diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp
index 40697fc50f0..51686552c3b 100644
--- a/src/plugins/help/helpwidget.cpp
+++ b/src/plugins/help/helpwidget.cpp
@@ -67,6 +67,14 @@ static const char kModeSideBarSettingsKey[] = "Help/ModeSideBar";
namespace Help {
namespace Internal {
+static void openUrlInWindow(const QUrl &url)
+{
+ HelpViewer *viewer = HelpPlugin::viewerForHelpViewerLocation(Core::HelpManager::ExternalHelpAlways);
+ if (QTC_GUARD(viewer))
+ viewer->setSource(url);
+ Core::ICore::raiseWindow(viewer);
+}
+
HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget *parent) :
QWidget(parent),
m_style(style)
@@ -139,7 +147,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_toggleSideBarAction, cmd));
if (style != ModeWidget) {
- m_switchToHelp = new QAction(tr("Go to Help Mode"), toolBar);
+ m_switchToHelp = new QAction(tr("Open in Help Mode"), toolBar);
cmd = Core::ActionManager::registerAction(m_switchToHelp, Constants::CONTEXT_HELP, context);
connect(m_switchToHelp, &QAction::triggered, this, &HelpWidget::helpModeButtonClicked);
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_switchToHelp, cmd));
@@ -230,6 +238,31 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
}
if (style != ExternalWindow) {
+ auto openButton = new QToolButton;
+ openButton->setIcon(Utils::Icons::SPLIT_HORIZONTAL_TOOLBAR.icon());
+ openButton->setPopupMode(QToolButton::InstantPopup);
+ openButton->setProperty("noArrow", true);
+ layout->addWidget(openButton);
+ QMenu *openMenu = new QMenu(openButton);
+ if (m_switchToHelp)
+ openMenu->addAction(m_switchToHelp);
+ if (style == ModeWidget) {
+ QAction *openPage = openMenu->addAction(tr("Open in New Page"));
+ connect(openPage, &QAction::triggered, this, [this]() {
+ if (HelpViewer *viewer = currentViewer())
+ OpenPagesManager::instance().createPage(viewer->source());
+ });
+ }
+ QAction *openExternal = openMenu->addAction(tr("Open in Window"));
+ connect(openExternal, &QAction::triggered, this, [this]() {
+ if (HelpViewer *viewer = currentViewer()) {
+ openUrlInWindow(viewer->source());
+ if (m_style == SideBarWidget)
+ emit closeButtonClicked();
+ }
+ });
+ openButton->setMenu(openMenu);
+
const Utils::Icon &icon = style == ModeWidget ? Utils::Icons::CLOSE_TOOLBAR
: Utils::Icons::CLOSE_SPLIT_RIGHT;
m_closeAction = new QAction(icon.icon(), QString(), toolBar);
@@ -441,12 +474,7 @@ void HelpWidget::addViewer(HelpViewer *viewer)
connect(viewer, &HelpViewer::newPageRequested, [](const QUrl &url) {
OpenPagesManager::instance().createPage(url);
});
- connect(viewer, &HelpViewer::externalPageRequested, [](const QUrl &url) {
- HelpViewer *viewer = HelpPlugin::viewerForHelpViewerLocation(Core::HelpManager::ExternalHelpAlways);
- if (QTC_GUARD(viewer))
- viewer->setSource(url);
- Core::ICore::raiseWindow(viewer);
- });
+ connect(viewer, &HelpViewer::externalPageRequested, this, &openUrlInWindow);
updateCloseButton();
}