From bde0627e59609bd7ed2238762460359c3c4a7576 Mon Sep 17 00:00:00 2001 From: Eike Ziller <eike.ziller@digia.com> Date: Thu, 11 Apr 2013 12:22:10 +0200 Subject: [PATCH] Add an action to show/hide the mode bar on the far left. Change-Id: If7a74eed7fc77b1d0fd5e4045671b3767fe2d7a2 Reviewed-by: Petar Perisin <petar.perisin@gmail.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com> --- src/plugins/coreplugin/coreconstants.h | 1 + src/plugins/coreplugin/fancytabwidget.cpp | 34 ++++++++++++++--------- src/plugins/coreplugin/fancytabwidget.h | 4 ++- src/plugins/coreplugin/mainwindow.cpp | 17 ++++++++++-- src/plugins/coreplugin/mainwindow.h | 1 + src/plugins/coreplugin/modemanager.cpp | 9 ++++-- src/plugins/coreplugin/modemanager.h | 5 +++- 7 files changed, 52 insertions(+), 19 deletions(-) diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 5b997d30ebe..1bdc864a074 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -98,6 +98,7 @@ const char EXIT[] = "QtCreator.Exit"; const char OPTIONS[] = "QtCreator.Options"; const char TOGGLE_SIDEBAR[] = "QtCreator.ToggleSidebar"; +const char TOGGLE_MODE_SELECTOR[] = "QtCreator.ToggleModeSelector"; const char TOGGLE_FULLSCREEN[] = "QtCreator.ToggleFullScreen"; const char MINIMIZE_WINDOW[] = "QtCreator.MinimizeWindow"; diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp index c4079e4d918..4ef2fc897a3 100644 --- a/src/plugins/coreplugin/fancytabwidget.cpp +++ b/src/plugins/coreplugin/fancytabwidget.cpp @@ -427,8 +427,14 @@ FancyTabWidget::FancyTabWidget(QWidget *parent) connect(m_tabBar, SIGNAL(currentChanged(int)), this, SLOT(showWidget(int))); } -void FancyTabWidget::setSelectionWidgetHidden(bool hidden) { - m_selectionWidget->setHidden(hidden); +void FancyTabWidget::setSelectionWidgetVisible(bool visible) +{ + m_selectionWidget->setVisible(visible); +} + +bool FancyTabWidget::isSelectionWidgetVisible() const +{ + return m_selectionWidget->isVisible(); } void FancyTabWidget::insertTab(int index, QWidget *tab, const QIcon &icon, const QString &label) @@ -456,17 +462,19 @@ void FancyTabWidget::setBackgroundBrush(const QBrush &brush) void FancyTabWidget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) - QPainter painter(this); - - QRect rect = m_selectionWidget->rect().adjusted(0, 0, 1, 0); - rect = style()->visualRect(layoutDirection(), geometry(), rect); - Utils::StyleHelper::verticalGradient(&painter, rect, rect); - painter.setPen(Utils::StyleHelper::borderColor()); - painter.drawLine(rect.topRight(), rect.bottomRight()); - - QColor light = Utils::StyleHelper::sidebarHighlight(); - painter.setPen(light); - painter.drawLine(rect.bottomLeft(), rect.bottomRight()); + if (m_selectionWidget->isVisible()) { + QPainter painter(this); + + QRect rect = m_selectionWidget->rect().adjusted(0, 0, 1, 0); + rect = style()->visualRect(layoutDirection(), geometry(), rect); + Utils::StyleHelper::verticalGradient(&painter, rect, rect); + painter.setPen(Utils::StyleHelper::borderColor()); + painter.drawLine(rect.topRight(), rect.bottomRight()); + + QColor light = Utils::StyleHelper::sidebarHighlight(); + painter.setPen(light); + painter.drawLine(rect.bottomLeft(), rect.bottomRight()); + } } void FancyTabWidget::insertCornerWidget(int pos, QWidget *widget) diff --git a/src/plugins/coreplugin/fancytabwidget.h b/src/plugins/coreplugin/fancytabwidget.h index b1556b82a8d..45441df4a5a 100644 --- a/src/plugins/coreplugin/fancytabwidget.h +++ b/src/plugins/coreplugin/fancytabwidget.h @@ -159,13 +159,15 @@ public: void setTabEnabled(int index, bool enable); bool isTabEnabled(int index) const; + bool isSelectionWidgetVisible() const; + signals: void currentAboutToShow(int index); void currentChanged(int index); public slots: void setCurrentIndex(int index); - void setSelectionWidgetHidden(bool hidden); + void setSelectionWidgetVisible(bool visible); private slots: void showWidget(int index); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 49468aba65c..7edb9df5da6 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -139,6 +139,7 @@ MainWindow::MainWindow() : m_modeManager(0), m_mimeDatabase(new MimeDatabase), m_helpManager(new HelpManager), + m_modeStack(new FancyTabWidget(this)), m_navigationWidget(0), m_rightPaneWidget(0), m_versionDialog(0), @@ -195,14 +196,14 @@ MainWindow::MainWindow() : setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea); + m_modeManager = new ModeManager(this, m_modeStack); + registerDefaultContainers(); registerDefaultActions(); m_navigationWidget = new NavigationWidget(m_toggleSideBarAction); m_rightPaneWidget = new RightPaneWidget(); - m_modeStack = new FancyTabWidget(this); - m_modeManager = new ModeManager(this, m_modeStack); m_statusBarManager = new StatusBarManager(this); m_messageManager = new MessageManager; m_editorManager = new EditorManager(this); @@ -727,6 +728,12 @@ void MainWindow::registerDefaultActions() mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS); m_toggleSideBarAction->setEnabled(false); + // Show Mode Selector Action + m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this); + m_toggleModeSelectorAction->setCheckable(true); + cmd = ActionManager::registerAction(m_toggleModeSelectorAction, Constants::TOGGLE_MODE_SELECTOR, globalContext); + connect(m_toggleModeSelectorAction, SIGNAL(triggered(bool)), ModeManager::instance(), SLOT(setModeSelectorVisible(bool))); + mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS); #if defined(Q_OS_MAC) const QString fullScreenActionText(tr("Enter Full Screen")); @@ -1169,6 +1176,7 @@ static const char settingsGroup[] = "MainWindow"; static const char colorKey[] = "Color"; static const char windowGeometryKey[] = "WindowGeometry"; static const char windowStateKey[] = "WindowState"; +static const char modeSelectorVisibleKey[] = "ModeSelectorVisible"; void MainWindow::readSettings() { @@ -1188,6 +1196,10 @@ void MainWindow::readSettings() resize(1008, 700); // size without window decoration restoreState(m_settings->value(QLatin1String(windowStateKey)).toByteArray()); + bool modeSelectorVisible = m_settings->value(QLatin1String(modeSelectorVisibleKey), true).toBool(); + ModeManager::instance()->setModeSelectorVisible(modeSelectorVisible); + m_toggleModeSelectorAction->setChecked(modeSelectorVisible); + m_settings->endGroup(); m_editorManager->readSettings(); @@ -1204,6 +1216,7 @@ void MainWindow::writeSettings() m_settings->setValue(QLatin1String(windowGeometryKey), saveGeometry()); m_settings->setValue(QLatin1String(windowStateKey), saveState()); + m_settings->setValue(QLatin1String(modeSelectorVisibleKey), ModeManager::isModeSelectorVisible()); m_settings->endGroup(); diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 0fc5c4172dd..51b702ef9d2 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -216,6 +216,7 @@ private: QAction *m_exitAction; QAction *m_optionsAction; QAction *m_toggleSideBarAction; + QAction *m_toggleModeSelectorAction; QAction *m_toggleFullScreenAction; QAction *m_minimizeAction; QAction *m_zoomAction; diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 21407245332..f1f019be140 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -337,9 +337,14 @@ void ModeManager::setFocusToCurrentMode() } } -void ModeManager::setModeBarHidden(bool hidden) +void ModeManager::setModeSelectorVisible(bool visible) { - d->m_modeStack->setSelectionWidgetHidden(hidden); + d->m_modeStack->setSelectionWidgetVisible(visible); +} + +bool ModeManager::isModeSelectorVisible() +{ + return d->m_modeStack->isSelectionWidgetVisible(); } ModeManager *ModeManager::instance() diff --git a/src/plugins/coreplugin/modemanager.h b/src/plugins/coreplugin/modemanager.h index 311b902e589..caf17cada03 100644 --- a/src/plugins/coreplugin/modemanager.h +++ b/src/plugins/coreplugin/modemanager.h @@ -66,9 +66,12 @@ public: static void addWidget(QWidget *widget); static void activateModeType(Id type); - static void setModeBarHidden(bool hidden); static void activateMode(Id id); static void setFocusToCurrentMode(); + static bool isModeSelectorVisible(); + +public slots: + void setModeSelectorVisible(bool visible); signals: void currentModeAboutToChange(Core::IMode *mode); -- GitLab