X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.h;h=7911dc7e95d658f655acfcb3ead3e6b06f3a95f8;hp=581c420eeccb7177bd123c53867e6afc1b4107e3;hb=55049803e1f4215cedaa30935eae4ca2aa5835d2;hpb=120861b909702039da9993278d8319dad14fd292 diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index 581c420e..7911dc7e 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,20 +99,25 @@ 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, - ActiveNick, - InactiveNick, - Channel, - InactiveChannel, - ActiveChannel, - UnreadChannel, - HighlightedChannel, - Query, - InactiveQuery, - ActiveQuery, - UnreadQuery, - HighlightedQuery, NumRoles // must be last! }; @@ -126,15 +133,16 @@ public: 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); + QTextCharFormat format(quint32 formatType, quint32 messageLabel); + QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel); - inline QFont defaultFont() const { return _defaultFont; } + QList toTextLayoutList(const FormatList &, int textLength, quint32 messageLabel); inline const QBrush &brush(ColorRole role) const { return _uiStylePalette.at((int) role); } inline void setBrush(ColorRole role, const QBrush &brush) { _uiStylePalette[(int) role] = brush; } - QList toTextLayoutList(const FormatList &, int textLength, quint32 messageLabel = 0); + QVariant bufferViewItemData(const QModelIndex &networkModelIndex, int role) const; + QVariant nickViewItemData(const QModelIndex &networkModelIndex, int role) const; public slots: void reload(); @@ -146,9 +154,9 @@ 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); + QTextCharFormat format(quint64 key) const; + QTextCharFormat cachedFormat(quint32 formatType, quint32 messageLabel) const; + void setCachedFormat(const QTextCharFormat &format, quint32 formatType, quint32 messageLabel); void mergeFormat(QTextCharFormat &format, quint32 formatType, quint64 messageLabel); void mergeSubElementFormat(QTextCharFormat &format, quint32 formatType, quint64 messageLabel); @@ -156,14 +164,32 @@ 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 _formats; 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 {