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
105 Q_PROPERTY(QStringList colors READ colors CONSTANT)
106
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
void setToolStripHoverColor(const QColor &color)
Definition QGCPalette.h:151
void setMapButton(const QColor &color)
Definition QGCPalette.h:124
void setPhotoCaptureButtonColor(const QColor &color)
Definition QGCPalette.h:153
void setMapIndicator(const QColor &color)
Definition QGCPalette.h:126
void setAlertText(const QColor &color)
Definition QGCPalette.h:142
QColor PaletteColorInfo_t[cMaxTheme][cMaxColorGroup]
Definition QGCPalette.h:101
void setSurveyPolygonInterior(const QColor &color)
Definition QGCPalette.h:147
void setColorOrange(const QColor &color)
Definition QGCPalette.h:136
void setButtonBorder(const QColor &color)
Definition QGCPalette.h:116
void setMapWidgetBorderDark(const QColor &color)
Definition QGCPalette.h:129
void setPrimaryButtonText(const QColor &color)
Definition QGCPalette.h:121
void setText(const QColor &color)
Definition QGCPalette.h:112
void setTextFieldText(const QColor &color)
Definition QGCPalette.h:123
@ ColorGroupEnabled
Definition QGCPalette.h:90
@ ColorGroupDisabled
Definition QGCPalette.h:89
void setWarningText(const QColor &color)
Definition QGCPalette.h:114
void setWindowShadeLight(const QColor &color)
Definition QGCPalette.h:109
void setVideoCaptureButtonColor(const QColor &color)
Definition QGCPalette.h:154
static void setGlobalTheme(Theme newTheme)
void setWindowShadeDark(const QColor &color)
Definition QGCPalette.h:111
void setTextField(const QColor &color)
Definition QGCPalette.h:122
void setWindow(const QColor &color)
Definition QGCPalette.h:107
void setColorYellow(const QColor &color)
Definition QGCPalette.h:134
void setWindowTransparentText(const QColor &color)
Definition QGCPalette.h:113
void setBrandingBlue(const QColor &color)
Definition QGCPalette.h:132
QStringList colors() const
Definition QGCPalette.h:159
void setWindowTransparent(const QColor &color)
Definition QGCPalette.h:108
void setMapButtonHighlight(const QColor &color)
Definition QGCPalette.h:125
void paletteChanged()
void setButtonHighlight(const QColor &color)
Definition QGCPalette.h:118
void setToolbarBackground(const QColor &color)
Definition QGCPalette.h:149
void setPrimaryButton(const QColor &color)
Definition QGCPalette.h:120
static Theme globalTheme()
Definition QGCPalette.h:163
void setWindowShade(const QColor &color)
Definition QGCPalette.h:110
void setAlertBorder(const QColor &color)
Definition QGCPalette.h:141
void setColorGreen(const QColor &color)
Definition QGCPalette.h:133
void setColorBlue(const QColor &color)
Definition QGCPalette.h:139
void setColorRed(const QColor &color)
Definition QGCPalette.h:137
void setColorGrey(const QColor &color)
Definition QGCPalette.h:138
void setSurveyPolygonTerrainCollision(const QColor &color)
Definition QGCPalette.h:148
void setMapWidgetBorderLight(const QColor &color)
Definition QGCPalette.h:128
void setButtonHighlightText(const QColor &color)
Definition QGCPalette.h:119
void setstatusFailedText(const QColor &color)
Definition QGCPalette.h:144
void setMapMissionTrajectory(const QColor &color)
Definition QGCPalette.h:130
void setButton(const QColor &color)
Definition QGCPalette.h:115
bool colorGroupEnabled() const
Definition QGCPalette.h:160
void setToolStripFGColor(const QColor &color)
Definition QGCPalette.h:150
void setstatusPendingText(const QColor &color)
Definition QGCPalette.h:146
void setColorGroupEnabled(bool enabled)
Definition QGCPalette.cc:94
void setColorYellowGreen(const QColor &color)
Definition QGCPalette.h:135
void setstatusPassedText(const QColor &color)
Definition QGCPalette.h:145
void setGroupBorder(const QColor &color)
Definition QGCPalette.h:152
void setBrandingPurple(const QColor &color)
Definition QGCPalette.h:131
void setMapIndicatorChild(const QColor &color)
Definition QGCPalette.h:127
void setMissionItemEditor(const QColor &color)
Definition QGCPalette.h:143
void setButtonText(const QColor &color)
Definition QGCPalette.h:117
void setAlertBackground(const QColor &color)
Definition QGCPalette.h:140