_paletteColorRoles["tooltip-text"] = QPalette::ToolTipText;
_paletteColorRoles["window"] = QPalette::Window;
_paletteColorRoles["window-text"] = QPalette::WindowText;
+
+ _uiStylePalette = QVector<QBrush>(UiStyle::NumRoles, QBrush());
+
+ _uiStyleColorRoles["marker-line"] = UiStyle::MarkerLine;
+ _uiStyleColorRoles["active-nick"] = UiStyle::ActiveNick;
+ _uiStyleColorRoles["inactive-nick"] = UiStyle::InactiveNick;
+ _uiStyleColorRoles["channel"] = UiStyle::Channel;
+ _uiStyleColorRoles["inactive-channel"] = UiStyle::InactiveChannel;
+ _uiStyleColorRoles["active-channel"] = UiStyle::ActiveChannel;
+ _uiStyleColorRoles["unread-channel"] = UiStyle::UnreadChannel;
+ _uiStyleColorRoles["highlighted-channel"] = UiStyle::HighlightedChannel;
+ _uiStyleColorRoles["query"] = UiStyle::Query;
+ _uiStyleColorRoles["inactive-query"] = UiStyle::InactiveQuery;
+ _uiStyleColorRoles["active-query"] = UiStyle::ActiveQuery;
+ _uiStyleColorRoles["unread-query"] = UiStyle::UnreadQuery;
+ _uiStyleColorRoles["highlighted-query"] = UiStyle::HighlightedQuery;
}
void QssParser::processStyleSheet(QString &ss) {
}
}
- _formats[fmtType] = format;
+ _formats[fmtType].merge(format);
}
quint64 QssParser::parseFormatType(const QString &decl) {
quint64 labeltype = 0;
if(condValue == "highlight")
labeltype = UiStyle::Highlight;
+ else if(condValue == "selected")
+ labeltype = UiStyle::Selected;
else {
qWarning() << Q_FUNC_INFO << tr("Invalid message label: %1").arg(condValue);
return UiStyle::Invalid;
}
QString rolestr = line.left(idx).trimmed();
QString brushstr = line.mid(idx + 1).trimmed();
- if(!_paletteColorRoles.contains(rolestr)) {
- qWarning() << Q_FUNC_INFO << tr("Unknown palette role name: %1").arg(rolestr);
- continue;
- }
- QBrush brush = parseBrush(brushstr);
- if(colorGroups.count()) {
- foreach(QPalette::ColorGroup group, colorGroups)
- _palette.setBrush(group, _paletteColorRoles.value(rolestr), brush);
+
+ if(_paletteColorRoles.contains(rolestr)) {
+ QBrush brush = parseBrush(brushstr);
+ if(colorGroups.count()) {
+ foreach(QPalette::ColorGroup group, colorGroups)
+ _palette.setBrush(group, _paletteColorRoles.value(rolestr), brush);
+ } else
+ _palette.setBrush(_paletteColorRoles.value(rolestr), brush);
+ } else if(_uiStyleColorRoles.contains(rolestr)) {
+ _uiStylePalette[_uiStyleColorRoles.value(rolestr)] = parseBrush(brushstr);
} else
- _palette.setBrush(_paletteColorRoles.value(rolestr), brush);
+ qWarning() << Q_FUNC_INFO << tr("Unknown palette role name: %1").arg(rolestr);
}
}
qWarning() << Q_FUNC_INFO << tr("Invalid palette color role specification: %1").arg(str);
return QBrush();
}
- if(!_paletteColorRoles.contains(rx.cap(1))) {
- qWarning() << Q_FUNC_INFO << tr("Unknown palette color role: %1").arg(rx.cap(1));
- return QBrush();
- }
- return QBrush(_palette.brush(_paletteColorRoles.value(rx.cap(1))));
+ if(_paletteColorRoles.contains(rx.cap(1)))
+ return QBrush(_palette.brush(_paletteColorRoles.value(rx.cap(1))));
+ if(_uiStyleColorRoles.contains(rx.cap(1)))
+ return QBrush(_uiStylePalette.at(_uiStyleColorRoles.value(rx.cap(1))));
+ qWarning() << Q_FUNC_INFO << tr("Unknown palette color role: %1").arg(rx.cap(1));
+ return QBrush();
} else if(str.startsWith("qlineargradient")) {
static QString rxFloat("\\s*(-?\\s*[0-9]*\\.?[0-9]+)\\s*");
/******** Font Properties ********/
void QssParser::parseFont(const QString& value, QTextCharFormat* format) {
- QRegExp rx("((?:(?:normal|italic|oblique|bold|100|200|300|400|500|600|700|800|900) ){0,2}) ?(\\d+)(pt|px)? \"(.*)\"");
+ QRegExp rx("((?:(?:normal|italic|oblique|underline|bold|100|200|300|400|500|600|700|800|900) ){0,2}) ?(\\d+)(pt|px)? \"(.*)\"");
if(!rx.exactMatch(value)) {
qWarning() << Q_FUNC_INFO << tr("Invalid font specification: %1").arg(value);
return;
foreach(QString prop, proplist) {
if(prop == "italic")
format->setFontItalic(true);
+ else if(prop == "underline")
+ format->setFontUnderline(true);
//else if(prop == "oblique")
// format->setStyle(QFont::StyleOblique);
else if(prop == "bold")
format->setFontItalic(false);
else if(value == "italic")
format->setFontItalic(true);
+ else if(value == "underline")
+ format->setFontUnderline(true);
//else if(value == "oblique")
// format->setStyle(QFont::StyleOblique);
else {