X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fqtuistyle.h;h=88dd4b23c3d00b999aba22adb0dabf2e75c382b1;hp=8db318243734fdbd10cc29091eaca738798c0728;hb=c1cf157116de7fc3da96203aa6f03c38c7ebb650;hpb=ddba2696fe051b472d6670e225e67c2f6f1972ce diff --git a/src/qtui/qtuistyle.h b/src/qtui/qtuistyle.h index 8db31824..88dd4b23 100644 --- a/src/qtui/qtuistyle.h +++ b/src/qtui/qtuistyle.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 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 * @@ -15,27 +15,108 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef _QTUISTYLE_H_ -#define _QTUISTYLE_H_ +#ifndef QTUISTYLE_H_ +#define QTUISTYLE_H_ +#include "qtuisettings.h" #include "uistyle.h" -class QtUiStyle : public UiStyle { +class QtUiStyle : public UiStyle +{ + Q_OBJECT - public: - QtUiStyle(); - virtual ~QtUiStyle(); +public: + QtUiStyle(QObject* parent = nullptr); - virtual inline qreal firstColumnSeparator() const { return 10; } - virtual inline qreal secondColumnSeparator() const { return 10; } - virtual inline QColor highlightColor() const { return _highlightColor; } - virtual void setHighlightColor(const QColor &); + virtual inline qreal firstColumnSeparator() const { return 6; } + virtual inline qreal secondColumnSeparator() const { return 6; } - private: - QColor _highlightColor; +public slots: + /** + * Generates initial settingsQss if it doesn't exist + * + * This allows for default fonts, colors, etc to specified. + */ + + void initializeSettingsQss(); + + /** + * Generates UI stylesheet based on selected fonts, colors, etc + */ + void generateSettingsQss() const; + +private slots: + /** + * Updates knowledge of whether or not to use the custom timestamp format + */ + void updateUseCustomTimestampFormat(); + + /** + * Updates knowledge of the current timestamp format + */ + void updateTimestampFormatString(); + + /** + * Updates knowledge of how to display sender prefix modes + */ + void updateSenderPrefixDisplay(); + + /** + * Updates knowledge of whether or not to show sender brackets + */ + void updateShowSenderBrackets(); + +private: + QString fontDescription(const QFont& font) const; + + /** + * Generate a Qt stylesheet color string from a given setting + * + * @param[in] key Reference to settings key containing a QColor + * @param[in] settings UiSettings manager to search + * @param[in] defaultColor Fallback color if not found; when unspecified default is black + */ + QString color(const QString& key, UiSettings& settings, const QColor& defaultColor = QColor()) const; + + QString msgTypeQss(const QString& msgType, const QString& key, UiSettings& settings) const; + + /** + * Generates the Qss color palette stylesheet for sender colors + * + * This must be called before generating any Qss dependent on these colors. + * + * @see QtUiStyle::senderQss() + * @param[in] settings Reference to current UI settings, used for loading color values + * @return Quassel-theme-compatible Qss color palette + */ + QString senderPaletteQss(UiSettings& settings) const; + + /** + * Generate a snippet of Qss stylesheet for a given sender-hash index + * + * This depends on the color palette generated by QtUiStyle::senderPaletteQss() + * + * @param[in] i Sender hash index from 0 - 15 + * @param[in] messageType Type of message to filter, e.g. 'plain' or 'action' + * @param[in] includeNick Also apply foreground color to Nick + * @return Snippet of Quassel-theme-compatible Qss stylesheet + */ + QString senderQss(int i, const QString& messageType, bool includeNick = false) const; + + /** + * Generate a snippet of Qss stylesheet for a given IRC nickname sender-hash index + * + * This depends on the color palette generated by QtUiStyle::senderPaletteQss() + * + * @param[in] i Sender hash index from 0 - 15 + * @return Snippet of Quassel-theme-compatible Qss stylesheet + */ + QString nickQss(int i) const; + + QString chatListItemQss(const QString& state, const QString& key, UiSettings& settings) const; }; #endif