QmlDesigner: Apply new theme on navigatior toolbar

Change-Id: I1e2448a2d8eea1bd3badf27ee02913d8470851c6
Reviewed-by: Brook Cronin <brook.cronin@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Henning Gruendl
2023-02-03 19:39:10 +01:00
committed by Henning Gründl
parent 84d3fdc753
commit 1b2328f4a7
5 changed files with 112 additions and 58 deletions

View File

@@ -698,7 +698,7 @@ QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &i
painter.save(); painter.save();
painter.setPen(color); painter.setPen(color);
painter.setFont(font); painter.setFont(font);
painter.drawText(QRectF(QPoint(0, 0), size), iconSymbol); painter.drawText(QRectF(QPoint(0, 0), size), Qt::AlignCenter, iconSymbol);
painter.restore(); painter.restore();
icon.addPixmap(pixmap); icon.addPixmap(pixmap);

View File

@@ -20,22 +20,19 @@ LineEdit::LineEdit(QWidget *parent)
clearButton = new QToolButton(this); clearButton = new QToolButton(this);
const QString fontName = "qtds_propertyIconFont.ttf"; const QString fontName = "qtds_propertyIconFont.ttf";
const int searchIconSize = 16; const int clearIconSize = 10;
const int clearIconSize = 12; const QColor iconColor(QmlDesigner::Theme::getColor(QmlDesigner::Theme::DStextColor));
const QColor iconColor(QmlDesigner::Theme::getColor(QmlDesigner::Theme::DSiconColor));
const QIcon searchIcon const QIcon searchIcon = Utils::StyleHelper::getIconFromIconFont(
= Utils::StyleHelper::getIconFromIconFont(fontName, fontName,
QmlDesigner::Theme::getIconUnicode( QmlDesigner::Theme::getIconUnicode(QmlDesigner::Theme::Icon::search_small),
QmlDesigner::Theme::Icon::search), 10,
searchIconSize, 16,
searchIconSize,
iconColor); iconColor);
const QIcon clearIcon const QIcon clearIcon = Utils::StyleHelper::getIconFromIconFont(
= Utils::StyleHelper::getIconFromIconFont(fontName, fontName,
QmlDesigner::Theme::getIconUnicode( QmlDesigner::Theme::getIconUnicode(QmlDesigner::Theme::Icon::close_small),
QmlDesigner::Theme::Icon::closeCross),
clearIconSize, clearIconSize,
clearIconSize, clearIconSize,
iconColor); iconColor);
@@ -46,9 +43,9 @@ LineEdit::LineEdit(QWidget *parent)
clearButton->setIconSize(QSize(clearIconSize, clearIconSize)); clearButton->setIconSize(QSize(clearIconSize, clearIconSize));
clearButton->setCursor(Qt::ArrowCursor); clearButton->setCursor(Qt::ArrowCursor);
clearButton->hide(); clearButton->hide();
clearButton->setStyleSheet(Theme::replaceCssColors( clearButton->setStyleSheet(
QString("QToolButton { border: none; padding: 0px; }" Theme::replaceCssColors(QString("QToolButton { border: none; padding: 0px; }"
"QToolButton:hover { background: creatorTheme.DScontrolBackgroundHover; }"))); "QToolButton:hover {}")));
setClearButtonEnabled(false); setClearButtonEnabled(false);
@@ -56,8 +53,20 @@ LineEdit::LineEdit(QWidget *parent)
connect(this, &QLineEdit::textChanged, this, &LineEdit::updateClearButton); connect(this, &QLineEdit::textChanged, this, &LineEdit::updateClearButton);
int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
setStyleSheet(QString("QLineEdit { padding-right: %1px; } ") setStyleSheet(Theme::replaceCssColors(
.arg(clearButton->sizeHint().width() + frameWidth + 8)); QString("QLineEdit { padding-right: %1px; border-radius: 4;"
"color: creatorTheme.DStextColor;"
"border-color: creatorTheme.DScontrolOutline_topToolbarIdle;"
"background: creatorTheme.DStoolbarBackground; }"
"QLineEdit:hover {"
"color: creatorTheme.DStextColor;"
"border-color: creatorTheme.DScontrolOutline_topToolbarHover;"
"background: creatorTheme.DScontrolBackground_toolbarHover; }"
"QLineEdit:focus {"
"color: creatorTheme.DStextColor;"
"border-color: creatorTheme.DSinteraction;"
"background: creatorTheme.DStoolbarBackground; }")
.arg(clearButton->sizeHint().width() + frameWidth + 8)));
setFixedHeight(29); setFixedHeight(29);
} }
@@ -81,7 +90,7 @@ NavigatorSearchWidget::NavigatorSearchWidget(QWidget *parent)
{ {
auto layout = new QBoxLayout(QBoxLayout::LeftToRight); auto layout = new QBoxLayout(QBoxLayout::LeftToRight);
layout->setSpacing(0); layout->setSpacing(0);
layout->setContentsMargins(5, 5, 5, 3); layout->setContentsMargins(10, 6, 10, 6);
setLayout(layout); setLayout(layout);
m_textField = new LineEdit; m_textField = new LineEdit;
@@ -91,6 +100,12 @@ NavigatorSearchWidget::NavigatorSearchWidget(QWidget *parent)
connect(m_textField, &QLineEdit::textChanged, this, &NavigatorSearchWidget::textChanged); connect(m_textField, &QLineEdit::textChanged, this, &NavigatorSearchWidget::textChanged);
layout->addWidget(m_textField); layout->addWidget(m_textField);
setFixedHeight(Theme::toolbarSize());
QPalette pal = QPalette();
pal.setColor(QPalette::Window, Theme::getColor(Utils::Theme::DStoolbarBackground));
setAutoFillBackground(true);
setPalette(pal);
} }
void NavigatorSearchWidget::clear() void NavigatorSearchWidget::clear()

