Krita Source Code Documentation
Loading...
Searching...
No Matches
KisTheme.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KISTHEME_H
7#define KISTHEME_H
8
9#include <QObject>
10#include <QQmlEngine>
11#include <functional>
12
13#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
14#include <kcolorscheme.h>
15#else
16#include <KColorScheme>
17#endif
18
19class KisThemeConfig : public QObject
20{
21 Q_OBJECT
22 Q_DISABLE_COPY_MOVE(KisThemeConfig)
23public:
24 static const KisThemeConfig *instance();
25
26 const KColorScheme &viewActive() const
27 {
28 return m_viewActive;
29 }
30
32 {
33 return m_viewInactive;
34 }
35
37 {
38 return m_viewDisabled;
39 }
40
42 {
43 return m_windowActive;
44 }
45
47 {
48 return m_windowInactive;
49 }
50
52 {
53 return m_windowDisabled;
54 }
55
57 {
58 return m_buttonActive;
59 }
60
62 {
63 return m_buttonInactive;
64 }
65
67 {
68 return m_buttonDisabled;
69 }
70
72 {
73 return m_selectionActive;
74 }
75
77 {
79 }
80
82 {
84 }
85
87 {
88 return m_tooltipActive;
89 }
90
92 {
93 return m_tooltipInactive;
94 }
95
97 {
98 return m_tooltipDisabled;
99 }
100
101Q_SIGNALS:
103
104private Q_SLOTS:
105 void slotSetFilename(const QString &filename);
106
107private:
108 explicit KisThemeConfig(QObject *parent = nullptr);
109
110 void updateSchemes();
111
112 QString m_filename;
128};
129
130class KisThemeColorGroup : public QObject
131{
132 Q_OBJECT
133 QML_UNCREATABLE("Use Theme instead")
134 Q_PROPERTY(int state READ state WRITE setState NOTIFY stateChanged FINAL)
135
136 // Foreground roles: used for text.
137 Q_PROPERTY(QColor textColor READ textColor NOTIFY textColorChanged FINAL)
139 Q_PROPERTY(QColor activeTextColor READ activeTextColor NOTIFY activeTextColorChanged FINAL)
140
141 Q_PROPERTY(QColor linkColor READ linkColor NOTIFY linkColorChanged FINAL)
142 Q_PROPERTY(QColor visitedLinkColor READ visitedLinkColor NOTIFY visitedLinkColorChanged FINAL)
143
145 Q_PROPERTY(QColor neutralTextColor READ neutralTextColor NOTIFY neutralTextColorChanged FINAL)
147
148 // Background roles: used for backgrounds.
149 Q_PROPERTY(QColor backgroundColor READ backgroundColor NOTIFY backgroundColorChanged FINAL)
151
155
159
160 Q_PROPERTY(
162
163 // Decoration roles: used for borders.
164 Q_PROPERTY(QColor focusColor READ focusColor NOTIFY focusColorChanged FINAL)
165 Q_PROPERTY(QColor hoverColor READ hoverColor NOTIFY hoverColorChanged FINAL)
166
167 // Shade roles: used for 3d elements like bevels.
168
169 Q_PROPERTY(QColor lightShadeColor READ lightShadeColor NOTIFY lightShadeColorChanged FINAL)
171 Q_PROPERTY(QColor midShadeColor READ midShadeColor NOTIFY midShadeColorChanged FINAL)
172 Q_PROPERTY(QColor darkShadeColor READ darkShadeColor NOTIFY darkShadeColorChanged FINAL)
173 Q_PROPERTY(QColor shadowShadeColor READ shadowShadeColor NOTIFY shadowShadeColorChanged FINAL)
174
175public:
176 KisThemeColorGroup(KColorScheme::ColorSet set = KColorScheme::View, QObject *parent = nullptr);
177
178 int state() const;
179 void setState(int state);
180
181 QColor textColor() const;
182 QColor disabledTextColor() const;
183 QColor activeTextColor() const;
184 QColor linkColor() const;
185 QColor visitedLinkColor() const;
186 QColor negativeTextColor() const;
187 QColor neutralTextColor() const;
188 QColor positiveTextColor() const;
189 QColor backgroundColor() const;
190 QColor activeBackgroundColor() const;
191 QColor linkBackgroundColor() const;
192 QColor visitedLinkBackgroundColor() const;
193 QColor negativeBackgroundColor() const;
194 QColor neutralBackgroundColor() const;
195 QColor positiveBackgroundColor() const;
196 QColor alternateBackgroundColor() const;
197 QColor focusColor() const;
198 QColor hoverColor() const;
199 QColor lightShadeColor() const;
200 QColor midLightShadeColor() const;
201 QColor midShadeColor() const;
202 QColor darkShadeColor() const;
203 QColor shadowShadeColor() const;
204
205Q_SIGNALS:
230
231public Q_SLOTS:
232 void slotUpdateTheme();
233
234private:
236 {
237 return scheme(m_set, m_state);
238 }
239
240 static const KColorScheme &scheme(KColorScheme::ColorSet set, QPalette::ColorGroup state);
241
243 QPalette::ColorGroup m_state = QPalette::Active;
244};
245
253class KisTheme : public QObject
254{
255 Q_OBJECT
256
257 Q_PROPERTY(KisThemeColorGroup *view READ view() CONSTANT FINAL)
258 Q_PROPERTY(KisThemeColorGroup *window READ window() CONSTANT FINAL)
259 Q_PROPERTY(KisThemeColorGroup *button READ button() CONSTANT FINAL)
260 Q_PROPERTY(KisThemeColorGroup *selection READ selection() CONSTANT FINAL)
261 Q_PROPERTY(KisThemeColorGroup *tooltip READ tooltip() CONSTANT FINAL)
262
263 QML_NAMED_ELEMENT(Theme)
264public:
265 KisTheme(QObject *parent = nullptr);
266
272
273public Q_SLOTS:
274 void slotUpdateThemes();
275
276private:
282};
283
284#endif // KISTHEME_H
QColor visitedLinkColor
Definition KisTheme.h:142
void neutralTextColorChanged()
QColor activeBackgroundColor
Definition KisTheme.h:150
QColor backgroundColor
Definition KisTheme.h:149
QColor negativeTextColor
Definition KisTheme.h:144
void setState(int state)
Definition KisTheme.cpp:70
void activeBackgroundColorChanged()
void backgroundColorChanged()
void visitedLinkColorChanged()
void shadowShadeColorChanged()
void linkBackgroundColorChanged()
QColor linkBackgroundColor
Definition KisTheme.h:152
QPalette::ColorGroup m_state
Definition KisTheme.h:243
void midShadeColorChanged()
QColor positiveTextColor
Definition KisTheme.h:146
void lightShadeColorChanged()
const KColorScheme & currentScheme() const
Definition KisTheme.h:235
const KColorScheme::ColorSet m_set
Definition KisTheme.h:242
void positiveTextColorChanged()
void disabledTextColorChanged()
QColor neutralBackgroundColor
Definition KisTheme.h:157
void negativeBackgroundColorChanged()
QColor shadowShadeColor
Definition KisTheme.h:173
QColor positiveBackgroundColor
Definition KisTheme.h:158
void visitedLinkBackgroundColorChanged()
void neutralBackgroundColorChanged()
void positiveBackgroundColorChanged()
QColor visitedLinkBackgroundColor
Definition KisTheme.h:154
QColor negativeBackgroundColor
Definition KisTheme.h:156
void midLightShadeColorChanged()
void darkShadeColorChanged()
QColor darkShadeColor
Definition KisTheme.h:172
QColor alternateBackgroundColor
Definition KisTheme.h:161
void activeTextColorChanged()
void alternateBackgroundColorChanged()
void negativeTextColorChanged()
QColor lightShadeColor
Definition KisTheme.h:169
QColor activeTextColor
Definition KisTheme.h:139
QColor disabledTextColor
Definition KisTheme.h:138
static const KColorScheme & scheme(KColorScheme::ColorSet set, QPalette::ColorGroup state)
Definition KisTheme.cpp:320
QColor neutralTextColor
Definition KisTheme.h:145
QColor midLightShadeColor
Definition KisTheme.h:170
KColorScheme m_viewInactive
Definition KisTheme.h:114
const KColorScheme & selectionDisabled() const
Definition KisTheme.h:81
const KColorScheme & windowActive() const
Definition KisTheme.h:41
KColorScheme m_tooltipInactive
Definition KisTheme.h:126
const KColorScheme & buttonInactive() const
Definition KisTheme.h:61
KColorScheme m_windowInactive
Definition KisTheme.h:117
const KColorScheme & selectionActive() const
Definition KisTheme.h:71
KColorScheme m_selectionInactive
Definition KisTheme.h:123
const KColorScheme & windowDisabled() const
Definition KisTheme.h:51
void sigThemeChanged()
void updateSchemes()
Definition KisTheme.cpp:38
const KColorScheme & buttonActive() const
Definition KisTheme.h:56
const KColorScheme & selectionInactive() const
Definition KisTheme.h:76
KColorScheme m_selectionActive
Definition KisTheme.h:122
KColorScheme m_viewDisabled
Definition KisTheme.h:115
const KColorScheme & windowInactive() const
Definition KisTheme.h:46
KColorScheme m_buttonInactive
Definition KisTheme.h:120
void slotSetFilename(const QString &filename)
Definition KisTheme.cpp:19
KColorScheme m_viewActive
Definition KisTheme.h:113
KColorScheme m_selectionDisabled
Definition KisTheme.h:124
const KColorScheme & viewDisabled() const
Definition KisTheme.h:36
KColorScheme m_windowDisabled
Definition KisTheme.h:118
QString m_filename
Definition KisTheme.h:112
static const KisThemeConfig * instance()
Definition KisTheme.cpp:10
KColorScheme m_buttonDisabled
Definition KisTheme.h:121
const KColorScheme & buttonDisabled() const
Definition KisTheme.h:66
KColorScheme m_buttonActive
Definition KisTheme.h:119
const KColorScheme & viewInactive() const
Definition KisTheme.h:31
KColorScheme m_tooltipActive
Definition KisTheme.h:125
const KColorScheme & tooltipInactive() const
Definition KisTheme.h:91
const KColorScheme & tooltipDisabled() const
Definition KisTheme.h:96
const KColorScheme & viewActive() const
Definition KisTheme.h:26
const KColorScheme & tooltipActive() const
Definition KisTheme.h:86
KisThemeConfig(QObject *parent=nullptr)
Definition KisTheme.cpp:27
KColorScheme m_tooltipDisabled
Definition KisTheme.h:127
KColorScheme m_windowActive
Definition KisTheme.h:116
The KisTheme class.
Definition KisTheme.h:254
KisThemeColorGroup m_button
Definition KisTheme.h:279
FINALKisThemeColorGroup * selection
Definition KisTheme.h:260
KisThemeColorGroup m_view
Definition KisTheme.h:277
KisThemeColorGroup m_selection
Definition KisTheme.h:280
FINALKisThemeColorGroup * window
Definition KisTheme.h:258
FINALKisThemeColorGroup * button
Definition KisTheme.h:259
FINALKisThemeColorGroup * tooltip
Definition KisTheme.h:261
KisThemeColorGroup * view
Definition KisTheme.h:257
KisThemeColorGroup m_window
Definition KisTheme.h:278
KisThemeColorGroup m_tooltip
Definition KisTheme.h:281
void slotUpdateThemes()
Definition KisTheme.cpp:407
Definition View.h:25