X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.h;h=7e4094f8a006015e4edfbeafa37eb3c39a71afbe;hp=9b9365d47b2f999beb8f0b45ef7f80c2f9b921ca;hb=fdf69d69f0dda76a65a27ce7059b7b86696ff79c;hpb=68cd9a2621c71005cda0ed4fb796bbf5fcbe007e diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index 9b9365d4..7e4094f8 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -50,7 +50,7 @@ public: */ enum FormatType { None = 0x00000000, - Invalid = 0x11111111, + Invalid = 0xffffffff, // Message Formats (mutually exclusive!) PlainMsg = 0x00000001, @@ -69,19 +69,19 @@ public: DayChangeMsg = 0x0000000e, // Standard Formats - Bold = 0x00000010, - Italic = 0x00000020, - Underline = 0x00000040, - Reverse = 0x00000080, + Bold = 0x00000100, + Italic = 0x00000200, + Underline = 0x00000400, + Reverse = 0x00000800, // Individual parts of a message - Timestamp = 0x00000100, - Sender = 0x00000200, - Contents = 0x00000400, - Nick = 0x00000800, - Hostmask = 0x00001000, - ChannelName = 0x00002000, - ModeFlags = 0x00004000, + Timestamp = 0x00001000, + Sender = 0x00002000, + Contents = 0x00004000, + Nick = 0x00008000, + Hostmask = 0x00010000, + ChannelName = 0x00020000, + ModeFlags = 0x00040000, // URL is special, we want that to take precedence over the rest... Url = 0x00080000 @@ -93,7 +93,8 @@ public: enum MessageLabel { OwnMsg = 0x00000001, - Highlight = 0x00000002 + Highlight = 0x00000002, + Selected = 0x00000004 // must be last! }; struct StyledString { @@ -106,6 +107,7 @@ public: static FormatType formatType(Message::Type msgType); static StyledString styleString(const QString &string, quint32 baseFormat = None); static QString mircToInternal(const QString &); + static inline QString timestampFormatString() { return _timestampFormatString; } QTextCharFormat format(quint32 formatType, quint32 messageLabel = 0); QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel = 0); @@ -115,27 +117,31 @@ public: QList toTextLayoutList(const FormatList &, int textLength, quint32 messageLabel = 0); public slots: - void loadStyleSheet(); + void reload(); signals: void changed(); protected: + void loadStyleSheet(); 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); + static void setTimestampFormatString(const QString &format); private: QFont _defaultFont; QHash _formatCache; QHash _metricsCache; static QHash _formatCodes; + static QString _timestampFormatString; }; class UiStyle::StyledMessage : public Message { @@ -147,17 +153,13 @@ public: QString decoratedSender() const; const QString &plainContents() const; - 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; - private: mutable StyledString _contents; mutable quint8 _senderHash;