/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
fmtType |= FormatType::Italic;
else if (condValue == "underline")
fmtType |= FormatType::Underline;
- else if (condValue == "reverse")
- fmtType |= FormatType::Reverse;
+ else if (condValue == "strikethrough")
+ fmtType |= FormatType::Strikethrough;
else {
qWarning() << Q_FUNC_INFO << tr("Invalid format name: %1").arg(condValue);
return invalid;
else if (property == "foreground" || property == "color")
format.setForeground(parseBrush(value));
+ // Color code overrides
+ else if (property == "allow-foreground-override") {
+ bool ok;
+ bool v = parseBoolean(value, &ok);
+ if (ok)
+ format.setProperty(static_cast<int>(UiStyle::FormatProperty::AllowForegroundOverride), v);
+ }
+ else if (property == "allow-background-override") {
+ bool ok;
+ bool v = parseBoolean(value, &ok);
+ if (ok)
+ format.setProperty(static_cast<int>(UiStyle::FormatProperty::AllowBackgroundOverride), v);
+ }
+
// font-related properties
else if (property.startsWith("font")) {
if (property == "font")
return format;
}
+/******** Boolean value ********/
+
+bool QssParser::parseBoolean(const QString &str, bool *ok) const
+{
+ if (ok)
+ *ok = true;
+
+ if (str == "true")
+ return true;
+ if (str == "false")
+ return false;
+
+ qWarning() << Q_FUNC_INFO << tr("Invalid boolean value: %1").arg(str);
+ if (ok)
+ *ok = false;
+ return false;
+}
/******** Brush ********/
void QssParser::parseFont(const QString &value, QTextCharFormat *format)
{
- static const QRegExp rx("((?:(?:normal|italic|oblique|underline|bold|100|200|300|400|500|600|700|800|900) ){0,2}) ?(\\d+)(pt|px)? \"(.*)\"");
+ static const QRegExp rx("((?:(?:normal|italic|oblique|underline|strikethrough|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;
format->setFontItalic(true);
else if (prop == "underline")
format->setFontUnderline(true);
+ // Oblique is not a property supported by QTextCharFormat
//else if(prop == "oblique")
// format->setStyle(QFont::StyleOblique);
else if (prop == "bold")
format->setFontItalic(true);
else if (value == "underline")
format->setFontUnderline(true);
+ else if (value == "strikethrough")
+ format->setFontStrikeOut(true);
+ // Oblique is not a property supported by QTextCharFormat
//else if(value == "oblique")
// format->setStyle(QFont::StyleOblique);
else {