Move actions for mode style to mode manager

Change-Id: Ic3ea8dcc12511f0f115b0c9124419ac5178f5c8f
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Eike Ziller
2024-07-09 15:35:15 +02:00
parent a555bc3801
commit d386421998
3 changed files with 78 additions and 75 deletions

View File

@@ -172,6 +172,8 @@ const char G_EDIT_FONT[] = "QtCreator.Group.Edit.Font";
const char G_EDIT_EDITOR[] = "QtCreator.Group.Edit.Editor"; const char G_EDIT_EDITOR[] = "QtCreator.Group.Edit.Editor";
// View menu groups // View menu groups
const char G_VIEW_SIDEBAR[] = "QtCreator.Group.View.Sidebar";
const char G_VIEW_MODES[] = "QtCreator.Group.View.Modes";
const char G_VIEW_VIEWS[] = "QtCreator.Group.View.Views"; const char G_VIEW_VIEWS[] = "QtCreator.Group.View.Views";
const char G_VIEW_PANES[] = "QtCreator.Group.View.Panes"; const char G_VIEW_PANES[] = "QtCreator.Group.View.Panes";

View File

@@ -285,13 +285,10 @@ public:
void registerDefaultContainers(); void registerDefaultContainers();
void registerDefaultActions(); void registerDefaultActions();
void registerModeSelectorStyleActions();
void readSettings(); void readSettings();
void saveWindowSettings(); void saveWindowSettings();
void updateModeSelectorStyleMenu();
MainWindow *m_mainwindow = nullptr; MainWindow *m_mainwindow = nullptr;
QTimer m_trimTimer; QTimer m_trimTimer;
QStringList m_aboutInformation; QStringList m_aboutInformation;
@@ -324,9 +321,6 @@ public:
QAction *m_toggleLeftSideBarAction = nullptr; QAction *m_toggleLeftSideBarAction = nullptr;
QAction *m_toggleRightSideBarAction = nullptr; QAction *m_toggleRightSideBarAction = nullptr;
QAction *m_toggleMenubarAction = nullptr; QAction *m_toggleMenubarAction = nullptr;
QAction *m_setModeSelectorStyleIconsAndTextAction = nullptr;
QAction *m_setModeSelectorStyleHiddenAction = nullptr;
QAction *m_setModeSelectorStyleIconsOnlyAction = nullptr;
QToolButton *m_toggleLeftSideBarButton = nullptr; QToolButton *m_toggleLeftSideBarButton = nullptr;
QToolButton *m_toggleRightSideBarButton = nullptr; QToolButton *m_toggleRightSideBarButton = nullptr;
@@ -1654,6 +1648,8 @@ void ICorePrivate::registerDefaultContainers()
ActionContainer *mview = ActionManager::createMenu(Constants::M_VIEW); ActionContainer *mview = ActionManager::createMenu(Constants::M_VIEW);
menubar->addMenu(mview, Constants::G_VIEW); menubar->addMenu(mview, Constants::G_VIEW);
mview->menu()->setTitle(Tr::tr("&View")); mview->menu()->setTitle(Tr::tr("&View"));
mview->appendGroup(Constants::G_VIEW_SIDEBAR);
mview->appendGroup(Constants::G_VIEW_MODES);
mview->appendGroup(Constants::G_VIEW_VIEWS); mview->appendGroup(Constants::G_VIEW_VIEWS);
mview->appendGroup(Constants::G_VIEW_PANES); mview->appendGroup(Constants::G_VIEW_PANES);
@@ -1980,7 +1976,7 @@ void ICorePrivate::registerDefaultActions()
toggleLeftSideBarAction.setCheckable(true); toggleLeftSideBarAction.setCheckable(true);
toggleLeftSideBarAction.setCommandAttribute(Command::CA_UpdateText); toggleLeftSideBarAction.setCommandAttribute(Command::CA_UpdateText);
toggleLeftSideBarAction.setDefaultKeySequence(Tr::tr("Ctrl+0"), Tr::tr("Alt+0")); toggleLeftSideBarAction.setDefaultKeySequence(Tr::tr("Ctrl+0"), Tr::tr("Alt+0"));
toggleLeftSideBarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_VIEWS); toggleLeftSideBarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_SIDEBAR);
toggleLeftSideBarAction.addOnTriggered(this, toggleLeftSideBarAction.addOnTriggered(this,
[this](bool visible) { setSidebarVisible(visible, Side::Left); }); [this](bool visible) { setSidebarVisible(visible, Side::Left); });
@@ -1996,7 +1992,7 @@ void ICorePrivate::registerDefaultActions()
toggleRightSideBarAction.setCheckable(true); toggleRightSideBarAction.setCheckable(true);
toggleRightSideBarAction.setCommandAttribute(Command::CA_UpdateText); toggleRightSideBarAction.setCommandAttribute(Command::CA_UpdateText);
toggleRightSideBarAction.setDefaultKeySequence(Tr::tr("Ctrl+Shift+0"), Tr::tr("Alt+Shift+0")); toggleRightSideBarAction.setDefaultKeySequence(Tr::tr("Ctrl+Shift+0"), Tr::tr("Alt+Shift+0"));
toggleRightSideBarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_VIEWS); toggleRightSideBarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_SIDEBAR);
toggleRightSideBarAction.setEnabled(false); toggleRightSideBarAction.setEnabled(false);
toggleRightSideBarAction.addOnTriggered(this, toggleRightSideBarAction.addOnTriggered(this,
[this](bool visible) { setSidebarVisible(visible, Side::Right); }); [this](bool visible) { setSidebarVisible(visible, Side::Right); });
@@ -2012,7 +2008,7 @@ void ICorePrivate::registerDefaultActions()
toggleMenubarAction.bindContextAction(&m_toggleMenubarAction); toggleMenubarAction.bindContextAction(&m_toggleMenubarAction);
toggleMenubarAction.setCheckable(true); toggleMenubarAction.setCheckable(true);
toggleMenubarAction.setDefaultKeySequence(Tr::tr("Ctrl+Alt+M")); toggleMenubarAction.setDefaultKeySequence(Tr::tr("Ctrl+Alt+M"));
toggleMenubarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_VIEWS); toggleMenubarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_SIDEBAR);
toggleMenubarAction.addOnToggled(this, [](bool visible) { toggleMenubarAction.addOnToggled(this, [](bool visible) {
if (!visible) { if (!visible) {
auto keySequenceAndText = [](const Utils::Id &actionName) { auto keySequenceAndText = [](const Utils::Id &actionName) {
@@ -2046,8 +2042,6 @@ void ICorePrivate::registerDefaultActions()
}); });
} }
registerModeSelectorStyleActions();
// Window->Views // Window->Views
ActionContainer *mviews = ActionManager::createMenu(Constants::M_VIEW_VIEWS); ActionContainer *mviews = ActionManager::createMenu(Constants::M_VIEW_VIEWS);
mview->addMenu(mviews, Constants::G_VIEW_VIEWS); mview->addMenu(mviews, Constants::G_VIEW_VIEWS);
@@ -2100,53 +2094,6 @@ void ICorePrivate::registerDefaultActions()
} }
} }
void ICorePrivate::registerModeSelectorStyleActions()
{
ActionContainer *mview = ActionManager::actionContainer(Constants::M_VIEW);
// Cycle Mode Selector Styles
ActionBuilder(this, Constants::CYCLE_MODE_SELECTOR_STYLE)
.setText(Tr::tr("Cycle Mode Selector Styles"))
.addOnTriggered(this, [this] {
ModeManager::cycleModeStyle();
updateModeSelectorStyleMenu();
});
// Mode Selector Styles
ActionContainer *mmodeLayouts = ActionManager::createMenu(Constants::M_VIEW_MODESTYLES);
mview->addMenu(mmodeLayouts, Constants::G_VIEW_VIEWS);
QMenu *styleMenu = mmodeLayouts->menu();
styleMenu->setTitle(Tr::tr("Modes"));
auto *stylesGroup = new QActionGroup(styleMenu);
stylesGroup->setExclusive(true);
mmodeLayouts->addSeparator(Constants::G_DEFAULT_THREE);
ActionBuilder(this, "QtCreator.Modes.IconsAndText")
.setText(Tr::tr("Icons and Text"))
.setCheckable(true)
.addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::IconsAndText); })
.addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE)
.bindContextAction(&m_setModeSelectorStyleIconsAndTextAction);
stylesGroup->addAction(m_setModeSelectorStyleIconsAndTextAction);
ActionBuilder(this, "QtCreator.Modes.IconsOnly")
.setText(Tr::tr("Icons Only"))
.setCheckable(true)
.addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::IconsOnly); })
.addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE)
.bindContextAction(&m_setModeSelectorStyleIconsOnlyAction);
stylesGroup->addAction(m_setModeSelectorStyleIconsOnlyAction);
ActionBuilder(this, "QtCreator.Modes.Hidden")
.setText(Tr::tr("Hidden"))
.setCheckable(true)
.addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::Hidden); })
.addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE)
.bindContextAction(&m_setModeSelectorStyleHiddenAction);
stylesGroup->addAction(m_setModeSelectorStyleHiddenAction);
}
void ICorePrivate::openFile() void ICorePrivate::openFile()
{ {
ICore::openFiles(EditorManager::getOpenFilePaths(), ICore::SwitchMode); ICore::openFiles(EditorManager::getOpenFilePaths(), ICore::SwitchMode);
@@ -2414,7 +2361,6 @@ void ICorePrivate::readSettings()
} }
ModeManager::setModeStyle(modeStyle); ModeManager::setModeStyle(modeStyle);
updateModeSelectorStyleMenu();
} }
if (globalMenuBar() && !globalMenuBar()->isNativeMenuBar()) { if (globalMenuBar() && !globalMenuBar()->isNativeMenuBar()) {
@@ -2451,21 +2397,6 @@ void ICorePrivate::saveWindowSettings()
settings->endGroup(); settings->endGroup();
} }
void ICorePrivate::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 ICorePrivate::updateContext() void ICorePrivate::updateContext()
{ {
Context contexts = m_highPrioAdditionalContexts; Context contexts = m_highPrioAdditionalContexts;

View File

@@ -17,6 +17,7 @@
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <QAction> #include <QAction>
#include <QActionGroup>
#include <QDebug> #include <QDebug>
#include <QMap> #include <QMap>
#include <QMouseEvent> #include <QMouseEvent>
@@ -68,6 +69,8 @@ struct ModeManagerPrivate
void enabledStateChanged(IMode *mode); void enabledStateChanged(IMode *mode);
void visibleChanged(IMode *mode); void visibleChanged(IMode *mode);
void activateModeHelper(Id id); void activateModeHelper(Id id);
void registerModeSelectorStyleActions();
void updateModeSelectorStyleMenu();
void extensionsInitializedHelper(); void extensionsInitializedHelper();
Internal::FancyTabWidget *m_modeStack; Internal::FancyTabWidget *m_modeStack;
@@ -78,6 +81,9 @@ struct ModeManagerPrivate
Context m_addedContexts; Context m_addedContexts;
int m_oldCurrent; int m_oldCurrent;
ModeManager::Style m_modeStyle = ModeManager::Style::IconsAndText; ModeManager::Style m_modeStyle = ModeManager::Style::IconsAndText;
QAction *m_setModeSelectorStyleIconsAndTextAction = nullptr;
QAction *m_setModeSelectorStyleHiddenAction = nullptr;
QAction *m_setModeSelectorStyleIconsOnlyAction = nullptr;
bool m_startingUp = true; bool m_startingUp = true;
Id m_pendingFirstActiveMode; // Valid before extentionsInitialized. Id m_pendingFirstActiveMode; // Valid before extentionsInitialized.
@@ -180,6 +186,68 @@ void ModeManagerPrivate::activateModeHelper(Id id)
} }
} }
void ModeManagerPrivate::registerModeSelectorStyleActions()
{
ActionContainer *mview = ActionManager::actionContainer(Constants::M_VIEW);
// Cycle Mode Selector Styles
ActionBuilder(m_instance, Constants::CYCLE_MODE_SELECTOR_STYLE)
.setText(Tr::tr("Cycle Mode Selector Styles"))
.addOnTriggered([] { ModeManager::cycleModeStyle(); });
// Mode Selector Styles
ActionContainer *mmodeLayouts = ActionManager::createMenu(Constants::M_VIEW_MODESTYLES);
mview->addMenu(mmodeLayouts, Constants::G_VIEW_MODES);
QMenu *styleMenu = mmodeLayouts->menu();
styleMenu->setTitle(Tr::tr("Modes"));
auto *stylesGroup = new QActionGroup(styleMenu);
stylesGroup->setExclusive(true);
mmodeLayouts->addSeparator(Constants::G_DEFAULT_THREE);
ActionBuilder(m_instance, "QtCreator.Modes.IconsAndText")
.setText(Tr::tr("Icons and Text"))
.setCheckable(true)
.addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::IconsAndText); })
.addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE)
.bindContextAction(&m_setModeSelectorStyleIconsAndTextAction);
stylesGroup->addAction(m_setModeSelectorStyleIconsAndTextAction);
ActionBuilder(m_instance, "QtCreator.Modes.IconsOnly")
.setText(Tr::tr("Icons Only"))
.setCheckable(true)
.addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::IconsOnly); })
.addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE)
.bindContextAction(&m_setModeSelectorStyleIconsOnlyAction);
stylesGroup->addAction(m_setModeSelectorStyleIconsOnlyAction);
ActionBuilder(m_instance, "QtCreator.Modes.Hidden")
.setText(Tr::tr("Hidden"))
.setCheckable(true)
.addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::Hidden); })
.addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE)
.bindContextAction(&m_setModeSelectorStyleHiddenAction);
stylesGroup->addAction(m_setModeSelectorStyleHiddenAction);
updateModeSelectorStyleMenu();
}
void ModeManagerPrivate::updateModeSelectorStyleMenu()
{
if (!m_setModeSelectorStyleHiddenAction) // actions not yet created
return;
switch (m_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 ModeManager::extensionsInitialized() void ModeManager::extensionsInitialized()
{ {
d->extensionsInitializedHelper(); d->extensionsInitializedHelper();
@@ -188,7 +256,7 @@ void ModeManager::extensionsInitialized()
void ModeManagerPrivate::extensionsInitializedHelper() void ModeManagerPrivate::extensionsInitializedHelper()
{ {
m_startingUp = false; m_startingUp = false;
registerModeSelectorStyleActions();
Utils::sort(m_modes, &IMode::priority); Utils::sort(m_modes, &IMode::priority);
std::reverse(m_modes.begin(), m_modes.end()); std::reverse(m_modes.begin(), m_modes.end());
@@ -386,6 +454,8 @@ void ModeManager::setModeStyle(ModeManager::Style style)
d->m_actionBar->setIconsOnly(iconsOnly); d->m_actionBar->setIconsOnly(iconsOnly);
d->m_modeStack->setIconsOnly(iconsOnly); d->m_modeStack->setIconsOnly(iconsOnly);
d->m_modeStack->setSelectionWidgetVisible(visible); d->m_modeStack->setSelectionWidgetVisible(visible);
d->updateModeSelectorStyleMenu();
} }
/*! /*!