/**************************************************************************** * * (c) 2009-2020 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * ****************************************************************************/ /// @file /// @author Don Gagne #include "QGCPalette.h" #include "QGCApplication.h" #include "QGCCorePlugin.h" #include #include QList QGCPalette::_paletteObjects; QGCPalette::Theme QGCPalette::_theme = QGCPalette::Dark; QMap>> 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(windowShadeLight, "#909090", "#828282", "#707070", "#626262") 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") DECLARE_QGC_COLOR(toolbarBackground, "#ffffff", "#ffffff", "#222222", "#222222") // Colors not affecting by theming // Disabled Enabled DECLARE_QGC_NONTHEMED_COLOR(brandingPurple, "#4A2C6D", "#4A2C6D") DECLARE_QGC_NONTHEMED_COLOR(brandingBlue, "#48D6FF", "#6045c5") DECLARE_QGC_NONTHEMED_COLOR(toolStripFGColor, "#707070", "#ffffff") // 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") DECLARE_QGC_SINGLE_COLOR(surveyPolygonInterior, "green") DECLARE_QGC_SINGLE_COLOR(surveyPolygonTerrainCollision, "red") } 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(); }