Themes: Add a theme flag for "default" or "flat" ProjectsMode

I'd like a "flat" style to have a "default" projects mode.
This patch introduces a FlatProjectsMode. The painting code of the
widgets in the project mode follow that instead of the
Theme::WidgetStyle.

In the course of it, DoubleTabWidget does not imitate the dummy toolbar
anymore, but calls the style painting code, instead. That makes the
theme color DoubleTabWidget1stEmptyAreaBackgroundColor obsolete, so that
key disappears from the Theme enum and also from the creatorthemes.

Change-Id: Ia1479c761f61753d6738a43bbde368bf0b8814b2
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Alessandro Portale
2016-03-04 17:55:20 +01:00
parent 383737d020
commit ea01867297
8 changed files with 34 additions and 39 deletions

View File

@@ -31,7 +31,6 @@ ComboBoxTextColor=text
DetailsButtonBackgroundColorHover=hoverBackground DetailsButtonBackgroundColorHover=hoverBackground
DetailsWidgetBackgroundColor=ff4a4a4a DetailsWidgetBackgroundColor=ff4a4a4a
DockWidgetResizeHandleColor=shadowBackground DockWidgetResizeHandleColor=shadowBackground
DoubleTabWidget1stEmptyAreaBackgroundColor=normalBackground
DoubleTabWidget1stSeparatorColor=hoverBackground DoubleTabWidget1stSeparatorColor=hoverBackground
DoubleTabWidget1stTabActiveTextColor=text DoubleTabWidget1stTabActiveTextColor=text
DoubleTabWidget1stTabBackgroundColor=ff4a4a4a DoubleTabWidget1stTabBackgroundColor=ff4a4a4a
@@ -174,6 +173,7 @@ DrawSearchResultWidgetFrame=false
DrawTargetSelectorBottom=false DrawTargetSelectorBottom=false
ApplyThemePaletteGlobally=true ApplyThemePaletteGlobally=true
FlatSideBarIcons=true FlatSideBarIcons=true
FlatProjectsMode=true
[Gradients] [Gradients]
DetailsWidgetHeaderGradient\1\color=0 DetailsWidgetHeaderGradient\1\color=0

View File

@@ -7,7 +7,7 @@ shadowBackground=ff404244
text=ff000000 text=ff000000
textDisabled=55000000 textDisabled=55000000
toolBarItem=b6fbfdff toolBarItem=b6fbfdff
toolBarItemDisabled=38fbfdff toolBarItemDisabled=88a4a6a8
hoverBackground=ff515151 hoverBackground=ff515151
selectedBackground=ff151515 selectedBackground=ff151515
normalBackground=ffffffff normalBackground=ffffffff
@@ -30,18 +30,17 @@ CanceledSearchTextColor=ff0000
ComboBoxArrowColor=toolBarItem ComboBoxArrowColor=toolBarItem
ComboBoxArrowColorDisabled=toolBarItemDisabled ComboBoxArrowColorDisabled=toolBarItemDisabled
ComboBoxTextColor=toolBarItem ComboBoxTextColor=toolBarItem
DetailsButtonBackgroundColorHover=hoverBackground DetailsButtonBackgroundColorHover=b4ffffff
DetailsWidgetBackgroundColor=ff4a4a4a DetailsWidgetBackgroundColor=28ffffff
DockWidgetResizeHandleColor=splitter DockWidgetResizeHandleColor=splitter
DoubleTabWidget1stEmptyAreaBackgroundColor=normalBackground DoubleTabWidget1stSeparatorColor=ffff0000
DoubleTabWidget1stSeparatorColor=hoverBackground DoubleTabWidget1stTabActiveTextColor=ff000000
DoubleTabWidget1stTabActiveTextColor=text DoubleTabWidget1stTabBackgroundColor=ffff0000
DoubleTabWidget1stTabBackgroundColor=ff4a4a4a DoubleTabWidget1stTabInactiveTextColor=ffffffff
DoubleTabWidget1stTabInactiveTextColor=textDisabled DoubleTabWidget2ndSeparatorColor=ffff0000
DoubleTabWidget2ndSeparatorColor=hoverBackground DoubleTabWidget2ndTabActiveTextColor=ffffffff
DoubleTabWidget2ndTabActiveTextColor=text DoubleTabWidget2ndTabBackgroundColor=ffff0000
DoubleTabWidget2ndTabBackgroundColor=ff434343 DoubleTabWidget2ndTabInactiveTextColor=ff000000
DoubleTabWidget2ndTabInactiveTextColor=textDisabled
EditorPlaceholderColor=normalBackground EditorPlaceholderColor=normalBackground
FancyToolBarSeparatorColor=43ffffff FancyToolBarSeparatorColor=43ffffff
FancyTabBarBackgroundColor=shadowBackground FancyTabBarBackgroundColor=shadowBackground
@@ -176,6 +175,7 @@ DrawSearchResultWidgetFrame=false
DrawTargetSelectorBottom=false DrawTargetSelectorBottom=false
ApplyThemePaletteGlobally=false ApplyThemePaletteGlobally=false
FlatSideBarIcons=true FlatSideBarIcons=true
FlatProjectsMode=false
[Gradients] [Gradients]
DetailsWidgetHeaderGradient\1\color=0 DetailsWidgetHeaderGradient\1\color=0