View File

@@ -45,15 +45,17 @@ NavigatorWidget::NavigatorWidget(NavigatorView *view)
layout->setSpacing(0); layout->setSpacing(0);
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
QWidget *toolBar = createToolBar(); m_searchWidget = new NavigatorSearchWidget();
connect(m_searchWidget,
&NavigatorSearchWidget::textChanged,
this,
&NavigatorWidget::textFilterChanged);
layout->addWidget(m_searchWidget);
QWidget *toolBar = createToolBar();
toolBar->setParent(this); toolBar->setParent(this);
layout->addWidget(toolBar); layout->addWidget(toolBar);
m_searchWidget = new NavigatorSearchWidget();
connect(m_searchWidget, &NavigatorSearchWidget::textChanged, this, &NavigatorWidget::textFilterChanged);
layout->addWidget(m_searchWidget);
layout->addWidget(m_treeView); layout->addWidget(m_treeView);
setLayout(layout); setLayout(layout);
@@ -76,13 +78,17 @@ QTreeView *NavigatorWidget::treeView() const
return m_treeView; return m_treeView;
} }
QList<QToolButton *> NavigatorWidget::createToolBarWidgets() QList<QWidget *> NavigatorWidget::createToolBarWidgets()
{ {
QList<QToolButton *> buttons; QList<QWidget *> buttons;
auto empty = new QWidget();
empty->setFixedWidth(5);
empty->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
buttons.append(empty);
auto button = new QToolButton(); auto button = new QToolButton();
button->setIcon(Theme::iconFromName(Theme::Icon::moveUpwards_medium)); button->setIcon(Theme::iconFromName(Theme::Icon::moveUpwards_medium));
// button->setIcon(Icons::ARROW_LEFT.icon());
button->setToolTip(tr("Become last sibling of parent (CTRL + Left).")); button->setToolTip(tr("Become last sibling of parent (CTRL + Left)."));
button->setShortcut(QKeySequence(Qt::Key_Left | Qt::CTRL)); button->setShortcut(QKeySequence(Qt::Key_Left | Qt::CTRL));
connect(button, &QAbstractButton::clicked, this, &NavigatorWidget::leftButtonClicked); connect(button, &QAbstractButton::clicked, this, &NavigatorWidget::leftButtonClicked);
@@ -90,7 +96,6 @@ QList<QToolButton *> NavigatorWidget::createToolBarWidgets()
button = new QToolButton(); button = new QToolButton();
button->setIcon(Theme::iconFromName(Theme::Icon::moveInwards_medium)); button->setIcon(Theme::iconFromName(Theme::Icon::moveInwards_medium));
//button->setIcon(Icons::ARROW_RIGHT.icon());
button->setToolTip(tr("Become child of last sibling (CTRL + Right).")); button->setToolTip(tr("Become child of last sibling (CTRL + Right)."));
button->setShortcut(QKeySequence(Qt::Key_Right | Qt::CTRL)); button->setShortcut(QKeySequence(Qt::Key_Right | Qt::CTRL));
connect(button, &QAbstractButton::clicked, this, &NavigatorWidget::rightButtonClicked); connect(button, &QAbstractButton::clicked, this, &NavigatorWidget::rightButtonClicked);
@@ -98,7 +103,6 @@ QList<QToolButton *> NavigatorWidget::createToolBarWidgets()
button = new QToolButton(); button = new QToolButton();
button->setIcon(Theme::iconFromName(Theme::Icon::moveDown_medium)); button->setIcon(Theme::iconFromName(Theme::Icon::moveDown_medium));
//button->setIcon(Icons::ARROW_DOWN.icon());
button->setToolTip(tr("Move down (CTRL + Down).")); button->setToolTip(tr("Move down (CTRL + Down)."));
button->setShortcut(QKeySequence(Qt::Key_Down | Qt::CTRL)); button->setShortcut(QKeySequence(Qt::Key_Down | Qt::CTRL));
connect(button, &QAbstractButton::clicked, this, &NavigatorWidget::downButtonClicked); connect(button, &QAbstractButton::clicked, this, &NavigatorWidget::downButtonClicked);
@@ -106,45 +110,64 @@ QList<QToolButton *> NavigatorWidget::createToolBarWidgets()
button = new QToolButton(); button = new QToolButton();
button->setIcon(Theme::iconFromName(Theme::Icon::moveUp_medium)); button->setIcon(Theme::iconFromName(Theme::Icon::moveUp_medium));
//button->setIcon(Icons::ARROW_UP.icon());
button->setToolTip(tr("Move up (CTRL + Up).")); button->setToolTip(tr("Move up (CTRL + Up)."));
button->setShortcut(QKeySequence(Qt::Key_Up | Qt::CTRL)); button->setShortcut(QKeySequence(Qt::Key_Up | Qt::CTRL));
connect(button, &QAbstractButton::clicked, this, &NavigatorWidget::upButtonClicked); connect(button, &QAbstractButton::clicked, this, &NavigatorWidget::upButtonClicked);
buttons.append(button); buttons.append(button);
auto filter = new QToolButton; empty = new QWidget();
filter->setIcon(Utils::Icons::FILTER.icon()); empty->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
filter->setToolTip(tr("Filter Tree")); buttons.append(empty);
filter->setPopupMode(QToolButton::InstantPopup);
filter->setProperty("noArrow", true);
auto filterMenu = new QMenu(filter);
auto filterAction = new QAction(tr("Show Only Visible Components"), nullptr);
filterAction->setCheckable(true);
bool filterFlag = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool(); // Show Only Visible Components
filterAction->setChecked(filterFlag); auto visibleIcon = Theme::iconFromName(Theme::Icon::visible_medium);
auto invisibleIcon = Theme::iconFromName(Theme::Icon::invisible_medium,
Theme::getColor(Theme::Color::DStextSelectedTextColor));
QIcon vIcon;
vIcon.addPixmap(invisibleIcon.pixmap({16, 16}), QIcon::Normal, QIcon::On);
vIcon.addPixmap(visibleIcon.pixmap({16, 16}), QIcon::Normal, QIcon::Off);
connect(filterAction, &QAction::toggled, this, &NavigatorWidget::filterToggled); button = new QToolButton();
filterMenu->addAction(filterAction); button->setIcon(vIcon);
button->setCheckable(true);
bool visibleFlag = QmlDesignerPlugin::settings()
.value(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS)
.toBool();
button->setChecked(visibleFlag);
button->setToolTip(tr("Show Only Visible Components"));
connect(button, &QAbstractButton::toggled, this, &NavigatorWidget::filterToggled);
buttons.append(button);
auto reverseAction = new QAction(tr("Reverse Component Order"), nullptr); // Reverse Component Order
reverseAction->setCheckable(true); auto reverseOffIcon = Theme::iconFromName(Theme::Icon::reverseOrder_medium);
auto reverseOnIcon = Theme::iconFromName(Theme::Icon::reverseOrder_medium,
Theme::getColor(Theme::Color::DStextSelectedTextColor));
QIcon rIcon;
rIcon.addPixmap(reverseOnIcon.pixmap({16, 16}), QIcon::Normal, QIcon::On);
rIcon.addPixmap(reverseOffIcon.pixmap({16, 16}), QIcon::Normal, QIcon::Off);
bool reverseFlag = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); button = new QToolButton();
reverseAction->setChecked(reverseFlag); button->setIcon(rIcon);
button->setCheckable(true);
bool reverseFlag = QmlDesignerPlugin::settings()
.value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER)
.toBool();
button->setChecked(reverseFlag);
button->setToolTip(tr("Reverse Component Order"));
connect(button, &QAbstractButton::toggled, this, &NavigatorWidget::reverseOrderToggled);
buttons.append(button);
connect(reverseAction, &QAction::toggled, this, &NavigatorWidget::reverseOrderToggled); empty = new QWidget();
filterMenu->addAction(reverseAction); empty->setFixedWidth(5);
empty->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
filter->setMenu(filterMenu); buttons.append(empty);
buttons.append(filter);
return buttons; return buttons;
} }
QToolBar *NavigatorWidget::createToolBar() QToolBar *NavigatorWidget::createToolBar()
{ {
const QList<QToolButton*> buttons = createToolBarWidgets(); const QList<QWidget *> buttons = createToolBarWidgets();
auto toolBar = new QToolBar(); auto toolBar = new QToolBar();
toolBar->setFixedHeight(Theme::toolbarSize()); toolBar->setFixedHeight(Theme::toolbarSize());

View File

@@ -28,7 +28,7 @@ public:
void setTreeModel(QAbstractItemModel *model); void setTreeModel(QAbstractItemModel *model);
QTreeView *treeView() const; QTreeView *treeView() const;
QList<QToolButton *> createToolBarWidgets(); QList<QWidget *> createToolBarWidgets();
QToolBar *createToolBar(); QToolBar *createToolBar();
void contextHelp(const Core::IContext::HelpCallback &callback) const; void contextHelp(const Core::IContext::HelpCallback &callback) const;

View File

@@ -95,3 +95,19 @@ QLineEdit:focus {
background-color: creatorTheme.DScontrolBackgroundInteraction; background-color: creatorTheme.DScontrolBackgroundInteraction;
border-color: creatorTheme.DScontrolOutlineInteraction; border-color: creatorTheme.DScontrolOutlineInteraction;
} }
QToolBar QToolButton {
border: none;
padding: 0px;
width: 29px; min-width: 29px; max-width: 29px;
height: 29px; min-height: 29px; max-height: 29px;
border-radius: 4px;
}
QToolBar QToolButton:hover {
background-color: creatorTheme.DScontrolBackground_topToolbarHover;
}
QToolBar QToolButton:checked {
background-color: creatorTheme.DSinteraction;
}