From d762373b9577bcf66152c72130f4164b355b810e Mon Sep 17 00:00:00 2001 From: kh1 Date: Fri, 11 May 2012 14:41:40 +0200 Subject: [PATCH] Make it possible to Show/Hide the sidebar in help mode. Task-number: QTCREATORBUG-1533 Change-Id: I0ac767db5bcbda12a9d8ba1572ee75881308d0d0 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/sidebar.cpp | 4 +++- src/plugins/coreplugin/sidebar.h | 1 + src/plugins/help/helpplugin.cpp | 27 ++++++++++++++++++++++++--- src/plugins/help/helpplugin.h | 4 ++++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/sidebar.cpp b/src/plugins/coreplugin/sidebar.cpp index 2b2282dc578..b70fcab909c 100644 --- a/src/plugins/coreplugin/sidebar.cpp +++ b/src/plugins/coreplugin/sidebar.cpp @@ -244,8 +244,10 @@ void SideBar::closeSubWidget() removeSideBarWidget(widget); updateWidgets(); } else { - if (d->m_closeWhenEmpty) + if (d->m_closeWhenEmpty) { setVisible(false); + emit sideBarClosed(); + } } } diff --git a/src/plugins/coreplugin/sidebar.h b/src/plugins/coreplugin/sidebar.h index fac8c5ba6a9..4dc14ecdba9 100644 --- a/src/plugins/coreplugin/sidebar.h +++ b/src/plugins/coreplugin/sidebar.h @@ -119,6 +119,7 @@ public: QMap shortcutMap() const; signals: + void sideBarClosed(); void availableItemsChanged(); private slots: diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index fcea273847a..b93f0e90b25 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -137,7 +137,8 @@ HelpPlugin::HelpPlugin() m_connectWindow(true), m_externalWindow(0), m_backMenu(0), - m_nextMenu(0) + m_nextMenu(0), + m_isSidebarVisible(true) { } @@ -407,8 +408,13 @@ void HelpPlugin::extensionsInitialized() ExtensionSystem::IPlugin::ShutdownFlag HelpPlugin::aboutToShutdown() { - if (m_sideBar) - m_sideBar->saveSettings(Core::ICore::settings(), QLatin1String("HelpSideBar")); + if (m_sideBar) { + QSettings *settings = Core::ICore::settings(); + m_sideBar->saveSettings(settings, QLatin1String("HelpSideBar")); + // keep a boolean value to avoid to modify the sidebar class, at least some qml stuff + // depends on the always visible property of the sidebar... + settings->setValue(QLatin1String("HelpSideBar/") + QLatin1String("Visible"), m_isSidebarVisible); + } delete m_externalWindow; return SynchronousShutdown; @@ -500,7 +506,9 @@ void HelpPlugin::setupUi() << m_openPagesItem; m_sideBar = new Core::SideBar(itemList, QList() << m_contentItem << m_openPagesItem); + m_sideBar->setCloseWhenEmpty(true); m_sideBar->setShortcutMap(shortcutMap); + connect(m_sideBar, SIGNAL(sideBarClosed()), this, SLOT(onSideBarVisibilityChanged())); m_splitter->setOpaqueResize(false); m_splitter->insertWidget(0, m_sideBar); @@ -508,6 +516,12 @@ void HelpPlugin::setupUi() m_splitter->setStretchFactor(1, 1); m_sideBar->readSettings(Core::ICore::settings(), QLatin1String("HelpSideBar")); m_splitter->setSizes(QList() << m_sideBar->size().width() << 300); + + m_toggleSideBarAction = new QAction(QIcon(QLatin1String(Core::Constants::ICON_TOGGLE_SIDEBAR)), + tr("Show Sidebar"), this); + m_toggleSideBarAction->setCheckable(true); + connect(m_toggleSideBarAction, SIGNAL(triggered(bool)), this, SLOT(showHideSidebar())); + cmd = am->registerAction(m_toggleSideBarAction, Core::Constants::TOGGLE_SIDEBAR, modecontext); } void HelpPlugin::resetFilter() @@ -690,6 +704,7 @@ void HelpPlugin::slotHideRightPane() void HelpPlugin::showHideSidebar() { m_sideBar->setVisible(!m_sideBar->isVisible()); + onSideBarVisibilityChanged(); } void HelpPlugin::showExternalWindow() @@ -1229,6 +1244,12 @@ void HelpPlugin::openFindToolBar() Find::FindPlugin::instance()->openFindToolBar(Find::FindPlugin::FindForward); } +void HelpPlugin::onSideBarVisibilityChanged() +{ + m_isSidebarVisible = m_sideBar->isVisible(); + m_toggleSideBarAction->setToolTip(m_isSidebarVisible ? tr("Hide Sidebar") : tr("Show Sidebar")); +} + void HelpPlugin::doSetupIfNeeded() { m_helpManager->setupGuiHelpEngine(); diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index 4a0b10df123..fbb5e07dc8e 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -119,6 +119,7 @@ private slots: void slotReportBug(); void openFindToolBar(); + void onSideBarVisibilityChanged(); void scaleRightPaneUp(); void scaleRightPaneDown(); @@ -176,6 +177,9 @@ private: QMenu *m_nextMenu; Utils::StyledBar *m_internalHelpBar; Utils::StyledBar *m_externalHelpBar; + + bool m_isSidebarVisible; + QAction *m_toggleSideBarAction; }; } // namespace Internal