Default nick/action color on, sender brackets off
[quassel.git] / src / qtui / qtuistyle.h
index d3276f1..d824740 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 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  *
  *   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_
 
 #include "uistyle.h"
+#include "qtuisettings.h"
 
-class QtUiStyle : public UiStyle {
+class QtUiStyle : public UiStyle
+{
+    Q_OBJECT
 
 public:
-  QtUiStyle();
-  virtual ~QtUiStyle();
+    QtUiStyle(QObject *parent = 0);
+    virtual ~QtUiStyle();
 
-  virtual inline qreal firstColumnSeparator() const { return 6; }
-  virtual inline qreal secondColumnSeparator() const { return 6; }
-  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; }
+
+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:
+    void updateTimestampFormatString();
+    /**
+     * Updates knowledge of whether or not to show sender brackets
+     */
+    void updateShowSenderBrackets();
 
 private:
-  QColor _highlightColor;
+    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;
+
+    /**
+     * Generate a snippet of Qss stylesheet for a given sender-hash index
+     *
+     * @param[in] i            Sender hash index from 0 - 15
+     * @param[in] settings     Reference to current UI settings, used for loading color values
+     * @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, UiSettings &settings, const QString &messageType,
+                      bool includeNick = false) const;
+    QString chatListItemQss(const QString &state, const QString &key, UiSettings &settings) const;
 };
 
+
 #endif