29
31
#include "settings.h"
34
Q_DECLARE_TR_FUNCTIONS (UiStyle);
34
37
UiStyle(const QString &settingsKey);
35
38
virtual ~UiStyle();
37
/** This enumerates the possible formats a text element may have. */
40
typedef QList<QPair<quint16, quint32> > FormatList;
42
//! This enumerates the possible formats a text element may have. */
43
/** These formats are ordered on increasing importance, in cases where a given property is specified
44
* by multiple active formats.
45
* \NOTE: Do not change/add values here without also adapting the relevant
46
* methods in this class (in particular mergedFormat())!
47
* Also, we _do_ rely on certain properties of these values in styleString() and friends!
39
None, Bold, Italic, Underline, Reverse, // Standard formats
40
PlainMsg, NoticeMsg, ServerMsg, ErrorMsg, JoinMsg, PartMsg, QuitMsg, KickMsg, // Internal message formats
41
RenameMsg, ModeMsg, ActionMsg, // ...cnt'd
42
Timestamp, Sender, Nick, Hostmask, ChannelName, ModeFlags, Url, // individual elements
43
FgCol00, FgCol01, FgCol02, FgCol03, FgCol04, FgCol05, FgCol06, FgCol07, // Color codes
44
FgCol08, FgCol09, FgCol10, FgCol11, FgCol12, FgCol13, FgCol14, FgCol15,
45
BgCol00, BgCol01, BgCol02, BgCol03, BgCol04, BgCol05, BgCol06, BgCol07,
46
BgCol08, BgCol09, BgCol10, BgCol11, BgCol12, BgCol13, BgCol14, BgCol15,
47
NumFormatTypes, Invalid // Do not add anything after this
52
// Message Formats (mutually exclusive!)
53
PlainMsg = 0x00000001,
54
NoticeMsg = 0x00000002,
55
ServerMsg = 0x00000003,
56
ErrorMsg = 0x00000004,
61
RenameMsg = 0x00000009,
63
ActionMsg = 0x0000000b,
67
Underline = 0x00000040,
69
// Individual parts of a message
70
Timestamp = 0x00000100,
73
Hostmask = 0x00000800,
74
ChannelName = 0x00001000,
75
ModeFlags = 0x00002000,
76
// URL is special, we want that to take precedence over the rest...
100
BgCol04 = 0x40800000,
101
BgCol05 = 0x50800000,
102
BgCol06 = 0x60800000,
103
BgCol07 = 0x70800000,
104
BgCol08 = 0x80800000,
105
BgCol09 = 0x90800000,
106
BgCol10 = 0xa0800000,
107
BgCol11 = 0xb0800000,
108
BgCol12 = 0xc0800000,
109
BgCol13 = 0xd0800000,
110
BgCol14 = 0xe0800000,
57
QList<QTextLayout::FormatRange> formats;
61
StyledText styleString(const QString &);
120
struct StyledString {
122
FormatList formatList; // starting pos, ftypes
125
struct StyledMessage {
126
StyledString timestamp;
128
StyledString contents;
131
StyledString styleString(const QString &);
132
StyledMessage styleMessage(const Message &);
133
QString mircToInternal(const QString &) const;
63
135
void setFormat(FormatType, QTextCharFormat, Settings::Mode mode/* = Settings::Custom*/);
64
136
QTextCharFormat format(FormatType, Settings::Mode mode = Settings::Custom) const;
137
QTextCharFormat mergedFormat(quint32 formatType);
138
QFontMetricsF *fontMetrics(quint32 formatType);
66
140
FormatType formatType(const QString &code) const;
67
141
QString formatCode(FormatType) const;
143
inline QFont defaultFont() const { return _defaultFont; }
145
QList<QTextLayout::FormatRange> toTextLayoutList(const FormatList &, int textLength);
73
QTextCharFormat mergedFormat(QList<FormatType>);
75
QVector<QTextCharFormat> _defaultFormats;
76
QVector<QTextCharFormat> _customFormats;
153
QTextCharFormat _defaultPlainFormat;
154
QHash<FormatType, QTextCharFormat> _defaultFormats;
155
QHash<FormatType, QTextCharFormat> _customFormats;
156
QHash<quint32, QTextCharFormat> _cachedFormats;
157
QHash<quint32, QFontMetricsF *> _cachedFontMetrics;
77
158
QHash<QString, FormatType> _formatCodes;
79
160
QString _settingsKey;
163
QDataStream &operator<<(QDataStream &out, const UiStyle::FormatList &formatList);
164
QDataStream &operator>>(QDataStream &in, UiStyle::FormatList &formatList);
166
Q_DECLARE_METATYPE(UiStyle::FormatList);