X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.h;h=52ad81884a119e0988db733486bd7e39b326f622;hp=843d2f225167653f6efc6d6261c0d066e801f1ac;hb=0b17a8e987118c138c91b756f5fed4166a23a354;hpb=d33a73406dc7b2a41c97d169b865836f6fce4980 diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index 843d2f22..52ad8188 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -29,7 +29,9 @@ #include #include +#include "bufferinfo.h" #include "message.h" +#include "networkmodel.h" #include "settings.h" class UiStyle : public QObject{ @@ -97,6 +99,28 @@ public: Selected = 0x00000004 // must be last! }; + enum ItemFormatType { + BufferViewItem = 0x00000001, + NickViewItem = 0x00000002, + + NetworkItem = 0x00000010, + ChannelBufferItem = 0x00000020, + QueryBufferItem = 0x00000040, + IrcUserItem = 0x00000080, + UserCategoryItem = 0x00000100, + + InactiveBuffer = 0x00001000, + ActiveBuffer = 0x00002000, + UnreadBuffer = 0x00004000, + HighlightedBuffer = 0x00008000, + UserAway = 0x00010000 + }; + + enum ColorRole { + MarkerLine, + NumRoles // must be last! + }; + struct StyledString { QString plainText; FormatList formatList; // starting pos, ftypes @@ -112,10 +136,14 @@ public: QTextCharFormat format(quint32 formatType, quint32 messageLabel = 0); QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel = 0); - inline QFont defaultFont() const { return _defaultFont; } - QList toTextLayoutList(const FormatList &, int textLength, quint32 messageLabel = 0); + inline const QBrush &brush(ColorRole role) const { return _uiStylePalette.at((int) role); } + inline void setBrush(ColorRole role, const QBrush &brush) { _uiStylePalette[(int) role] = brush; } + + QVariant bufferViewItemData(const QModelIndex &networkModelIndex, int role) const; + QVariant nickViewItemData(const QModelIndex &networkModelIndex, int role) const; + public slots: void reload(); @@ -136,12 +164,31 @@ protected: static QString formatCode(FormatType); static void setTimestampFormatString(const QString &format); + QVariant itemData(int role, const QTextCharFormat &format) const; + +private slots: + void showUserStateIconsChanged(); + private: - QFont _defaultFont; + QVector _uiStylePalette; + QBrush _markerLineBrush; QHash _formatCache; QHash _metricsCache; + QHash _listItemFormats; static QHash _formatCodes; static QString _timestampFormatString; + + QPixmap _channelJoinedIcon; + QPixmap _channelPartedIcon; + QPixmap _userOfflineIcon; + QPixmap _userOnlineIcon; + QPixmap _userAwayIcon; + QPixmap _categoryOpIcon; + QPixmap _categoryVoiceIcon; + int _opIconLimit; + int _voiceIconLimit; + bool _showNickViewIcons; + bool _showBufferViewIcons; }; class UiStyle::StyledMessage : public Message {