Parse font properties in QSS
[quassel.git] / src / uisupport / qssparser.h
index c5f86ee..bb64e21 100644 (file)
@@ -27,27 +27,12 @@ class QssParser {
   Q_DECLARE_TR_FUNCTIONS(QssParser)
 
   public:
-    enum Column {
-      Any,
-      Timestamp,
-      Sender,
-      Contents
-    };
-
-    struct ChatLineFormat {
-      QVector<QTextCharFormat> senderColors;
-      QVector<QTextCharFormat> mircColors;
-      QHash<UiStyle::FormatType, QTextCharFormat> formats;
-
-    };
-
     QssParser();
 
     void loadStyleSheet(const QString &sheet);
 
     inline QPalette palette() const { return _palette; }
-    ChatLineFormat basicFormat() const;
-    QHash<UiStyle::FormatType, ChatLineFormat> specialFormats() const;
+    inline const QHash<quint64, QTextCharFormat>& formats() const { return _formats; }
 
   protected:
     typedef QList<qreal> ColorTuple;
@@ -60,21 +45,24 @@ class QssParser {
     QTextCharFormat parseFormat(const QString &qss);
     bool parsePalette(QPalette &, const QString &qss);
 
-    // Parse basic data types
-    QBrush parseBrushValue(const QString &str);
-    QColor parseColorValue(const QString &str);
-    QFont parseFontValue(const QString &str);
-
-    // Parse subelements
+    // Parse color/brush-related properties
+    QBrush parseBrush(const QString &str, bool *ok = 0);
+    QColor parseColor(const QString &str);
     ColorTuple parseColorTuple(const QString &str);
     QGradientStops parseGradientStops(const QString &str);
 
+    // Parse font-related properties
+    bool parseFont(const QString &str, QFont *font);
+    bool parseFontStyle(const QString &str, QFont *font);
+    bool parseFontWeight(const QString &str, QFont *font);
+    bool parseFontSize(const QString &str, QFont *font);
+    bool parseFontFamily(const QString &str, QFont *font);
+
     QHash<QString, QPalette::ColorRole> _paletteColorRoles;
 
   private:
     QPalette _palette;
-    ChatLineFormat _basicFormat;
-    QHash<UiStyle::FormatType, ChatLineFormat> _specialFormats;
+    QHash<quint64, QTextCharFormat> _formats;
     int _maxSenderHash;
 };