From 7661b921583b503e64405e235f6da59a90758592 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sat, 28 Nov 2015 12:35:13 -0800 Subject: [PATCH] Add QGCMapPalette --- src/QGCApplication.cc | 4 ++- src/QGCMapPalette.cc | 43 +++++++++++++++++++++++++++++ src/QGCMapPalette.h | 64 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 src/QGCMapPalette.cc create mode 100644 src/QGCMapPalette.h diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 266530316..7b6f923a1 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -56,6 +56,7 @@ #include "QGCTemporaryFile.h" #include "QGCFileDialog.h" #include "QGCPalette.h" +#include "QGCMapPalette.h" #include "QGCLoggingCategory.h" #include "ViewWidgetController.h" #include "ParameterEditorController.h" @@ -334,7 +335,8 @@ void QGCApplication::_initCommon(void) // Register our Qml objects - qmlRegisterType("QGroundControl.Palette", 1, 0, "QGCPalette"); + qmlRegisterType ("QGroundControl.Palette", 1, 0, "QGCPalette"); + qmlRegisterType ("QGroundControl.Palette", 1, 0, "QGCMapPalette"); qmlRegisterUncreatableType ("QGroundControl.AutoPilotPlugin", 1, 0, "AutoPilotPlugin", "Reference only"); qmlRegisterUncreatableType ("QGroundControl.AutoPilotPlugin", 1, 0, "VehicleComponent", "Reference only"); diff --git a/src/QGCMapPalette.cc b/src/QGCMapPalette.cc new file mode 100644 index 000000000..96487f455 --- /dev/null +++ b/src/QGCMapPalette.cc @@ -0,0 +1,43 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2014 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +#include "QGCMapPalette.h" + +#include +#include + +QColor QGCMapPalette::_thumbJoystick[QGCMapPalette::_cColorGroups] = { QColor("#ffffff"), QColor("#f000000") }; + +QGCMapPalette::QGCMapPalette(QObject* parent) : + QObject(parent) +{ + +} + +void QGCMapPalette::setLightColors(bool lightColors) +{ + if ( _lightColors != lightColors) { + _lightColors = lightColors; + emit paletteChanged(); + } +} diff --git a/src/QGCMapPalette.h b/src/QGCMapPalette.h new file mode 100644 index 000000000..80cb52acb --- /dev/null +++ b/src/QGCMapPalette.h @@ -0,0 +1,64 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2014 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +/// QGCMapPalette is a variant of QGCPalette which is used to hold colors used for display over +/// the map control. Since the coloring of a satellite map differs greatly from the coloring of +/// a street map you need to be able to switch between sets of color based on map type. + +#ifndef QGCMapPalette_h +#define QGCMapPalette_h + +#include +#include + +class QGCMapPalette : public QObject +{ + Q_OBJECT + + Q_PROPERTY(bool lightColors READ lightColors WRITE setLightColors NOTIFY paletteChanged) + + // The colors are: + // thumbJoystick - Thumb joystick indicator + + Q_PROPERTY(QColor thumbJoystick READ thumbJoystick NOTIFY paletteChanged) + +public: + QGCMapPalette(QObject* parent = NULL); + + bool lightColors(void) const { return _lightColors; } + void setLightColors(bool lightColors); + + QColor thumbJoystick(void) const { return _thumbJoystick[_lightColors]; } + +signals: + void paletteChanged(void); + +private: + bool _lightColors; + + static const int _cColorGroups = 2; + + static QColor _thumbJoystick[_cColorGroups]; +}; + +#endif -- 2.22.0