View File

@@ -25,7 +25,6 @@ ComboBoxTextColor=ffffffff
DetailsButtonBackgroundColorHover=b4ffffff DetailsButtonBackgroundColorHover=b4ffffff
DetailsWidgetBackgroundColor=28ffffff DetailsWidgetBackgroundColor=28ffffff
DockWidgetResizeHandleColor=ff000000 DockWidgetResizeHandleColor=ff000000
DoubleTabWidget1stEmptyAreaBackgroundColor=ffff0000
DoubleTabWidget1stSeparatorColor=ffff0000 DoubleTabWidget1stSeparatorColor=ffff0000
DoubleTabWidget1stTabActiveTextColor=ff000000 DoubleTabWidget1stTabActiveTextColor=ff000000
DoubleTabWidget1stTabBackgroundColor=ffff0000 DoubleTabWidget1stTabBackgroundColor=ffff0000
@@ -168,6 +167,7 @@ DrawSearchResultWidgetFrame=true
DrawTargetSelectorBottom=true DrawTargetSelectorBottom=true
ApplyThemePaletteGlobally=false ApplyThemePaletteGlobally=false
FlatSideBarIcons=false FlatSideBarIcons=false
FlatProjectsMode=false
[Gradients] [Gradients]
DetailsWidgetHeaderGradient\1\color=ffffff DetailsWidgetHeaderGradient\1\color=ffffff

View File

