+ /// 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
+ };
+ // Do not change SenderPrefixMode numbering without also adjusting
+ // ChatViewSettingsPage::initSenderPrefixComboBox() and chatviewsettingspage.ui "defaultValue"
+
+ struct Format {
+ FormatType type;
+ QColor foreground;
+ QColor background;
+ };
+
+ using FormatList = std::vector<std::pair<quint16, Format>>;
+
+ struct StyledString {
+ QString plainText;
+ FormatList formatList; // starting pos, ftypes
+ };
+
+ 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 and color roles, too.
+ *
+ * @see ../qtui/settingspages/chatviewsettingspage.ui
+ * @see UiStyle::ColorRole
+ */
+ const QList<QColor> defaultSenderColors = QList<QColor> {
+ 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<QColor> 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, FormatType baseFormat = FormatType::Base);
+ static QString mircToInternal(const QString &);
+
+ /**
+ * 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();