X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.h;h=c86f99df056b9bc81ee5f88723c47fa9980cb11b;hp=a163809b2acbd3e8c3c2b0d536e54497e92ed7e3;hb=5e2f64e61df2a61d1b0a8dbb2300d5be785edffe;hpb=e47500c0800e92c59d504f3b62ee3bf715c0207e diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index a163809b..c86f99df 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -32,11 +32,11 @@ #include "message.h" #include "settings.h" -class UiStyle { - Q_DECLARE_TR_FUNCTIONS(UiStyle) +class UiStyle : public QObject{ + Q_OBJECT public: - UiStyle(); + UiStyle(QObject *parent = 0); virtual ~UiStyle(); typedef QList > FormatList; @@ -77,10 +77,11 @@ public: // Individual parts of a message Timestamp = 0x00000100, Sender = 0x00000200, - Nick = 0x00000400, - Hostmask = 0x00000800, - ChannelName = 0x00001000, - ModeFlags = 0x00002000, + Contents = 0x00000400, + Nick = 0x00000800, + Hostmask = 0x00001000, + ChannelName = 0x00002000, + ModeFlags = 0x00004000, // URL is special, we want that to take precedence over the rest... Url = 0x00080000 @@ -92,7 +93,8 @@ public: enum MessageLabel { OwnMsg = 0x00000001, - Highlight = 0x00000002 + Highlight = 0x00000002, + Selected = 0x00000004 // must be last! }; struct StyledString { @@ -111,19 +113,22 @@ public: inline QFont defaultFont() const { return _defaultFont; } - QList toTextLayoutList(const FormatList &, int textLength); + QList toTextLayoutList(const FormatList &, int textLength, quint32 messageLabel = 0); -protected: +public slots: void loadStyleSheet(); - //! Determines the format set to be used for the given hostmask - //int formatSetIndex(const QString &hostmask) const; - //int formatSetIndexForSelf() const; +signals: + void changed(); + +protected: + QString loadStyleSheet(const QString &name, bool shouldExist = false); QTextCharFormat cachedFormat(quint64 key) const; QTextCharFormat cachedFormat(quint32 formatType, quint32 messageLabel = 0) const; void setCachedFormat(const QTextCharFormat &format, quint32 formatType, quint32 messageLabel = 0); - void mergeSubElementFormat(QTextCharFormat &format, quint32 formatType, quint32 messageLabel = 0); + void mergeFormat(QTextCharFormat &format, quint32 formatType, quint64 messageLabel); + void mergeSubElementFormat(QTextCharFormat &format, quint32 formatType, quint64 messageLabel); static FormatType formatType(const QString &code); static QString formatCode(FormatType); @@ -147,6 +152,9 @@ public: inline FormatType timestampFormat() const { return UiStyle::Timestamp; } FormatType senderFormat() const; const FormatList &contentsFormatList() const; + + quint8 senderHash() const; + protected: //! Styling is only needed for calls to plainContents() and contentsFormatList() void style() const; @@ -154,6 +162,7 @@ protected: private: mutable StyledString _contents; + mutable quint8 _senderHash; }; QDataStream &operator<<(QDataStream &out, const UiStyle::FormatList &formatList);