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>
This commit is contained in:
Alessandro Portale
2018-04-26 16:09:16 +02:00
parent 4e3fd9363a
commit 768f0a6209
9 changed files with 233 additions and 87 deletions

View File

@@ -73,7 +73,7 @@ struct ModeManagerPrivate
QVector<Command*> m_modeCommands;
Context m_addedContexts;
int m_oldCurrent;
bool m_modeSelectorVisible;
ModeManager::Style m_modeStyle = ModeManager::Style::IconsAndText;
bool m_startingUp = true;
Id m_pendingFirstActiveMode; // Valid before extentionsInitialized.
@@ -108,8 +108,7 @@ ModeManager::ModeManager(Internal::MainWindow *mainWindow,
d->m_oldCurrent = -1;
d->m_actionBar = new Internal::FancyActionBar(modeStack);
d->m_modeStack->addCornerWidget(d->m_actionBar);
d->m_modeSelectorVisible = true;
d->m_modeStack->setSelectionWidgetVisible(d->m_modeSelectorVisible);
setModeStyle(d->m_modeStyle);
connect(d->m_modeStack, &Internal::FancyTabWidget::currentAboutToShow,
this, &ModeManager::currentTabAboutToChange);
@@ -310,15 +309,26 @@ void ModeManager::setFocusToCurrentMode()
}
}
void ModeManager::setModeSelectorVisible(bool visible)
void ModeManager::setModeStyle(ModeManager::Style style)
{
d->m_modeSelectorVisible = visible;
const bool visible = style != Style::Hidden;
const bool iconsOnly = style == Style::IconsOnly;
d->m_modeStyle = style;
d->m_actionBar->setIconsOnly(iconsOnly);
d->m_modeStack->setIconsOnly(iconsOnly);
d->m_modeStack->setSelectionWidgetVisible(visible);
}
bool ModeManager::isModeSelectorVisible()
void ModeManager::cycleModeStyle()
{
return d->m_modeSelectorVisible;
auto nextStyle = Style((int(modeStyle()) + 1) % 3);
setModeStyle(nextStyle);
}
ModeManager::Style ModeManager::modeStyle()
{
return d->m_modeStyle;
}
ModeManager *ModeManager::instance()