X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.h;h=0b4589a18b6ab3f12fd10dccab24618bc0e33985;hb=a04eac3ffa53cb9eea9ebc46ea67a958f0269220;hp=993aab39753006f81972b50163c11d534e03d931;hpb=9fc57dc2c000e80fb8bd746a090e2e8210e1278e;p=quassel.git diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index 993aab39..0b4589a1 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -133,10 +134,77 @@ public: class StyledMessage; + /** + * 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. + * + * @see ../qtui/settingspages/chatviewsettingspage.ui + */ + 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 + }; + // Explicitly declare QList type for defaultSenderColors, otherwise error C2797 + // "list initialization inside member initializer list" will occur in Windows builds with Visual + // Studio's compiler. + // + // See https://blogs.msdn.microsoft.com/vcblog/2014/08/19/the-future-of-non-static-data-member-initialization/ + // Note: Qt Creator flags this as invalid unless you set Clang in + // Settings -> C++ -> Code Model -> Code Completion and Semantic Highlighting -> C + // + // See https://bugreports.qt.io/browse/QTCREATORBUG-1902 + + /** + * Default sender color for sent messages + */ + const QColor defaultSenderColorSelf = QColor(0, 0, 0); + 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; @@ -167,8 +235,38 @@ 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 brackets + * + * @param[in] enabled If true, sender brackets are enabled, otherwise false. + */ + static void enableSenderBrackets(bool enabled); + QVariant itemData(int role, const QTextCharFormat &format) const; private slots: @@ -183,15 +281,18 @@ private: mutable QHash _metricsCache; QHash _listItemFormats; static QHash _formatCodes; - static QString _timestampFormatString; - - QPixmap _channelJoinedIcon; - QPixmap _channelPartedIcon; - QPixmap _userOfflineIcon; - QPixmap _userOnlineIcon; - QPixmap _userAwayIcon; - QPixmap _categoryOpIcon; - QPixmap _categoryVoiceIcon; + 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 _showSenderBrackets; /// If true, show brackets around sender names + + QIcon _channelJoinedIcon; + QIcon _channelPartedIcon; + QIcon _userOfflineIcon; + QIcon _userOnlineIcon; + QIcon _userAwayIcon; + QIcon _categoryOpIcon; + QIcon _categoryVoiceIcon; int _opIconLimit; int _voiceIconLimit; bool _showNickViewIcons;