You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
5.0 KiB
121 lines
5.0 KiB
/**************************************************************************** |
|
* |
|
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org> |
|
* |
|
* QGroundControl is licensed according to the terms in the file |
|
* COPYING.md in the root of the source code directory. |
|
* |
|
****************************************************************************/ |
|
|
|
|
|
/// @file |
|
/// @author Don Gagne <don@thegagnes.com> |
|
|
|
#include "QGCPalette.h" |
|
#include "QGCApplication.h" |
|
#include "QGCCorePlugin.h" |
|
|
|
#include <QApplication> |
|
#include <QPalette> |
|
|
|
QList<QGCPalette*> QGCPalette::_paletteObjects; |
|
|
|
QGCPalette::Theme QGCPalette::_theme = QGCPalette::Dark; |
|
|
|
QMap<int, QMap<int, QMap<QString, QColor>>> QGCPalette::_colorInfoMap; |
|
|
|
QStringList QGCPalette::_colors; |
|
|
|
QGCPalette::QGCPalette(QObject* parent) : |
|
QObject(parent), |
|
_colorGroupEnabled(true) |
|
{ |
|
if (_colorInfoMap.isEmpty()) { |
|
_buildMap(); |
|
} |
|
|
|
// We have to keep track of all QGCPalette objects in the system so we can signal theme change to all of them |
|
_paletteObjects += this; |
|
} |
|
|
|
QGCPalette::~QGCPalette() |
|
{ |
|
bool fSuccess = _paletteObjects.removeOne(this); |
|
if (!fSuccess) { |
|
qWarning() << "Internal error"; |
|
} |
|
} |
|
|
|
void QGCPalette::_buildMap() |
|
{ |
|
// Light Dark |
|
// Disabled Enabled Disabled Enabled |
|
DECLARE_QGC_COLOR(window, "#ffffff", "#ffffff", "#222222", "#222222") |
|
DECLARE_QGC_COLOR(windowShade, "#d9d9d9", "#d9d9d9", "#333333", "#333333") |
|
DECLARE_QGC_COLOR(windowShadeDark, "#bdbdbd", "#bdbdbd", "#282828", "#282828") |
|
DECLARE_QGC_COLOR(text, "#9d9d9d", "#000000", "#707070", "#ffffff") |
|
DECLARE_QGC_COLOR(warningText, "#cc0808", "#cc0808", "#f85761", "#f85761") |
|
DECLARE_QGC_COLOR(button, "#ffffff", "#ffffff", "#707070", "#626270") |
|
DECLARE_QGC_COLOR(buttonText, "#9d9d9d", "#000000", "#A6A6A6", "#ffffff") |
|
DECLARE_QGC_COLOR(buttonHighlight, "#e4e4e4", "#946120", "#3a3a3a", "#fff291") |
|
DECLARE_QGC_COLOR(buttonHighlightText, "#2c2c2c", "#ffffff", "#2c2c2c", "#000000") |
|
DECLARE_QGC_COLOR(primaryButton, "#585858", "#8cb3be", "#585858", "#8cb3be") |
|
DECLARE_QGC_COLOR(primaryButtonText, "#2c2c2c", "#000000", "#2c2c2c", "#000000") |
|
DECLARE_QGC_COLOR(textField, "#ffffff", "#ffffff", "#707070", "#ffffff") |
|
DECLARE_QGC_COLOR(textFieldText, "#808080", "#000000", "#000000", "#000000") |
|
DECLARE_QGC_COLOR(mapButton, "#585858", "#000000", "#585858", "#000000") |
|
DECLARE_QGC_COLOR(mapButtonHighlight, "#585858", "#be781c", "#585858", "#be781c") |
|
DECLARE_QGC_COLOR(mapIndicator, "#585858", "#be781c", "#585858", "#be781c") |
|
DECLARE_QGC_COLOR(mapIndicatorChild, "#585858", "#766043", "#585858", "#766043") |
|
DECLARE_QGC_COLOR(colorGreen, "#009431", "#009431", "#00e04b", "#00e04b") |
|
DECLARE_QGC_COLOR(colorOrange, "#b95604", "#b95604", "#de8500", "#de8500") |
|
DECLARE_QGC_COLOR(colorRed, "#ed3939", "#ed3939", "#f32836", "#f32836") |
|
DECLARE_QGC_COLOR(colorGrey, "#808080", "#808080", "#bfbfbf", "#bfbfbf") |
|
DECLARE_QGC_COLOR(colorBlue, "#1a72ff", "#1a72ff", "#536dff", "#536dff") |
|
DECLARE_QGC_COLOR(alertBackground, "#eecc44", "#eecc44", "#eecc44", "#eecc44") |
|
DECLARE_QGC_COLOR(alertBorder, "#808080", "#808080", "#808080", "#808080") |
|
DECLARE_QGC_COLOR(alertText, "#000000", "#000000", "#000000", "#000000") |
|
DECLARE_QGC_COLOR(missionItemEditor, "#585858", "#dbfef8", "#585858", "#585d83") |
|
DECLARE_QGC_COLOR(hoverColor, "#585858", "#dbfef8", "#585858", "#585d83") |
|
DECLARE_QGC_COLOR(statusFailedText, "#9d9d9d", "#000000", "#707070", "#ffffff") |
|
DECLARE_QGC_COLOR(statusPassedText, "#9d9d9d", "#000000", "#707070", "#ffffff") |
|
DECLARE_QGC_COLOR(statusPendingText, "#9d9d9d", "#000000", "#707070", "#ffffff") |
|
|
|
// Colors not affecting by theming |
|
// Disabled Enabled |
|
DECLARE_QGC_NONTHEMED_COLOR(brandingPurple, "#4A2C6D", "#4A2C6D") |
|
DECLARE_QGC_NONTHEMED_COLOR(brandingBlue, "#48D6FF", "#6045c5") |
|
|
|
// Colors not affecting by theming or enable/disable |
|
DECLARE_QGC_SINGLE_COLOR(mapWidgetBorderLight, "#ffffff") |
|
DECLARE_QGC_SINGLE_COLOR(mapWidgetBorderDark, "#000000") |
|
DECLARE_QGC_SINGLE_COLOR(mapMissionTrajectory, "#be781c") |
|
} |
|
|
|
void QGCPalette::setColorGroupEnabled(bool enabled) |
|
{ |
|
_colorGroupEnabled = enabled; |
|
emit paletteChanged(); |
|
} |
|
|
|
void QGCPalette::setGlobalTheme(Theme newTheme) |
|
{ |
|
// Mobile build does not have themes |
|
if (_theme != newTheme) { |
|
_theme = newTheme; |
|
_signalPaletteChangeToAll(); |
|
} |
|
} |
|
|
|
void QGCPalette::_signalPaletteChangeToAll() |
|
{ |
|
// Notify all objects of the new theme |
|
foreach (QGCPalette* palette, _paletteObjects) { |
|
palette->_signalPaletteChanged(); |
|
} |
|
} |
|
|
|
void QGCPalette::_signalPaletteChanged() |
|
{ |
|
emit paletteChanged(); |
|
}
|
|
|