X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.h;h=2a098da1f16f1d7804ebb8c59a93cce1b769fff0;hp=f0618bbb1d6050514a2382abece17002e55f2407;hb=8f2ee00f4edef1693628d3af0bdee84d725eb754;hpb=b12b02f1bd5ee8a68bda20622b7ec3eac84f000c diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index f0618bbb..2a098da1 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,6 +20,8 @@ #pragma once +#include "uisupport-export.h" + #include #include @@ -38,13 +40,14 @@ #include "networkmodel.h" #include "settings.h" -class UiStyle : public QObject +class UISUPPORT_EXPORT UiStyle : public QObject { Q_OBJECT + Q_ENUMS(SenderPrefixModes) public: - UiStyle(QObject *parent = 0); - virtual ~UiStyle(); + UiStyle(QObject *parent = nullptr); + ~UiStyle() override; //! 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 @@ -81,7 +84,7 @@ public: Bold = 0x00000100, Italic = 0x00000200, Underline = 0x00000400, - Reverse = 0x00000800, + Strikethrough = 0x00000800, // Individual parts of a message Timestamp = 0x00001000, @@ -104,7 +107,9 @@ public: None = 0x00000000, OwnMsg = 0x00000001, Highlight = 0x00000002, - Selected = 0x00000004 // must be last! + Selected = 0x00000004, + Hovered = 0x00000008, + Last = Hovered }; enum class ItemFormatType : quint32 { @@ -162,6 +167,15 @@ public: 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 + }; + // Do not change SenderPrefixMode numbering without also adjusting + // ChatViewSettingsPage::initSenderPrefixComboBox() and chatviewsettingspage.ui "defaultValue" + struct Format { FormatType type; QColor foreground; @@ -187,22 +201,22 @@ public: * @see UiStyle::ColorRole */ const QList defaultSenderColors = QList { - 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 + 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 @@ -284,8 +298,8 @@ protected: /** * 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. + * Based on whether or not AM/PM designators are used in the QLocale.timeFormat(), this extends + * the application locale timestamp format string to include seconds. * * @see UiStyle::systemTimestampFormatString() */ @@ -305,11 +319,11 @@ protected: */ static void setTimestampFormatString(const QString &format); /** - * Updates the local setting cache of whether or not to show sender prefixmodes + * Updates the local setting cache of how to display sender prefix modes * - * @param[in] enabled If true, sender prefixmodes are enabled, otherwise false. + * @param[in] mode Display format for sender prefix modes */ - static void enableSenderPrefixes(bool enabled); + static void setSenderPrefixDisplay(UiStyle::SenderPrefixMode mode); /** * Updates the local setting cache of whether or not to show sender brackets @@ -332,11 +346,11 @@ private: mutable QHash _metricsCache; QHash _listItemFormats; static QHash _formatCodes; - 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 + 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 UiStyle::SenderPrefixMode _senderPrefixDisplay; ///< Prefix mode display before sender + static bool _showSenderBrackets; ///< If true, show brackets around sender names QIcon _channelJoinedIcon; QIcon _channelPartedIcon; @@ -353,7 +367,7 @@ private: }; -class UiStyle::StyledMessage : public Message +class UISUPPORT_EXPORT UiStyle::StyledMessage : public Message { Q_DECLARE_TR_FUNCTIONS(UiStyle::StyledMessage) @@ -377,34 +391,30 @@ private: mutable quint8 _senderHash; }; -#if QT_VERSION < 0x050000 -uint qHash(UiStyle::ItemFormatType key); -#else uint qHash(UiStyle::ItemFormatType key, uint seed); -#endif // ---- Operators for dealing with enums ---------------------------------------------------------- -UiStyle::FormatType operator|(UiStyle::FormatType lhs, UiStyle::FormatType rhs); -UiStyle::FormatType& operator|=(UiStyle::FormatType &lhs, UiStyle::FormatType rhs); -UiStyle::FormatType operator|(UiStyle::FormatType lhs, quint32 rhs); -UiStyle::FormatType& operator|=(UiStyle::FormatType &lhs, quint32 rhs); -UiStyle::FormatType operator&(UiStyle::FormatType lhs, UiStyle::FormatType rhs); -UiStyle::FormatType& operator&=(UiStyle::FormatType &lhs, UiStyle::FormatType rhs); -UiStyle::FormatType operator&(UiStyle::FormatType lhs, quint32 rhs); -UiStyle::FormatType& operator&=(UiStyle::FormatType &lhs, quint32 rhs); -UiStyle::FormatType& operator^=(UiStyle::FormatType &lhs, UiStyle::FormatType rhs); - -UiStyle::MessageLabel operator|(UiStyle::MessageLabel lhs, UiStyle::MessageLabel rhs); -UiStyle::MessageLabel& operator|=(UiStyle::MessageLabel &lhs, UiStyle::MessageLabel rhs); -UiStyle::MessageLabel operator&(UiStyle::MessageLabel lhs, quint32 rhs); -UiStyle::MessageLabel& operator&=(UiStyle::MessageLabel &lhs, UiStyle::MessageLabel rhs); +UISUPPORT_EXPORT UiStyle::FormatType operator|(UiStyle::FormatType lhs, UiStyle::FormatType rhs); +UISUPPORT_EXPORT UiStyle::FormatType& operator|=(UiStyle::FormatType &lhs, UiStyle::FormatType rhs); +UISUPPORT_EXPORT UiStyle::FormatType operator|(UiStyle::FormatType lhs, quint32 rhs); +UISUPPORT_EXPORT UiStyle::FormatType& operator|=(UiStyle::FormatType &lhs, quint32 rhs); +UISUPPORT_EXPORT UiStyle::FormatType operator&(UiStyle::FormatType lhs, UiStyle::FormatType rhs); +UISUPPORT_EXPORT UiStyle::FormatType& operator&=(UiStyle::FormatType &lhs, UiStyle::FormatType rhs); +UISUPPORT_EXPORT UiStyle::FormatType operator&(UiStyle::FormatType lhs, quint32 rhs); +UISUPPORT_EXPORT UiStyle::FormatType& operator&=(UiStyle::FormatType &lhs, quint32 rhs); +UISUPPORT_EXPORT UiStyle::FormatType& operator^=(UiStyle::FormatType &lhs, UiStyle::FormatType rhs); + +UISUPPORT_EXPORT UiStyle::MessageLabel operator|(UiStyle::MessageLabel lhs, UiStyle::MessageLabel rhs); +UISUPPORT_EXPORT UiStyle::MessageLabel& operator|=(UiStyle::MessageLabel &lhs, UiStyle::MessageLabel rhs); +UISUPPORT_EXPORT UiStyle::MessageLabel operator&(UiStyle::MessageLabel lhs, quint32 rhs); +UISUPPORT_EXPORT UiStyle::MessageLabel& operator&=(UiStyle::MessageLabel &lhs, UiStyle::MessageLabel rhs); // Shifts the label into the upper half of the return value -quint64 operator|(UiStyle::FormatType lhs, UiStyle::MessageLabel rhs); +UISUPPORT_EXPORT quint64 operator|(UiStyle::FormatType lhs, UiStyle::MessageLabel rhs); -UiStyle::ItemFormatType operator|(UiStyle::ItemFormatType lhs, UiStyle::ItemFormatType rhs); -UiStyle::ItemFormatType& operator|=(UiStyle::ItemFormatType &lhs, UiStyle::ItemFormatType rhs); +UISUPPORT_EXPORT UiStyle::ItemFormatType operator|(UiStyle::ItemFormatType lhs, UiStyle::ItemFormatType rhs); +UISUPPORT_EXPORT UiStyle::ItemFormatType& operator|=(UiStyle::ItemFormatType &lhs, UiStyle::ItemFormatType rhs); // ---- Allow for FormatList in QVariant ---------------------------------------------------------- @@ -413,3 +423,4 @@ QDataStream &operator>>(QDataStream &in, UiStyle::FormatList &formatList); Q_DECLARE_METATYPE(UiStyle::FormatList) Q_DECLARE_METATYPE(UiStyle::MessageLabel) +Q_DECLARE_METATYPE(UiStyle::SenderPrefixMode)