@@ -122,7 +122,7 @@ void DetailsButton::paintEvent(QPaintEvent *e)
c.setAlpha (int(m_fader * c.alpha())); c.setAlpha (int(m_fader * c.alpha()));
QRect r = rect(); QRect r = rect();
if (creatorTheme()->widgetStyle() == Theme::StyleDefault) if (!creatorTheme()->flag(Theme::FlatProjectsMode))
r.adjust(1, 1, -2, -2); r.adjust(1, 1, -2, -2);
p.fillRect(r, c); p.fillRect(r, c);
} }
@@ -158,7 +158,7 @@ QPixmap DetailsButton::cacheRendering(const QSize &size, bool checked)
p.setRenderHint(QPainter::Antialiasing, true); p.setRenderHint(QPainter::Antialiasing, true);
p.translate(0.5, 0.5); p.translate(0.5, 0.5);
if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { if (!creatorTheme()->flag(Theme::FlatProjectsMode)) {
QLinearGradient lg; QLinearGradient lg;
lg.setCoordinateMode(QGradient::ObjectBoundingMode); lg.setCoordinateMode(QGradient::ObjectBoundingMode);
lg.setFinalStop(0, 1); lg.setFinalStop(0, 1);

View File

@@ -146,7 +146,7 @@ QPixmap DetailsWidget::createBackground(const QSize &size, int topHeight, QWidge
else else
p.fillRect(fullRect, creatorTheme()->color(Theme::DetailsWidgetBackgroundColor)); p.fillRect(fullRect, creatorTheme()->color(Theme::DetailsWidgetBackgroundColor));
if (creatorTheme()->widgetStyle () == Theme::StyleDefault) { if (!creatorTheme()->flag(Theme::FlatProjectsMode)) {
QLinearGradient lg(topRect.topLeft(), topRect.bottomLeft()); QLinearGradient lg(topRect.topLeft(), topRect.bottomLeft());
lg.setStops(creatorTheme()->gradient(Theme::DetailsWidgetHeaderGradient)); lg.setStops(creatorTheme()->gradient(Theme::DetailsWidgetHeaderGradient));
p.fillRect(topRect, lg); p.fillRect(topRect, lg);

View File

@@ -70,7 +70,6 @@ public:
DetailsButtonBackgroundColorHover, DetailsButtonBackgroundColorHover,
DetailsWidgetBackgroundColor, DetailsWidgetBackgroundColor,
DockWidgetResizeHandleColor, DockWidgetResizeHandleColor,
DoubleTabWidget1stEmptyAreaBackgroundColor,
DoubleTabWidget1stSeparatorColor, DoubleTabWidget1stSeparatorColor,
DoubleTabWidget1stTabActiveTextColor, DoubleTabWidget1stTabActiveTextColor,
DoubleTabWidget1stTabBackgroundColor, DoubleTabWidget1stTabBackgroundColor,
@@ -260,7 +259,8 @@ public:
ComboBoxDrawTextShadow, ComboBoxDrawTextShadow,
DerivePaletteFromTheme, DerivePaletteFromTheme,
ApplyThemePaletteGlobally, ApplyThemePaletteGlobally,
FlatSideBarIcons FlatSideBarIcons,
FlatProjectsMode
}; };
enum WidgetStyle { enum WidgetStyle {

View File

@@ -52,7 +52,7 @@ static const int OVERFLOW_DROPDOWN_WIDTH = StyleHelper::navigationWidgetHeight()
static void drawFirstLevelSeparator(QPainter *painter, const QPointF &top, const QPointF &bottom) static void drawFirstLevelSeparator(QPainter *painter, const QPointF &top, const QPointF &bottom)
{ {
QLinearGradient grad(top, bottom); QLinearGradient grad(top, bottom);
if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { if (!creatorTheme()->flag(Theme::FlatProjectsMode)) {
grad.setColorAt(0, QColor(255, 255, 255, 20)); grad.setColorAt(0, QColor(255, 255, 255, 20));
grad.setColorAt(0.4, QColor(255, 255, 255, 60)); grad.setColorAt(0.4, QColor(255, 255, 255, 60));
grad.setColorAt(0.7, QColor(255, 255, 255, 50)); grad.setColorAt(0.7, QColor(255, 255, 255, 50));
@@ -74,7 +74,7 @@ static void drawFirstLevelSeparator(QPainter *painter, const QPointF &top, const
static void drawSecondLevelSeparator(QPainter *painter, QPoint top, QPoint bottom) static void drawSecondLevelSeparator(QPainter *painter, QPoint top, QPoint bottom)
{ {
QLinearGradient grad(top, bottom); QLinearGradient grad(top, bottom);
if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { if (!creatorTheme()->flag(Theme::FlatProjectsMode)) {
grad.setColorAt(0, QColor(255, 255, 255, 0)); grad.setColorAt(0, QColor(255, 255, 255, 0));
grad.setColorAt(0.4, QColor(255, 255, 255, 100)); grad.setColorAt(0.4, QColor(255, 255, 255, 100));
grad.setColorAt(0.7, QColor(255, 255, 255, 100)); grad.setColorAt(0.7, QColor(255, 255, 255, 100));
@@ -359,18 +359,13 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event)
// draw top level tab bar // draw top level tab bar
r.setHeight(StyleHelper::navigationWidgetHeight()); r.setHeight(StyleHelper::navigationWidgetHeight());
const QRectF borderRect = QRectF(r).adjusted(0.5, 0.5, -0.5, -0.5); {
if (creatorTheme()->widgetStyle () == Theme::StyleDefault) { QStyleOptionToolBar option;
QPoint offset = window()->mapToGlobal(QPoint(0, 0)) - mapToGlobal(r.topLeft()); option.rect = r;
QRect gradientSpan = QRect(offset, window()->size()); option.state = QStyle::State_Horizontal;
StyleHelper::horizontalGradient(&painter, gradientSpan, r); setProperty("panelwidget", true);
painter.setPen(StyleHelper::borderColor()); QApplication::style()->drawControl(QStyle::CE_ToolBar, &option, &painter, this);
QColor lighter(255, 255, 255, 40); setProperty("panelwidget", false);
painter.drawLine(borderRect.bottomLeft(), borderRect.bottomRight());
painter.setPen(lighter);
painter.drawLine(borderRect.topLeft(), borderRect.topRight());
} else {
painter.fillRect(r, creatorTheme()->color(Theme::DoubleTabWidget1stEmptyAreaBackgroundColor));
} }
QFontMetrics fm(font()); QFontMetrics fm(font());
@@ -383,7 +378,7 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event)
} }
QLinearGradient grad(QPoint(0, 0), QPoint(0, r.height() + OTHER_HEIGHT - 1)); QLinearGradient grad(QPoint(0, 0), QPoint(0, r.height() + OTHER_HEIGHT - 1));
if (creatorTheme()->widgetStyle() == Theme::StyleFlat) { if (creatorTheme()->flag(Theme::FlatProjectsMode)) {
grad.setColorAt(0, creatorTheme()->color(Theme::DoubleTabWidget1stTabBackgroundColor)); grad.setColorAt(0, creatorTheme()->color(Theme::DoubleTabWidget1stTabBackgroundColor));
} else { } else {
grad.setColorAt(0, QColor(247, 247, 247)); grad.setColorAt(0, QColor(247, 247, 247));
@@ -392,7 +387,7 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event)
// draw background of second bar // draw background of second bar
painter.fillRect(QRect(0, r.height(), r.width(), OTHER_HEIGHT), grad); painter.fillRect(QRect(0, r.height(), r.width(), OTHER_HEIGHT), grad);
if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { if (!creatorTheme()->flag(Theme::FlatProjectsMode)) {
painter.setPen(QColor(0x505050)); painter.setPen(QColor(0x505050));
painter.drawLine(QPointF(0.5, r.height() + OTHER_HEIGHT - 0.5), painter.drawLine(QPointF(0.5, r.height() + OTHER_HEIGHT - 0.5),
QPointF(r.width() - 0.5, r.height() + OTHER_HEIGHT - 0.5)); QPointF(r.width() - 0.5, r.height() + OTHER_HEIGHT - 0.5));
@@ -477,7 +472,7 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event)
r.height() + 1), r.height() + 1),
grad); grad);
if (actualIndex != 0 && creatorTheme()->widgetStyle() == Theme::StyleDefault) { if (actualIndex != 0 && !creatorTheme()->flag(Theme::FlatProjectsMode)) {
painter.setPen(QColor(255, 255, 255, 170)); painter.setPen(QColor(255, 255, 255, 170));
painter.drawLine(QLineF(x + 0.5, 0.5, x + 0.5, r.height() - 0.5)); painter.drawLine(QLineF(x + 0.5, 0.5, x + 0.5, r.height() - 0.5));
} }
@@ -486,7 +481,7 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event)
painter.drawText(x, baseline, tab.displayName()); painter.drawText(x, baseline, tab.displayName());
x += nameWidth.at(actualIndex); x += nameWidth.at(actualIndex);
x += MARGIN; x += MARGIN;
if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { if (!creatorTheme()->flag(Theme::FlatProjectsMode)) {
painter.setPen(StyleHelper::borderColor()); painter.setPen(StyleHelper::borderColor());
painter.drawLine(QLineF(x + 0.5, 0.5, x + 0.5, r.height() - 0.5)); painter.drawLine(QLineF(x + 0.5, 0.5, x + 0.5, r.height() - 0.5));
painter.setPen(QColor(0, 0, 0, 20)); painter.setPen(QColor(0, 0, 0, 20));
@@ -526,7 +521,7 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event)
int textWidth = fm.width(subTabs.at(i)); int textWidth = fm.width(subTabs.at(i));
if (currentTab.currentSubTab == i) { if (currentTab.currentSubTab == i) {
const QRect tabRect(x, y, 2 * SELECTION_IMAGE_WIDTH + textWidth, imageHeight); const QRect tabRect(x, y, 2 * SELECTION_IMAGE_WIDTH + textWidth, imageHeight);
if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { if (!creatorTheme()->flag(Theme::FlatProjectsMode)) {
StyleHelper::drawCornerImage(m_selection, &painter, tabRect, 15, 0, 15, 0); StyleHelper::drawCornerImage(m_selection, &painter, tabRect, 15, 0, 15, 0);
} else { } else {
painter.setBrush(creatorTheme()->color(Theme::DoubleTabWidget2ndTabBackgroundColor)); painter.setBrush(creatorTheme()->color(Theme::DoubleTabWidget2ndTabBackgroundColor));

View File

@@ -39,7 +39,7 @@ TargetSettingsWidget::TargetSettingsWidget(QWidget *parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
if (Utils::creatorTheme()->widgetStyle() == Utils::Theme::StyleFlat) { if (Utils::creatorTheme()->flag(Utils::Theme::FlatProjectsMode)) {
ui->separator->setVisible(false); ui->separator->setVisible(false);
ui->shadow->setVisible(false); ui->shadow->setVisible(false);
} else { } else {