QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCPalette.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtGui/QColor>
5#include <QtCore/QMap>
6#include <QtQmlIntegration/QtQmlIntegration>
7
8#define DECLARE_QGC_COLOR(name, lightDisabled, lightEnabled, darkDisabled, darkEnabled) \
9 { \
10 PaletteColorInfo_t colorInfo = { \
11 { QColor(lightDisabled), QColor(lightEnabled) }, \
12 { QColor(darkDisabled), QColor(darkEnabled) } \
13 }; \
14 QGCCorePlugin::instance()->paletteOverride(#name, colorInfo); \
15 _colorInfoMap[Light][ColorGroupEnabled][QStringLiteral(#name)] = colorInfo[Light][ColorGroupEnabled]; \
16 _colorInfoMap[Light][ColorGroupDisabled][QStringLiteral(#name)] = colorInfo[Light][ColorGroupDisabled]; \
17 _colorInfoMap[Dark][ColorGroupEnabled][QStringLiteral(#name)] = colorInfo[Dark][ColorGroupEnabled]; \
18 _colorInfoMap[Dark][ColorGroupDisabled][QStringLiteral(#name)] = colorInfo[Dark][ColorGroupDisabled]; \
19 _colors << #name; \
20 }
21
22#define DECLARE_QGC_NONTHEMED_COLOR(name, disabledColor, enabledColor) \
23 { \
24 PaletteColorInfo_t colorInfo = { \
25 { QColor(disabledColor), QColor(enabledColor) }, \
26 { QColor(disabledColor), QColor(enabledColor) } \
27 }; \
28 QGCCorePlugin::instance()->paletteOverride(#name, colorInfo); \
29 _colorInfoMap[Light][ColorGroupEnabled][QStringLiteral(#name)] = colorInfo[Light][ColorGroupEnabled]; \
30 _colorInfoMap[Light][ColorGroupDisabled][QStringLiteral(#name)] = colorInfo[Light][ColorGroupDisabled]; \
31 _colorInfoMap[Dark][ColorGroupEnabled][QStringLiteral(#name)] = colorInfo[Dark][ColorGroupEnabled]; \
32 _colorInfoMap[Dark][ColorGroupDisabled][QStringLiteral(#name)] = colorInfo[Dark][ColorGroupDisabled]; \
33 _colors << #name; \
34 }
35
36#define DECLARE_QGC_SINGLE_COLOR(name, color) \
37 { \
38 PaletteColorInfo_t colorInfo = { \
39 { QColor(color), QColor(color) }, \
40 { QColor(color), QColor(color) } \
41 }; \
42 QGCCorePlugin::instance()->paletteOverride(#name, colorInfo); \
43 _colorInfoMap[Light][ColorGroupEnabled][QStringLiteral(#name)] = colorInfo[Light][ColorGroupEnabled]; \
44 _colorInfoMap[Light][ColorGroupDisabled][QStringLiteral(#name)] = colorInfo[Light][ColorGroupDisabled]; \
45 _colorInfoMap[Dark][ColorGroupEnabled][QStringLiteral(#name)] = colorInfo[Dark][ColorGroupEnabled]; \
46 _colorInfoMap[Dark][ColorGroupDisabled][QStringLiteral(#name)] = colorInfo[Dark][ColorGroupDisabled]; \
47 _colors << #name; \
48 }
49
50#define DEFINE_QGC_COLOR(NAME, SETNAME) \
51 Q_PROPERTY(QColor NAME READ NAME WRITE SETNAME NOTIFY paletteChanged) \
52 Q_PROPERTY(QStringList NAME ## Colors READ NAME ## Colors NOTIFY paletteChanged) \
53 QColor NAME() const { return _colorInfoMap[_theme][_colorGroupEnabled ? ColorGroupEnabled : ColorGroupDisabled][QStringLiteral(#NAME)]; } \
54 QStringList NAME ## Colors() const { \
55 QStringList c; \
56 c << _colorInfoMap[Light][ColorGroupEnabled][QStringLiteral(#NAME)].name(QColor::HexRgb); \
57 c << _colorInfoMap[Light][ColorGroupDisabled][QStringLiteral(#NAME)].name(QColor::HexRgb); \
58 c << _colorInfoMap[Dark][ColorGroupEnabled][QStringLiteral(#NAME)].name(QColor::HexRgb); \
59 c << _colorInfoMap[Dark][ColorGroupDisabled][QStringLiteral(#NAME)].name(QColor::HexRgb); \
60 return c; \
61 } \
62 void SETNAME(const QColor& color) { _colorInfoMap[_theme][_colorGroupEnabled ? ColorGroupEnabled : ColorGroupDisabled][QStringLiteral(#NAME)] = color; _signalPaletteChangeToAll(); }
63
82class QGCPalette : public QObject
83{
84 Q_OBJECT
85 QML_ELEMENT
86
87public:
93
94 enum Theme {
95 Light = 0,
98 };
99 Q_ENUM(Theme)
100
102
103 Q_PROPERTY(Theme globalTheme READ globalTheme WRITE setGlobalTheme NOTIFY paletteChanged)
105 Q_PROPERTY(QStringList colors READ colors CONSTANT)
106
107 DEFINE_QGC_COLOR(window, setWindow)
108 DEFINE_QGC_COLOR(windowTransparent, setWindowTransparent)
109 DEFINE_QGC_COLOR(windowShadeLight, setWindowShadeLight)
110 DEFINE_QGC_COLOR(windowShade, setWindowShade)
111 DEFINE_QGC_COLOR(windowShadeDark, setWindowShadeDark)
112 DEFINE_QGC_COLOR(text, setText)
113 DEFINE_QGC_COLOR(warningText, setWarningText)
114 DEFINE_QGC_COLOR(button, setButton)
115 DEFINE_QGC_COLOR(buttonBorder, setButtonBorder)
116 DEFINE_QGC_COLOR(buttonText, setButtonText)
117 DEFINE_QGC_COLOR(buttonHighlight, setButtonHighlight)
118 DEFINE_QGC_COLOR(buttonHighlightText, setButtonHighlightText)
119 DEFINE_QGC_COLOR(primaryButton, setPrimaryButton)
120 DEFINE_QGC_COLOR(primaryButtonText, setPrimaryButtonText)
121 DEFINE_QGC_COLOR(textField, setTextField)
122 DEFINE_QGC_COLOR(textFieldText, setTextFieldText)
123 DEFINE_QGC_COLOR(mapButton, setMapButton)
124 DEFINE_QGC_COLOR(mapButtonHighlight, setMapButtonHighlight)
125 DEFINE_QGC_COLOR(mapIndicator, setMapIndicator)
126 DEFINE_QGC_COLOR(mapIndicatorChild, setMapIndicatorChild)
127 DEFINE_QGC_COLOR(mapWidgetBorderLight, setMapWidgetBorderLight)
128 DEFINE_QGC_COLOR(mapWidgetBorderDark, setMapWidgetBorderDark)
129 DEFINE_QGC_COLOR(mapMissionTrajectory, setMapMissionTrajectory)
130 DEFINE_QGC_COLOR(brandingPurple, setBrandingPurple)
131 DEFINE_QGC_COLOR(brandingBlue, setBrandingBlue)
132 DEFINE_QGC_COLOR(colorGreen, setColorGreen)
133 DEFINE_QGC_COLOR(colorYellow, setColorYellow)
134 DEFINE_QGC_COLOR(colorYellowGreen, setColorYellowGreen)
135 DEFINE_QGC_COLOR(colorOrange, setColorOrange)
136 DEFINE_QGC_COLOR(colorRed, setColorRed)
137 DEFINE_QGC_COLOR(colorGrey, setColorGrey)
138 DEFINE_QGC_COLOR(colorBlue, setColorBlue)
139 DEFINE_QGC_COLOR(alertBackground, setAlertBackground)
140 DEFINE_QGC_COLOR(alertBorder, setAlertBorder)
141 DEFINE_QGC_COLOR(alertText, setAlertText)
142 DEFINE_QGC_COLOR(missionItemEditor, setMissionItemEditor)
143 DEFINE_QGC_COLOR(statusFailedText, setstatusFailedText)
144 DEFINE_QGC_COLOR(statusPassedText, setstatusPassedText)
145 DEFINE_QGC_COLOR(statusPendingText, setstatusPendingText)
146 DEFINE_QGC_COLOR(surveyPolygonInterior, setSurveyPolygonInterior)
147 DEFINE_QGC_COLOR(surveyPolygonTerrainCollision, setSurveyPolygonTerrainCollision)
148 DEFINE_QGC_COLOR(toolbarBackground, setToolbarBackground)
149 DEFINE_QGC_COLOR(toolStripFGColor, setToolStripFGColor)
150 DEFINE_QGC_COLOR(toolStripHoverColor, setToolStripHoverColor)
151 DEFINE_QGC_COLOR(groupBorder, setGroupBorder)
152 DEFINE_QGC_COLOR(modifiedParamValue, setModifiedParamValue)
153 DEFINE_QGC_COLOR(photoCaptureButtonColor, setPhotoCaptureButtonColor)
154 DEFINE_QGC_COLOR(videoCaptureButtonColor, setVideoCaptureButtonColor)
155
156 QGCPalette(QObject* parent = nullptr);
157 ~QGCPalette();
158
159 QStringList colors () const { return _colors; }
160 bool colorGroupEnabled () const { return _colorGroupEnabled; }
161 void setColorGroupEnabled (bool enabled);
162
163 static Theme globalTheme () { return _theme; }
164 static void setGlobalTheme (Theme newTheme);
165
166signals:
168
169private:
170 static void _buildMap ();
171 static void _signalPaletteChangeToAll ();
172 void _signalPaletteChanged ();
173 void _themeChanged ();
174
175 static Theme _theme;
176 bool _colorGroupEnabled;
177 static QStringList _colors;
178
179 static QMap<int, QMap<int, QMap<QString, QColor>>> _colorInfoMap; // theme -> colorGroup -> color name -> color
180 static QList<QGCPalette*> _paletteObjects;
181};
#define DEFINE_QGC_COLOR(NAME, SETNAME)
Definition QGCPalette.h:50
QGCPalette is used in QML ui to expose color properties for the QGC palette.
Definition QGCPalette.h:83
QColor PaletteColorInfo_t[cMaxTheme][cMaxColorGroup]
Definition QGCPalette.h:101
@ ColorGroupEnabled
Definition QGCPalette.h:90
@ ColorGroupDisabled
Definition QGCPalette.h:89
static void setGlobalTheme(Theme newTheme)
QStringList colors() const
Definition QGCPalette.h:159
void paletteChanged()
static Theme globalTheme()
Definition QGCPalette.h:163
bool colorGroupEnabled() const
Definition QGCPalette.h:160
void setColorGroupEnabled(bool enabled)
Definition QGCPalette.cc:94