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 <lager/cursor.hpp>
12#include <lager/extra/qt.hpp>
13
14#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
15#include <kcolorscheme.h>
16#else
17#include <KColorScheme>
18#endif
19class KisThemeColorGroup : public QObject
20{
21 Q_OBJECT
22 QML_UNCREATABLE("Use Theme instead")
23 Q_PROPERTY(int state READ state WRITE setState NOTIFY stateChanged)
24public:
25 KisThemeColorGroup(KColorScheme::ColorSet _set = KColorScheme::View, QObject *parent = nullptr);
27
28 lager::cursor<KColorScheme> scheme;
29 LAGER_QT_READER(int, colorSet);
30
31 // Foreground roles: used for text.
32 LAGER_QT_READER(QColor, textColor);
33 LAGER_QT_READER(QColor, disabledTextColor);
34 LAGER_QT_READER(QColor, activeTextColor);
35
36 LAGER_QT_READER(QColor, linkColor);
37 LAGER_QT_READER(QColor, visitedLinkColor);
38
39 LAGER_QT_READER(QColor, negativeTextColor);
40 LAGER_QT_READER(QColor, neutralTextColor);
41 LAGER_QT_READER(QColor, positiveTextColor);
42
43 // Background roles: used for backgrounds.
44 LAGER_QT_READER(QColor, backgroundColor);
45 LAGER_QT_READER(QColor, activeBackgroundColor);
46
47 LAGER_QT_READER(QColor, linkBackgroundColor);
48 LAGER_QT_READER(QColor, visitedLinkBackgroundColor);
49
50 LAGER_QT_READER(QColor, negativeBackgroundColor);
51 LAGER_QT_READER(QColor, neutralBackgroundColor);
52 LAGER_QT_READER(QColor, positiveBackgroundColor);
53
54 LAGER_QT_READER(QColor, alternateBackgroundColor);
55
56 // Decoration roles: used for borders.
57 LAGER_QT_READER(QColor, focusColor);
58 LAGER_QT_READER(QColor, hoverColor);
59
60 // Shade roles: used for 3d elements like bevels.
61
62 LAGER_QT_READER(QColor, lightShadeColor);
63 LAGER_QT_READER(QColor, midLightShadeColor);
64 LAGER_QT_READER(QColor, midShadeColor);
65 LAGER_QT_READER(QColor, darkShadeColor);
66 LAGER_QT_READER(QColor, shadowShadeColor);
67
68 void updateColorScheme(const QString filename);
69 void setState(int newState);
70 int state();
71private Q_SLOTS:
72 void updateState();
73
74Q_SIGNALS:
77private:
79 QPalette::ColorGroup m_state = QPalette::Active;
80
84};
85
93class KisTheme : public QObject
94{
95 Q_OBJECT
96
97 Q_PROPERTY(KisThemeColorGroup *view READ view() NOTIFY viewChanged())
98 Q_PROPERTY(KisThemeColorGroup *window READ window() NOTIFY windowChanged())
99 Q_PROPERTY(KisThemeColorGroup *button READ button() NOTIFY buttonChanged())
100 Q_PROPERTY(KisThemeColorGroup *selection READ selection() NOTIFY selectionChanged())
101 Q_PROPERTY(KisThemeColorGroup *tooltip READ tooltip() NOTIFY tooltipChanged())
102
103 QML_NAMED_ELEMENT(Theme)
104public:
105 KisTheme(QObject *parent = nullptr);
106
110 KisThemeColorGroup selectionModel;
111 KisThemeColorGroup tooltipModel;
112
114 KisThemeColorGroup *window();
116 KisThemeColorGroup *selection();
117 KisThemeColorGroup *tooltip();
118public Q_SLOTS:
119 void slotUpdateThemes();
120Q_SIGNALS:
121 void viewChanged();
122 void windowChanged();
123 void buttonChanged();
124 void selectionChanged();
125 void tooltipChanged();
126};
127
128#endif // KISTHEME_H
KColorScheme::ColorSet m_set
Definition KisTheme.h:78
void setState(int newState)
Definition KisTheme.cpp:91
KColorScheme m_active
Definition KisTheme.h:81
QPalette::ColorGroup m_state
Definition KisTheme.h:79
lager::cursor< KColorScheme > scheme
Definition KisTheme.h:28
KColorScheme m_disabled
Definition KisTheme.h:83
void updateColorScheme(const QString filename)
Definition KisTheme.cpp:81
KColorScheme m_inactive
Definition KisTheme.h:82
LAGER_QT_READER(int, colorSet)
The KisTheme class.
Definition KisTheme.h:94
KisThemeColorGroup * view
Definition KisTheme.h:97
Definition View.h:25
QString button(const QWheelEvent &ev)