1 /*
2     SPDX-FileCopyrightText: 2018 Michail Vourlakos <mvourlakos@gmail.com>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifndef SCHEMECOLORS_H
8 #define SCHEMECOLORS_H
9 
10 // Qt
11 #include <QObject>
12 #include <QColor>
13 
14 namespace Latte {
15 namespace WindowSystem {
16 
17 class SchemeColors: public QObject
18 {
19     Q_OBJECT
20     Q_PROPERTY(QString schemeFile READ schemeFile NOTIFY schemeFileChanged)
21 
22     Q_PROPERTY(QColor backgroundColor READ backgroundColor NOTIFY colorsChanged)
23     Q_PROPERTY(QColor textColor READ textColor NOTIFY colorsChanged)
24     Q_PROPERTY(QColor inactiveBackgroundColor READ inactiveBackgroundColor NOTIFY colorsChanged)
25     Q_PROPERTY(QColor inactiveTextColor READ inactiveTextColor NOTIFY colorsChanged)
26 
27     Q_PROPERTY(QColor highlightColor READ highlightColor NOTIFY colorsChanged)
28     Q_PROPERTY(QColor highlightedTextColor READ highlightedTextColor NOTIFY colorsChanged)
29     Q_PROPERTY(QColor positiveTextColor READ positiveTextColor NOTIFY colorsChanged)
30     Q_PROPERTY(QColor neutralTextColor READ neutralTextColor NOTIFY colorsChanged)
31     Q_PROPERTY(QColor negativeTextColor READ negativeTextColor NOTIFY colorsChanged)
32 
33     Q_PROPERTY(QColor buttonTextColor READ buttonTextColor NOTIFY colorsChanged)
34     Q_PROPERTY(QColor buttonBackgroundColor READ buttonBackgroundColor NOTIFY colorsChanged)
35     Q_PROPERTY(QColor buttonHoverColor READ buttonHoverColor NOTIFY colorsChanged)
36     Q_PROPERTY(QColor buttonFocusColor READ buttonFocusColor NOTIFY colorsChanged)
37 
38 public:
39     SchemeColors(QObject *parent, QString scheme, bool plasmaTheme = false);
40     ~SchemeColors() override;
41 
42     QString schemeName() const;
43 
44     QString schemeFile() const;
45     void setSchemeFile(QString file);
46 
47     QColor backgroundColor() const;
48     QColor textColor() const;
49     QColor inactiveBackgroundColor() const;
50     QColor inactiveTextColor() const;
51     QColor highlightColor() const;
52     QColor highlightedTextColor() const;
53     QColor positiveTextColor() const;
54     QColor neutralTextColor() const;
55     QColor negativeTextColor() const;
56 
57     QColor buttonTextColor() const;
58     QColor buttonBackgroundColor() const;
59     QColor buttonHoverColor() const;
60     QColor buttonFocusColor() const;
61 
62     static QString possibleSchemeFile(QString scheme);
63     static QString schemeName(QString originalFile);
64 
65 signals:
66     void colorsChanged();
67     void schemeFileChanged();
68 
69 private slots:
70     void updateScheme();
71 
72 private:
73     bool m_basedOnPlasmaTheme{false};
74 
75     QString m_schemeName;
76     QString m_schemeFile;
77 
78     QColor m_activeBackgroundColor;
79     QColor m_activeTextColor;
80 
81     QColor m_inactiveBackgroundColor;
82     QColor m_inactiveTextColor;
83 
84     QColor m_highlightColor;
85     QColor m_highlightedTextColor;
86     QColor m_positiveTextColor;
87     QColor m_neutralTextColor;
88     QColor m_negativeTextColor;
89 
90     QColor m_buttonTextColor;
91     QColor m_buttonBackgroundColor;
92     QColor m_buttonHoverColor;
93     QColor m_buttonFocusColor;
94 };
95 
96 }
97 }
98 
99 #endif
100