X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.h;h=d565e5b8b3ad11772ce760170ee5c66e03b6459b;hb=0ba56e60f400621ddc291669dc2c03a8e461c224;hp=b179147bc8e3293cb1cbcfd690402b01559e3295;hpb=b7cf37ec77eccfde8e515c6638ef8d996c71019f;p=quassel.git diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index b179147b..d565e5b8 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -124,6 +124,30 @@ public: enum 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! }; @@ -138,27 +162,28 @@ public: * List of default sender colors * * In order from 1 - 16, matching the Sender## format in the settings file. - * Don't change the length or values of the colors without updating the UI, too. + * Don't change the length or values of the colors without updating the UI and color roles, too. * * @see ../qtui/settingspages/chatviewsettingspage.ui + * @see UiStyle::ColorRole */ const QList defaultSenderColors = QList { - QColor(233, 13, 127), /// Sender00 - QColor(142, 85, 233), /// Sender01 - QColor(179, 14, 14), /// Sender02 - QColor(23, 179, 57), /// Sender03 - QColor(88, 175, 179), /// Sender04 - QColor(157, 84, 179), /// Sender05 - QColor(179, 151, 117), /// Sender06 - QColor(49, 118, 179), /// Sender07 - QColor(233, 13, 127), /// Sender08 - QColor(142, 85, 233), /// Sender09 - QColor(179, 14, 14), /// Sender10 - QColor(23, 179, 57), /// Sender11 - QColor(88, 175, 179), /// Sender12 - QColor(157, 84, 179), /// Sender13 - QColor(179, 151, 117), /// Sender14 - QColor(49, 118, 179), /// Sender15 + QColor(204, 0, 0), /// Sender00 + QColor( 0, 108, 173), /// Sender01 + QColor( 77, 153, 0), /// Sender02 + QColor(102, 0, 204), /// Sender03 + QColor(166, 125, 0), /// Sender04 + QColor( 0, 153, 39), /// Sender05 + QColor( 0, 48, 192), /// Sender06 + QColor(204, 0, 154), /// Sender07 + QColor(185, 70, 0), /// Sender08 + QColor(134, 153, 0), /// Sender09 + QColor( 20, 153, 0), /// Sender10 + QColor( 0, 153, 96), /// Sender11 + QColor( 0, 108, 173), /// Sender12 + QColor( 0, 153, 204), /// Sender13 + QColor(179, 0, 204), /// Sender14 + QColor(204, 0, 77), /// Sender15 }; // Explicitly declare QList type for defaultSenderColors, otherwise error C2797 // "list initialization inside member initializer list" will occur in Windows builds with Visual @@ -178,7 +203,33 @@ public: static FormatType formatType(Message::Type msgType); static StyledString styleString(const QString &string, quint32 baseFormat = Base); static QString mircToInternal(const QString &); - static inline QString timestampFormatString() { return _timestampFormatString; } + + /** + * Gets if a custom timestamp format is used. + * + * @return True if custom timestamp format used, otherwise false + */ + static inline bool useCustomTimestampFormat() { return _useCustomTimestampFormat; } + + /** + * Gets the format string for chat log timestamps according to the system locale. + * + * This will return " hh:mm:ss" for system locales with 24-hour time or " h:mm:ss AP" for + * systems with 12-hour time. + * + * @return String representing timestamp format according to system locale, e.g. " hh:mm:ss" + */ + static QString systemTimestampFormatString(); + + /** + * Gets the format string for chat log timestamps, either system locale or custom. + * + * Depending on useCustomTimestampFormat(), this will return either the system locale based + * time format, or the custom user-specified string. + * + * @return String representing timestamp format, e.g. "[hh:mm:ss]" or " hh:mm:ss" + */ + static QString timestampFormatString(); QTextCharFormat format(quint32 formatType, quint32 messageLabel) const; QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel) const; @@ -209,7 +260,37 @@ protected: static FormatType formatType(const QString &code); static QString formatCode(FormatType); + + /** + * Cache the system locale timestamp format string + * + * Based on whether or not AM/PM designators are used in the QLocale::system().timeFormat(), + * this extends the system locale timestamp format string to include seconds. + * + * @see UiStyle::systemTimestampFormatString() + */ + static void updateSystemTimestampFormat(); + + /** + * Updates the local setting cache of whether or not to use the custom timestamp format + * + * @param[in] enabled If true, custom timestamp format used, otherwise false + */ + static void setUseCustomTimestampFormat(bool enabled); + + /** + * Updates the local setting cache of the timestamp format string + * + * @param[in] format Timestamp format string + */ static void setTimestampFormatString(const QString &format); + /** + * Updates the local setting cache of whether or not to show sender prefixmodes + * + * @param[in] enabled If true, sender prefixmodes are enabled, otherwise false. + */ + static void enableSenderPrefixes(bool enabled); + /** * Updates the local setting cache of whether or not to show sender brackets * @@ -231,8 +312,11 @@ private: mutable QHash _metricsCache; QHash _listItemFormats; static QHash _formatCodes; - static QString _timestampFormatString; - static bool _showSenderBrackets; /// If true, show brackets around sender names + static bool _useCustomTimestampFormat; /// If true, use the custom timestamp format + static QString _systemTimestampFormatString; /// Cached copy of system locale timestamp format + static QString _timestampFormatString; /// Timestamp format string + static bool _showSenderPrefixes; /// If true, show prefixmodes before sender names + static bool _showSenderBrackets; /// If true, show brackets around sender names QIcon _channelJoinedIcon; QIcon _channelPartedIcon;