summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/mainwindow.cpp
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@qt.io>2018-04-26 16:09:16 +0200
committerAlessandro Portale <alessandro.portale@qt.io>2018-05-09 06:00:27 +0000
commit768f0a6209392e3d6ce248c5b92c12d2fe711976 (patch)
tree602cd0d0368a0e1c7123b93178702471ff139452 /src/plugins/coreplugin/mainwindow.cpp
parent4e3fd9363a0840fb9c2cfd97bd96c8c835c3505e (diff)
downloadqt-creator-768f0a6209392e3d6ce248c5b92c12d2fe711976.tar.gz
Core: Icon-only option for the mode selection bar
This adds an icon-only mode to the mode selection bar (and action bar). A newly introduced Action can cycle between icon+text, icon-only and hidden. Also, the "Window" Application menu gets a submenu with the three styles. Task-number: QTCREATORBUG-18845 Change-Id: I4e0c453f6d920dfbfd795b8b054f6ff392a8700a Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/coreplugin/mainwindow.cpp')
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp80
1 files changed, 68 insertions, 12 deletions
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 33c7a71c17..df65a4c1dc 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -708,13 +708,7 @@ void MainWindow::registerDefaultActions()
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
m_toggleRightSideBarButton->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);
- connect(m_toggleModeSelectorAction, &QAction::triggered,
- ModeManager::instance(), &ModeManager::setModeSelectorVisible);
- mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
+ registerModeSelectorStyleActions();
// Window->Views
ActionContainer *mviews = ActionManager::createMenu(Constants::M_WINDOW_VIEWS);
@@ -760,6 +754,42 @@ void MainWindow::registerDefaultActions()
}
}
+void MainWindow::registerModeSelectorStyleActions()
+{
+ ActionContainer *mwindow = ActionManager::actionContainer(Constants::M_WINDOW);
+
+ // Cycle Mode Selector Styles
+ m_cycleModeSelectorStyleAction = new QAction(tr("Cycle Mode Selector Styles"), this);
+ ActionManager::registerAction(m_cycleModeSelectorStyleAction, Constants::CYCLE_MODE_SELECTOR_STYLE);
+ connect(m_cycleModeSelectorStyleAction, &QAction::triggered, this, [this] {
+ ModeManager::cycleModeStyle();
+ updateModeSelectorStyleMenu();
+ });
+
+ // Mode Selector Styles
+ ActionContainer *mmodeLayouts = ActionManager::createMenu(Constants::M_WINDOW_MODESTYLES);
+ mwindow->addMenu(mmodeLayouts, Constants::G_WINDOW_VIEWS);
+ QMenu *styleMenu = mmodeLayouts->menu();
+ styleMenu->setTitle(tr("Mode Selector Style"));
+ auto *stylesGroup = new QActionGroup(styleMenu);
+ stylesGroup->setExclusive(true);
+
+ m_setModeSelectorStyleIconsAndTextAction = stylesGroup->addAction(tr("Icons and Text"));
+ connect(m_setModeSelectorStyleIconsAndTextAction, &QAction::triggered,
+ [] { ModeManager::setModeStyle(ModeManager::Style::IconsAndText); });
+ m_setModeSelectorStyleIconsAndTextAction->setCheckable(true);
+ m_setModeSelectorStyleIconsOnlyAction = stylesGroup->addAction(tr("Icons Only"));
+ connect(m_setModeSelectorStyleIconsOnlyAction, &QAction::triggered,
+ [] { ModeManager::setModeStyle(ModeManager::Style::IconsOnly); });
+ m_setModeSelectorStyleIconsOnlyAction->setCheckable(true);
+ m_setModeSelectorStyleHiddenAction = stylesGroup->addAction(tr("Hidden"));
+ connect(m_setModeSelectorStyleHiddenAction, &QAction::triggered,
+ [] { ModeManager::setModeStyle(ModeManager::Style::Hidden); });
+ m_setModeSelectorStyleHiddenAction->setCheckable(true);
+
+ styleMenu->addActions(stylesGroup->actions());
+}
+
void MainWindow::openFile()
{
openFiles(EditorManager::getOpenFileNames(), ICore::SwitchMode);
@@ -941,7 +971,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";
+static const char modeSelectorLayoutKey[] = "ModeSelectorLayout";
void MainWindow::readSettings()
{
@@ -957,9 +987,20 @@ void MainWindow::readSettings()
QColor(StyleHelper::DEFAULT_BASE_COLOR)).value<QColor>());
}
- bool modeSelectorVisible = settings->value(QLatin1String(modeSelectorVisibleKey), true).toBool();
- ModeManager::setModeSelectorVisible(modeSelectorVisible);
- m_toggleModeSelectorAction->setChecked(modeSelectorVisible);
+ {
+ ModeManager::Style modeStyle =
+ ModeManager::Style(settings->value(modeSelectorLayoutKey, int(ModeManager::Style::IconsAndText)).toInt());
+
+ // Migrate legacy setting from Qt Creator 4.6 and earlier
+ static const char modeSelectorVisibleKey[] = "ModeSelectorVisible";
+ if (!settings->contains(modeSelectorLayoutKey) && settings->contains(modeSelectorVisibleKey)) {
+ bool visible = settings->value(modeSelectorVisibleKey, true).toBool();
+ modeStyle = visible ? ModeManager::Style::IconsAndText : ModeManager::Style::Hidden;
+ }
+
+ ModeManager::setModeStyle(modeStyle);
+ updateModeSelectorStyleMenu();
+ }
settings->endGroup();
@@ -999,11 +1040,26 @@ void MainWindow::saveWindowSettings()
setWindowState(windowState() & ~Qt::WindowFullScreen);
settings->setValue(QLatin1String(windowGeometryKey), saveGeometry());
settings->setValue(QLatin1String(windowStateKey), saveState());
- settings->setValue(QLatin1String(modeSelectorVisibleKey), ModeManager::isModeSelectorVisible());
+ settings->setValue(modeSelectorLayoutKey, int(ModeManager::modeStyle()));
settings->endGroup();
}
+void MainWindow::updateModeSelectorStyleMenu()
+{
+ switch (ModeManager::modeStyle()) {
+ case ModeManager::Style::IconsAndText:
+ m_setModeSelectorStyleIconsAndTextAction->setChecked(true);
+ break;
+ case ModeManager::Style::IconsOnly:
+ m_setModeSelectorStyleIconsOnlyAction->setChecked(true);
+ break;
+ case ModeManager::Style::Hidden:
+ m_setModeSelectorStyleHiddenAction->setChecked(true);
+ break;
+ }
+}
+
void MainWindow::updateAdditionalContexts(const Context &remove, const Context &add,
ICore::ContextPriority priority)
{