- /** This enumerates the possible formats a text element may have. */
- enum FormatType {
- None, Bold, Italic, Underline, Reverse, // Standard formats
- PlainMsg, NoticeMsg, ServerMsg, ErrorMsg, JoinMsg, PartMsg, QuitMsg, KickMsg, // Internal message formats
- RenameMsg, ModeMsg, ActionMsg, // ...cnt'd
- Timestamp, Sender, Nick, Hostmask, ChannelName, ModeFlags, Url, // individual elements
- FgCol00, FgCol01, FgCol02, FgCol03, FgCol04, FgCol05, FgCol06, FgCol07, // Color codes
- FgCol08, FgCol09, FgCol10, FgCol11, FgCol12, FgCol13, FgCol14, FgCol15,
- BgCol00, BgCol01, BgCol02, BgCol03, BgCol04, BgCol05, BgCol06, BgCol07,
- BgCol08, BgCol09, BgCol10, BgCol11, BgCol12, BgCol13, BgCol14, BgCol15,
- NumFormatTypes, Invalid // Do not add anything after this
+ //! This enumerates the possible formats a text element may have. */
+ /** These formats are ordered on increasing importance, in cases where a given property is specified
+ * by multiple active formats.
+ * \NOTE: Do not change/add values here without also adapting the relevant
+ * methods in this class (in particular mergedFormat())!
+ * Also, we _do_ rely on certain properties of these values in styleString() and friends!
+ */
+ enum class FormatType : quint32 {
+ Base = 0x00000000,
+ Invalid = 0xffffffff,
+
+ // Message Formats (mutually exclusive!)
+ PlainMsg = 0x00000001,
+ NoticeMsg = 0x00000002,
+ ActionMsg = 0x00000003,
+ NickMsg = 0x00000004,
+ ModeMsg = 0x00000005,
+ JoinMsg = 0x00000006,
+ PartMsg = 0x00000007,
+ QuitMsg = 0x00000008,
+ KickMsg = 0x00000009,
+ KillMsg = 0x0000000a,
+ ServerMsg = 0x0000000b,
+ InfoMsg = 0x0000000c,
+ ErrorMsg = 0x0000000d,
+ DayChangeMsg = 0x0000000e,
+ TopicMsg = 0x0000000f,
+ NetsplitJoinMsg = 0x00000010,
+ NetsplitQuitMsg = 0x00000020,
+ InviteMsg = 0x00000030,
+
+ // Standard Formats
+ Bold = 0x00000100,
+ Italic = 0x00000200,
+ Underline = 0x00000400,
+ Strikethrough = 0x00000800,
+
+ // Individual parts of a message
+ 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
+
+ // mIRC Colors - we assume those to be present only in plain contents
+ // foreground: 0x0.400000
+ // background: 0x.0800000
+ };
+
+ enum class MessageLabel : quint32 {
+ None = 0x00000000,
+ OwnMsg = 0x00000001,
+ Highlight = 0x00000002,
+ Selected = 0x00000004,
+ Hovered = 0x00000008,
+ Last = Hovered
+ };
+
+ enum class ItemFormatType : quint32 {
+ None = 0x00000000,
+
+ BufferViewItem = 0x00000001,
+ NickViewItem = 0x00000002,
+
+ NetworkItem = 0x00000010,
+ ChannelBufferItem = 0x00000020,
+ QueryBufferItem = 0x00000040,
+ IrcUserItem = 0x00000080,
+ UserCategoryItem = 0x00000100,
+
+ InactiveBuffer = 0x00001000,
+ ActiveBuffer = 0x00002000,
+ UnreadBuffer = 0x00004000,
+ HighlightedBuffer = 0x00008000,
+ UserAway = 0x00010000,
+
+ Invalid = 0xffffffff
+ };
+
+ enum class FormatProperty {
+ AllowForegroundOverride = QTextFormat::UserProperty,
+ AllowBackgroundOverride
+ };
+
+ enum class ColorRole {
+ MarkerLine,
+ // Sender colors (16 + self)
+ // These aren't used directly to avoid having storing all of the sender color options in the
+ // rendering routine of each item. Also, I couldn't figure out how to do that.
+ // It would be nice to have the UseSenderColors preference also toggle sender colors set by
+ // themes, so hopefully this can be extended in the future.
+ // Furthermore, using this palette directly would mean separate sets of colors couldn't be
+ // used for different message types.
+ SenderColorSelf,
+ SenderColor00,
+ SenderColor01,
+ SenderColor02,
+ SenderColor03,
+ SenderColor04,
+ SenderColor05,
+ SenderColor06,
+ SenderColor07,
+ SenderColor08,
+ SenderColor09,
+ SenderColor0a,
+ SenderColor0b,
+ SenderColor0c,
+ SenderColor0d,
+ SenderColor0e,
+ SenderColor0f,
+ NumRoles // must be last!
+ };
+
+ /// Display of sender prefix modes
+ enum class SenderPrefixMode {
+ NoModes = 0, ///< Hide sender modes
+ HighestMode = 1, ///< Show the highest active sender mode
+ AllModes = 2 ///< Show all active sender modes