From 86a1220cc45c658954860e6dedbc18e38986ca94 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Thu, 30 Jul 2009 10:39:50 +0200 Subject: [PATCH] Stylesheetify the marker line color This is now treated as a new palette role "marker-line" and can be set in a Palette {} section as follows: Palette { marker-line: #123456; } --- src/qtui/chatline.cpp | 3 +-- src/uisupport/qssparser.cpp | 7 +++++++ src/uisupport/qssparser.h | 2 ++ src/uisupport/uistyle.cpp | 1 + src/uisupport/uistyle.h | 2 ++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/qtui/chatline.cpp b/src/qtui/chatline.cpp index f6ea50f9..3c68c4b0 100644 --- a/src/qtui/chatline.cpp +++ b/src/qtui/chatline.cpp @@ -186,9 +186,8 @@ void ChatLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, BufferId bufferId = BufferId(chatScene()->idString().toInt()); MsgId lastSeenMsgId = Client::networkModel()->lastSeenMarkerMsgId(bufferId); if(lastSeenMsgId < myMsgId && lastSeenMsgId >= prevMsgId) { - QtUiStyleSettings s("Colors"); QLinearGradient gradient(0, 0, 0, contentsItem().fontMetrics()->lineSpacing()); - gradient.setColorAt(0, s.value("newMsgMarkerFG", QColor(Qt::red)).value()); + gradient.setColorAt(0, QtUi::style()->markerLineBrush().color()); // FIXME: Use full (gradient?) brush instead of just the color gradient.setColorAt(0.1, Qt::transparent); painter->fillRect(boundingRect(), gradient); } diff --git a/src/uisupport/qssparser.cpp b/src/uisupport/qssparser.cpp index b0e84b8a..82344040 100644 --- a/src/uisupport/qssparser.cpp +++ b/src/uisupport/qssparser.cpp @@ -302,6 +302,13 @@ void QssParser::parsePaletteData(const QString &decl, const QString &contents) { } QString rolestr = line.left(idx).trimmed(); QString brushstr = line.mid(idx + 1).trimmed(); + + // We treat the marker line color as a palette role even though it isn't -> special casing + if(rolestr == "marker-line") { + _markerLineBrush = parseBrush(brushstr); + continue; + } + if(!_paletteColorRoles.contains(rolestr)) { qWarning() << Q_FUNC_INFO << tr("Unknown palette role name: %1").arg(rolestr); continue; diff --git a/src/uisupport/qssparser.h b/src/uisupport/qssparser.h index c92b4060..e0069550 100644 --- a/src/uisupport/qssparser.h +++ b/src/uisupport/qssparser.h @@ -33,6 +33,7 @@ class QssParser { inline QPalette palette() const { return _palette; } inline const QHash& formats() const { return _formats; } + inline QBrush markerLineBrush() const { return _markerLineBrush; } protected: typedef QList ColorTuple; @@ -63,6 +64,7 @@ class QssParser { private: QPalette _palette; QHash _formats; + QBrush _markerLineBrush; int _maxSenderHash; }; diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index 1a478f28..3ab08f41 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -81,6 +81,7 @@ void UiStyle::loadStyleSheet() { QssParser parser; parser.processStyleSheet(styleSheet); QApplication::setPalette(parser.palette()); + _markerLineBrush = parser.markerLineBrush(); QTextCharFormat baseFmt = parser.formats().value(Base); foreach(quint64 fmtType, parser.formats().keys()) { diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index 843d2f22..3342aa49 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -113,6 +113,7 @@ public: QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel = 0); inline QFont defaultFont() const { return _defaultFont; } + inline QBrush markerLineBrush() const { return _markerLineBrush; } QList toTextLayoutList(const FormatList &, int textLength, quint32 messageLabel = 0); @@ -138,6 +139,7 @@ protected: private: QFont _defaultFont; + QBrush _markerLineBrush; QHash _formatCache; QHash _metricsCache; static QHash _formatCodes; -- 2.20.1