forked from qt-creator/qt-creator
Help: Support multiple pages in external window
Task-number: QTCREATORBUG-20558 Change-Id: I811a749edad7a900c5990d80089409e4076bb9f1 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -117,7 +117,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
{
|
{
|
||||||
m_viewerStack = new QStackedWidget;
|
m_viewerStack = new QStackedWidget;
|
||||||
|
|
||||||
if (style == ModeWidget)
|
if (supportsPages())
|
||||||
m_openPagesManager = new OpenPagesManager(this);
|
m_openPagesManager = new OpenPagesManager(this);
|
||||||
|
|
||||||
auto topLayout = new QVBoxLayout;
|
auto topLayout = new QVBoxLayout;
|
||||||
@@ -250,13 +250,10 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
connect(m_openOnlineDocumentationAction, &QAction::triggered, this, &HelpWidget::openOnlineDocumentation);
|
connect(m_openOnlineDocumentationAction, &QAction::triggered, this, &HelpWidget::openOnlineDocumentation);
|
||||||
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_openOnlineDocumentationAction, cmd));
|
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_openOnlineDocumentationAction, cmd));
|
||||||
|
|
||||||
if (style == ModeWidget) {
|
if (supportsPages()) {
|
||||||
layout->addWidget(new Utils::StyledSeparator(toolBar));
|
layout->addWidget(new Utils::StyledSeparator(toolBar));
|
||||||
layout->addWidget(m_openPagesManager->openPagesComboBox(), 10);
|
layout->addWidget(m_openPagesManager->openPagesComboBox(), 10);
|
||||||
} else {
|
|
||||||
layout->addWidget(new QLabel(), 10);
|
|
||||||
}
|
|
||||||
if (style != SideBarWidget) {
|
|
||||||
m_filterComboBox = new QComboBox;
|
m_filterComboBox = new QComboBox;
|
||||||
m_filterComboBox->setMinimumContentsLength(15);
|
m_filterComboBox->setMinimumContentsLength(15);
|
||||||
m_filterComboBox->setModel(LocalHelpManager::filterModel());
|
m_filterComboBox->setModel(LocalHelpManager::filterModel());
|
||||||
@@ -266,6 +263,8 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
LocalHelpManager::instance(), &LocalHelpManager::setFilterIndex);
|
LocalHelpManager::instance(), &LocalHelpManager::setFilterIndex);
|
||||||
connect(LocalHelpManager::instance(), &LocalHelpManager::filterIndexChanged,
|
connect(LocalHelpManager::instance(), &LocalHelpManager::filterIndexChanged,
|
||||||
m_filterComboBox, &QComboBox::setCurrentIndex);
|
m_filterComboBox, &QComboBox::setCurrentIndex);
|
||||||
|
} else {
|
||||||
|
layout->addWidget(new QLabel(), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
layout->addStretch();
|
layout->addStretch();
|
||||||
@@ -308,16 +307,16 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
auto openMenu = new QMenu(openButton);
|
auto openMenu = new QMenu(openButton);
|
||||||
openButton->setMenu(openMenu);
|
openButton->setMenu(openMenu);
|
||||||
|
|
||||||
if (style != ExternalWindow) {
|
|
||||||
if (m_switchToHelp)
|
if (m_switchToHelp)
|
||||||
openMenu->addAction(m_switchToHelp);
|
openMenu->addAction(m_switchToHelp);
|
||||||
if (style == ModeWidget) {
|
if (supportsPages()) {
|
||||||
QAction *openPage = openMenu->addAction(tr("Open in New Page"));
|
QAction *openPage = openMenu->addAction(tr("Open in New Page"));
|
||||||
connect(openPage, &QAction::triggered, this, [this]() {
|
connect(openPage, &QAction::triggered, this, [this]() {
|
||||||
if (HelpViewer *viewer = currentViewer())
|
if (HelpViewer *viewer = currentViewer())
|
||||||
openNewPage(viewer->source());
|
openNewPage(viewer->source());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if (style != ExternalWindow) {
|
||||||
QAction *openExternal = openMenu->addAction(tr("Open in Window"));
|
QAction *openExternal = openMenu->addAction(tr("Open in Window"));
|
||||||
connect(openExternal, &QAction::triggered, this, [this]() {
|
connect(openExternal, &QAction::triggered, this, [this]() {
|
||||||
if (HelpViewer *viewer = currentViewer()) {
|
if (HelpViewer *viewer = currentViewer()) {
|
||||||
@@ -326,10 +325,11 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
emit closeButtonClicked();
|
emit closeButtonClicked();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
openMenu->addSeparator();
|
openMenu->addSeparator();
|
||||||
|
|
||||||
const Utils::Icon &icon = style == ModeWidget ? Utils::Icons::CLOSE_TOOLBAR
|
const Utils::Icon &icon = style == SideBarWidget ? Utils::Icons::CLOSE_SPLIT_RIGHT
|
||||||
: Utils::Icons::CLOSE_SPLIT_RIGHT;
|
: Utils::Icons::CLOSE_TOOLBAR;
|
||||||
m_closeAction = new QAction(icon.icon(), QString(), toolBar);
|
m_closeAction = new QAction(icon.icon(), QString(), toolBar);
|
||||||
connect(m_closeAction, &QAction::triggered, this, &HelpWidget::closeButtonClicked);
|
connect(m_closeAction, &QAction::triggered, this, &HelpWidget::closeButtonClicked);
|
||||||
connect(m_closeAction, &QAction::triggered, this, [this] {
|
connect(m_closeAction, &QAction::triggered, this, [this] {
|
||||||
@@ -339,7 +339,6 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
button = new QToolButton;
|
button = new QToolButton;
|
||||||
button->setDefaultAction(m_closeAction);
|
button->setDefaultAction(m_closeAction);
|
||||||
layout->addWidget(button);
|
layout->addWidget(button);
|
||||||
}
|
|
||||||
|
|
||||||
QAction *reload = openMenu->addAction(tr("Reload"));
|
QAction *reload = openMenu->addAction(tr("Reload"));
|
||||||
connect(reload, &QAction::triggered, this, [this]() {
|
connect(reload, &QAction::triggered, this, [this]() {
|
||||||
@@ -402,11 +401,10 @@ void HelpWidget::addSideBar()
|
|||||||
{
|
{
|
||||||
QMap<QString, Core::Command *> shortcutMap;
|
QMap<QString, Core::Command *> shortcutMap;
|
||||||
Core::Command *cmd;
|
Core::Command *cmd;
|
||||||
bool supportsNewPages = (m_style == ModeWidget);
|
|
||||||
|
|
||||||
auto contentWindow = new ContentWindow;
|
auto contentWindow = new ContentWindow;
|
||||||
auto contentItem = new Core::SideBarItem(contentWindow, Constants::HELP_CONTENTS);
|
auto contentItem = new Core::SideBarItem(contentWindow, Constants::HELP_CONTENTS);
|
||||||
contentWindow->setOpenInNewPageActionVisible(supportsNewPages);
|
contentWindow->setOpenInNewPageActionVisible(supportsPages());
|
||||||
contentWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_CONTENTS));
|
contentWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_CONTENTS));
|
||||||
connect(contentWindow, &ContentWindow::linkActivated,
|
connect(contentWindow, &ContentWindow::linkActivated,
|
||||||
this, &HelpWidget::open);
|
this, &HelpWidget::open);
|
||||||
@@ -418,7 +416,7 @@ void HelpWidget::addSideBar()
|
|||||||
|
|
||||||
auto indexWindow = new IndexWindow();
|
auto indexWindow = new IndexWindow();
|
||||||
auto indexItem = new Core::SideBarItem(indexWindow, Constants::HELP_INDEX);
|
auto indexItem = new Core::SideBarItem(indexWindow, Constants::HELP_INDEX);
|
||||||
indexWindow->setOpenInNewPageActionVisible(supportsNewPages);
|
indexWindow->setOpenInNewPageActionVisible(supportsPages());
|
||||||
indexWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_INDEX));
|
indexWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_INDEX));
|
||||||
connect(indexWindow, &IndexWindow::linksActivated,
|
connect(indexWindow, &IndexWindow::linksActivated,
|
||||||
this, &HelpWidget::showLinks);
|
this, &HelpWidget::showLinks);
|
||||||
@@ -430,7 +428,7 @@ void HelpWidget::addSideBar()
|
|||||||
|
|
||||||
auto bookmarkWidget = new BookmarkWidget(&LocalHelpManager::bookmarkManager());
|
auto bookmarkWidget = new BookmarkWidget(&LocalHelpManager::bookmarkManager());
|
||||||
bookmarkWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_BOOKMARKS));
|
bookmarkWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_BOOKMARKS));
|
||||||
bookmarkWidget->setOpenInNewPageActionVisible(supportsNewPages);
|
bookmarkWidget->setOpenInNewPageActionVisible(supportsPages());
|
||||||
auto bookmarkItem = new Core::SideBarItem(bookmarkWidget, Constants::HELP_BOOKMARKS);
|
auto bookmarkItem = new Core::SideBarItem(bookmarkWidget, Constants::HELP_BOOKMARKS);
|
||||||
connect(bookmarkWidget, &BookmarkWidget::linkActivated, this, &HelpWidget::setSource);
|
connect(bookmarkWidget, &BookmarkWidget::linkActivated, this, &HelpWidget::setSource);
|
||||||
m_bookmarkAction = new QAction(tr("Activate Help Bookmarks View"), this);
|
m_bookmarkAction = new QAction(tr("Activate Help Bookmarks View"), this);
|
||||||
@@ -450,17 +448,16 @@ void HelpWidget::addSideBar()
|
|||||||
shortcutMap.insert(Constants::HELP_SEARCH, cmd);
|
shortcutMap.insert(Constants::HELP_SEARCH, cmd);
|
||||||
|
|
||||||
Core::SideBarItem *openPagesItem = nullptr;
|
Core::SideBarItem *openPagesItem = nullptr;
|
||||||
if (m_style == ModeWidget) {
|
|
||||||
QWidget *openPagesWidget = m_openPagesManager->openPagesWidget();
|
QWidget *openPagesWidget = m_openPagesManager->openPagesWidget();
|
||||||
openPagesWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_OPENPAGES));
|
openPagesWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_OPENPAGES));
|
||||||
openPagesItem = new Core::SideBarItem(openPagesWidget, Constants::HELP_OPENPAGES);
|
openPagesItem = new Core::SideBarItem(openPagesWidget, Constants::HELP_OPENPAGES);
|
||||||
m_openPagesAction = new QAction(tr("Activate Open Help Pages View"), this);
|
m_openPagesAction = new QAction(tr("Activate Open Help Pages View"), this);
|
||||||
cmd = Core::ActionManager::registerAction(m_openPagesAction, Constants::HELP_OPENPAGES,
|
cmd = Core::ActionManager::registerAction(m_openPagesAction,
|
||||||
|
Constants::HELP_OPENPAGES,
|
||||||
m_context->context());
|
m_context->context());
|
||||||
cmd->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+O")
|
cmd->setDefaultKeySequence(
|
||||||
: tr("Ctrl+Shift+O")));
|
QKeySequence(Core::useMacShortcuts ? tr("Meta+O") : tr("Ctrl+Shift+O")));
|
||||||
shortcutMap.insert(Constants::HELP_OPENPAGES, cmd);
|
shortcutMap.insert(Constants::HELP_OPENPAGES, cmd);
|
||||||
}
|
|
||||||
|
|
||||||
QList<Core::SideBarItem *> itemList = {contentItem, indexItem, bookmarkItem, searchItem};
|
QList<Core::SideBarItem *> itemList = {contentItem, indexItem, bookmarkItem, searchItem};
|
||||||
if (openPagesItem)
|
if (openPagesItem)
|
||||||
@@ -546,7 +543,7 @@ HelpViewer *HelpWidget::insertViewer(int index, const QUrl &url, qreal zoom)
|
|||||||
HelpViewer *viewer = HelpPlugin::createHelpViewer(zoom);
|
HelpViewer *viewer = HelpPlugin::createHelpViewer(zoom);
|
||||||
m_viewerStack->insertWidget(index, viewer);
|
m_viewerStack->insertWidget(index, viewer);
|
||||||
viewer->setFocus(Qt::OtherFocusReason);
|
viewer->setFocus(Qt::OtherFocusReason);
|
||||||
viewer->setActionVisible(HelpViewer::Action::NewPage, m_style == ModeWidget);
|
viewer->setActionVisible(HelpViewer::Action::NewPage, supportsPages());
|
||||||
viewer->setActionVisible(HelpViewer::Action::ExternalWindow, m_style != ExternalWindow);
|
viewer->setActionVisible(HelpViewer::Action::ExternalWindow, m_style != ExternalWindow);
|
||||||
connect(viewer, &HelpViewer::sourceChanged, this, [viewer, this](const QUrl &url) {
|
connect(viewer, &HelpViewer::sourceChanged, this, [viewer, this](const QUrl &url) {
|
||||||
if (currentViewer() == viewer) {
|
if (currentViewer() == viewer) {
|
||||||
@@ -741,10 +738,15 @@ void HelpWidget::saveState() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool HelpWidget::supportsPages() const
|
||||||
|
{
|
||||||
|
return m_style != SideBarWidget;
|
||||||
|
}
|
||||||
|
|
||||||
void HelpWidget::updateCloseButton()
|
void HelpWidget::updateCloseButton()
|
||||||
{
|
{
|
||||||
if (m_style == ModeWidget) {
|
if (supportsPages()) {
|
||||||
const bool closeOnReturn = LocalHelpManager::returnOnClose();
|
const bool closeOnReturn = LocalHelpManager::returnOnClose() && m_style == ModeWidget;
|
||||||
m_closeAction->setEnabled(closeOnReturn || m_viewerStack->count() > 1);
|
m_closeAction->setEnabled(closeOnReturn || m_viewerStack->count() > 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -125,6 +125,7 @@ private:
|
|||||||
void helpModeButtonClicked();
|
void helpModeButtonClicked();
|
||||||
void closeCurrentPage();
|
void closeCurrentPage();
|
||||||
void saveState() const;
|
void saveState() const;
|
||||||
|
bool supportsPages() const;
|
||||||
|
|
||||||
void goHome();
|
void goHome();
|
||||||
void addBookmark();
|
void addBookmark();
|
||||||
|
Reference in New Issue
Block a user