X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.h;h=ae0ad293dcf672ac2e7b07ca8455b7a201917458;hp=69947fc0ab2e4de767f4b602790e00f9b0dd7217;hb=526eccc444029c5a0d80694487c3aec6707cbeda;hpb=4e394a809cbc7def74fb1ea3d89dc372bc9ffca4 diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index 69947fc0..ae0ad293 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -18,14 +18,16 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef UISTYLE_H -#define UISTYLE_H +#ifndef UISTYLE_H_ +#define UISTYLE_H_ #include #include +#include #include #include -#include +#include +#include #include "message.h" #include "settings.h" @@ -49,6 +51,7 @@ public: enum FormatType { None = 0x00000000, Invalid = 0x11111111, + // Message Formats (mutually exclusive!) PlainMsg = 0x00000001, NoticeMsg = 0x00000002, @@ -61,11 +64,13 @@ public: RenameMsg = 0x00000009, ModeMsg = 0x0000000a, ActionMsg = 0x0000000b, + // Standard Formats Bold = 0x00000010, Italic = 0x00000020, Underline = 0x00000040, Reverse = 0x00000080, + // Individual parts of a message Timestamp = 0x00000100, Sender = 0x00000200, @@ -73,9 +78,11 @@ public: Hostmask = 0x00000800, ChannelName = 0x00001000, ModeFlags = 0x00002000, + // URL is special, we want that to take precedence over the rest... - Url = 0x00100000, - // Colors + Url = 0x00080000, + + // mIRC Colors - we assume those to be present only in plain contents FgCol00 = 0x00400000, FgCol01 = 0x01400000, FgCol02 = 0x02400000, @@ -132,13 +139,13 @@ public: SenderCol18 = 0x12000200, SenderCol19 = 0x13000200, SenderCol20 = 0x14000200, - SenderCol21 = 0x15000200 + SenderCol21 = 0x15000200, + SenderColSelf = 0xff000200 }; - struct UrlInfo { - int start, end; - QUrl url; + enum MessageLabel { + Highlight = 0x00000001 }; struct StyledString { @@ -147,15 +154,21 @@ public: }; class StyledMessage; + class QssParser; StyledString styleString(const QString &); QString mircToInternal(const QString &) const; - void setFormat(FormatType, QTextCharFormat, Settings::Mode mode/* = Settings::Custom*/); - void setSenderAutoColor(bool state); - QTextCharFormat format(FormatType, Settings::Mode mode = Settings::Custom) const; - QTextCharFormat mergedFormat(quint32 formatType); - QFontMetricsF *fontMetrics(quint32 formatType); + void setFormat(FormatType, QTextCharFormat, Settings::Mode mode/* = Settings::Custom*/); // FIXME go away + void setSenderAutoColor(bool state); // FIXME go away + QTextCharFormat format(FormatType, Settings::Mode mode = Settings::Custom) const; // FIXME go away + + QTextCharFormat cachedFormat(quint64 key) const; + QTextCharFormat cachedFormat(quint32 formatType, quint32 messageLabel = 0) const; + void setCachedFormat(const QTextCharFormat &format, quint32 formatType, quint32 messageLabel = 0); + + QTextCharFormat mergedFormat(quint32 formatType, quint32 messageLabel = 0); + QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel = 0); FormatType formatType(const QString &code) const; QString formatCode(FormatType) const; @@ -165,14 +178,23 @@ public: QList toTextLayoutList(const FormatList &, int textLength); protected: + void loadStyleSheet(); + + //! Determines the format set to be used for the given hostmask + //int formatSetIndex(const QString &hostmask) const; + //int formatSetIndexForSelf() const; + + void mergeSubElementFormat(QTextCharFormat &format, quint32 formatType, quint32 messageLabel = 0); + bool _senderAutoColor; + private: QFont _defaultFont; QTextCharFormat _defaultPlainFormat; QHash _defaultFormats; QHash _customFormats; - QHash _cachedFormats; - QHash _cachedFontMetrics; + QHash _formatCache; + QHash _metricsCache; QHash _formatCodes; QString _settingsKey;