From 6846243197c90419a62daeee72f9b873b2f80982 Mon Sep 17 00:00:00 2001 From: dheideman Date: Wed, 23 Aug 2017 17:14:56 -0700 Subject: [PATCH 1/6] Add user-selectable brand image capability --- src/Settings/App.SettingsGroup.json | 21 +++++ src/Settings/AppSettings.cc | 33 ++++++++ src/Settings/AppSettings.h | 12 +++ src/ui/preferences/GeneralSettings.qml | 127 +++++++++++++++++++++++++++++++ src/ui/toolbar/MainToolBarIndicators.qml | 8 +- 5 files changed, 199 insertions(+), 2 deletions(-) diff --git a/src/Settings/App.SettingsGroup.json b/src/Settings/App.SettingsGroup.json index 88e552f..c0337ae 100644 --- a/src/Settings/App.SettingsGroup.json +++ b/src/Settings/App.SettingsGroup.json @@ -144,6 +144,27 @@ "defaultValue": "" }, { + "name": "UserBrandImageIndoor", + "shortDescription": "User-selected brand image", + "longDescription": "Location in file system of user-selected brand image (indoor)", + "type": "string", + "defaultValue": "" +}, +{ + "name": "UserBrandImageOutdoor", + "shortDescription": "User-selected brand image", + "longDescription": "Location in file system of user-selected brand image (outdoor)", + "type": "string", + "defaultValue": "" +}, +{ + "name": "UserBrandImageLinked", + "shortDescription": "Link indoor/outdoor brand images", + "longDescription": "Boolean option to use same image for indoor and outdoor brand images", + "type": "bool", + "defaultValue": true +}, +{ "name": "MapboxToken", "shortDescription": "Access token to Mapbox maps", "longDescription": "Your personal access token for Mapbox maps", diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc index 65068ef..295c4d2 100644 --- a/src/Settings/AppSettings.cc +++ b/src/Settings/AppSettings.cc @@ -32,6 +32,9 @@ const char* AppSettings::appFontPointSizeName = "BaseDev const char* AppSettings::indoorPaletteName = "StyleIsDark"; const char* AppSettings::showLargeCompassName = "ShowLargeCompass"; const char* AppSettings::savePathName = "SavePath"; +const char* AppSettings::userBrandImageIndoorName = "UserBrandImageIndoor"; +const char* AppSettings::userBrandImageOutdoorName = "UserBrandImageOutdoor"; +const char* AppSettings::userBrandImageLinkedName = "UserBrandImageLinked"; const char* AppSettings::autoLoadMissionsName = "AutoLoadMissions"; const char* AppSettings::mapboxTokenName = "MapboxToken"; const char* AppSettings::esriTokenName = "EsriToken"; @@ -71,6 +74,9 @@ AppSettings::AppSettings(QObject* parent) , _indoorPaletteFact(NULL) , _showLargeCompassFact(NULL) , _savePathFact(NULL) + , _userBrandImageIndoorFact(NULL) + , _userBrandImageOutdoorFact(NULL) + , _userBrandImageLinkedFact(NULL) , _autoLoadMissionsFact(NULL) , _mapboxTokenFact(NULL) , _esriTokenFact(NULL) @@ -331,6 +337,33 @@ QString AppSettings::videoSavePath(void) return fullPath; } +Fact* AppSettings::userBrandImageIndoor(void) +{ + if (!_userBrandImageIndoorFact) { + _userBrandImageIndoorFact = _createSettingsFact(userBrandImageIndoorName); + } + + return _userBrandImageIndoorFact; +} + +Fact* AppSettings::userBrandImageOutdoor(void) +{ + if (!_userBrandImageOutdoorFact) { + _userBrandImageOutdoorFact = _createSettingsFact(userBrandImageOutdoorName); + } + + return _userBrandImageOutdoorFact; +} + +Fact* AppSettings::userBrandImageLinked(void) +{ + if (!_userBrandImageLinkedFact) { + _userBrandImageLinkedFact = _createSettingsFact(userBrandImageLinkedName); + } + + return _userBrandImageLinkedFact; +} + Fact* AppSettings::autoLoadMissions(void) { if (!_autoLoadMissionsFact) { diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h index 5b29ac3..398a9ec 100644 --- a/src/Settings/AppSettings.h +++ b/src/Settings/AppSettings.h @@ -36,6 +36,9 @@ public: Q_PROPERTY(Fact* indoorPalette READ indoorPalette CONSTANT) Q_PROPERTY(Fact* showLargeCompass READ showLargeCompass CONSTANT) Q_PROPERTY(Fact* savePath READ savePath CONSTANT) + Q_PROPERTY(Fact* userBrandImageIndoor READ userBrandImageIndoor CONSTANT) + Q_PROPERTY(Fact* userBrandImageOutdoor READ userBrandImageOutdoor CONSTANT) + Q_PROPERTY(Fact* userBrandImageLinked READ userBrandImageLinked CONSTANT) Q_PROPERTY(Fact* autoLoadMissions READ autoLoadMissions CONSTANT) Q_PROPERTY(Fact* mapboxToken READ mapboxToken CONSTANT) Q_PROPERTY(Fact* esriToken READ esriToken CONSTANT) @@ -71,6 +74,9 @@ public: Fact* indoorPalette (void); Fact* showLargeCompass (void); Fact* savePath (void); + Fact* userBrandImageIndoor (void); + Fact* userBrandImageOutdoor (void); + Fact* userBrandImageLinked (void); Fact* autoLoadMissions (void); Fact* mapboxToken (void); Fact* esriToken (void); @@ -103,6 +109,9 @@ public: static const char* indoorPaletteName; static const char* showLargeCompassName; static const char* savePathName; + static const char* userBrandImageIndoorName; + static const char* userBrandImageOutdoorName; + static const char* userBrandImageLinkedName; static const char* autoLoadMissionsName; static const char* mapboxTokenName; static const char* esriTokenName; @@ -150,6 +159,9 @@ private: SettingsFact* _indoorPaletteFact; SettingsFact* _showLargeCompassFact; SettingsFact* _savePathFact; + SettingsFact* _userBrandImageIndoorFact; + SettingsFact* _userBrandImageOutdoorFact; + SettingsFact* _userBrandImageLinkedFact; SettingsFact* _autoLoadMissionsFact; SettingsFact* _mapboxTokenFact; SettingsFact* _esriTokenFact; diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index c7b75ca..b628309 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -34,6 +34,9 @@ QGCView { property Fact _percentRemainingAnnounce: QGroundControl.settingsManager.appSettings.batteryPercentRemainingAnnounce property Fact _savePath: QGroundControl.settingsManager.appSettings.savePath + property Fact _userBrandImageIndoor: QGroundControl.settingsManager.appSettings.userBrandImageIndoor + property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.appSettings.userBrandImageOutdoor + property Fact _userBrandImageLinked: QGroundControl.settingsManager.appSettings.userBrandImageLinked property Fact _appFontPointSize: QGroundControl.settingsManager.appSettings.appFontPointSize property real _labelWidth: ScreenTools.defaultFontPixelWidth * 15 property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 30 @@ -656,6 +659,130 @@ QGCView { } } + //----------------------------------------------------------------- + //-- Custom Brand Image + Item { + width: _qgcView.width * 0.8 + height: userBrandImageLabel.height + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + visible: !ScreenTools.isMobile + QGCLabel { + id: userBrandImageLabel + text: qsTr("Brand Image") + font.family: ScreenTools.demiboldFontFamily + } + } + Rectangle { + height: userBrandImageCol.height + (ScreenTools.defaultFontPixelHeight * 2) + width: _qgcView.width * 0.8 + color: qgcPal.windowShade + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + visible: !ScreenTools.isMobile + + Column { + id: userBrandImageCol + spacing: ScreenTools.defaultFontPixelWidth + anchors.centerIn: parent + Row { + spacing: ScreenTools.defaultFontPixelWidth + visible: _userBrandImageIndoor.visible + + QGCLabel { + anchors.baseline: userBrandImageIndoorBrowse.baseline + width: _labelWidth*1.5 + text: qsTr("Indoor Brand Image Path:") + } + QGCTextField { + anchors.baseline: userBrandImageIndoorBrowse.baseline + readOnly: true + width: _editFieldWidth + text: QGroundControl.settingsManager.appSettings.userBrandImageIndoor.valueString.replace("file:///","") + } + QGCButton { + id: userBrandImageIndoorBrowse + text: "Browse" + onClicked: userBrandImageIndoorBrowseDialog.openForLoad() + + QGCFileDialog { + id: userBrandImageIndoorBrowseDialog + qgcView: _qgcView + title: qsTr("Choose custom brand image file:") + folder: _userBrandImageIndoor.rawValue.replace("file:///","") + selectExisting: true + selectFolder: false + + onAcceptedForLoad: { + _userBrandImageIndoor.rawValue = "file:///" + file + if(_userBrandImageLinked.value) { + _userBrandImageOutdoor.rawValue = _userBrandImageIndoor.rawValue + } + } + } + } + } + Row { + spacing: ScreenTools.defaultFontPixelWidth + visible: _userBrandImageOutdoor.visible + enabled: !_userBrandImageLinked.value + + QGCLabel { + anchors.baseline: userBrandImageOutdoorBrowse.baseline + width: _labelWidth*1.5 + text: qsTr("Outdoor Brand Image Path:") + } + QGCTextField { + anchors.baseline: userBrandImageOutdoorBrowse.baseline + readOnly: true + width: _editFieldWidth + text: QGroundControl.settingsManager.appSettings.userBrandImageOutdoor.valueString.replace("file:///","") + } + QGCButton { + id: userBrandImageOutdoorBrowse + text: "Browse" + onClicked: userBrandImageOutdoorBrowseDialog.openForLoad() + + QGCFileDialog { + id: userBrandImageOutdoorBrowseDialog + qgcView: _qgcView + title: qsTr("Choose custom brand image file:") + folder: _userBrandImageOutdoor.rawValue.replace("file:///","") + selectExisting: true + selectFolder: false + + onAcceptedForLoad: _userBrandImageOutdoor.rawValue = "file:///" + file + } + } + } + Row { + spacing: ScreenTools.defaultFontPixelWidth + visible: _userBrandImageIndoor.visible + + FactCheckBox { + text: qsTr("Link Brand Images") + width: _labelWidth*1.5 + visible: _userBrandImageLinked.visible + fact: _userBrandImageLinked + onClicked: { + if(_userBrandImageLinked.value) { + _userBrandImageOutdoor.rawValue = _userBrandImageIndoor.rawValue + } + } + } + + QGCButton { + id: userBrandImageReset + text: "Reset Default Brand Image" + onClicked: { + _userBrandImageIndoor.rawValue = "" + _userBrandImageOutdoor.rawValue = "" + } + } + } + } + } + QGCLabel { anchors.horizontalCenter: parent.horizontalCenter text: qsTr("%1 Version: %2").arg(QGroundControl.appName).arg(QGroundControl.qgcVersion) diff --git a/src/ui/toolbar/MainToolBarIndicators.qml b/src/ui/toolbar/MainToolBarIndicators.qml index ab9adff..3934234 100644 --- a/src/ui/toolbar/MainToolBarIndicators.qml +++ b/src/ui/toolbar/MainToolBarIndicators.qml @@ -95,8 +95,12 @@ Item { property bool _outdoorPalette: qgcPal.globalTheme === QGCPalette.Light property bool _corePluginBranding: QGroundControl.corePlugin.brandImageIndoor.length != 0 - property string _brandImageIndoor: _corePluginBranding ? QGroundControl.corePlugin.brandImageIndoor : (_activeVehicle ? _activeVehicle.brandImageIndoor : "") - property string _brandImageOutdoor: _corePluginBranding ? QGroundControl.corePlugin.brandImageOutdoor : (_activeVehicle ? _activeVehicle.brandImageOutdoor : "") + property string _userBrandImageIndoor: QGroundControl.settingsManager.appSettings.userBrandImageIndoor.value + property string _userBrandImageOutdoor: QGroundControl.settingsManager.appSettings.userBrandImageOutdoor.value + property bool _userBrandingIndoor: _userBrandImageIndoor.length != 0 + property bool _userBrandingOutdoor: _userBrandImageOutdoor.length != 0 + property string _brandImageIndoor: _userBrandingIndoor ? _userBrandImageIndoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageIndoor : (_activeVehicle ? _activeVehicle.brandImageIndoor : "") ) + property string _brandImageOutdoor: _userBrandingOutdoor ? _userBrandImageOutdoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageOutdoor : (_activeVehicle ? _activeVehicle.brandImageOutdoor : "") ) } Row { From 5977a6327fceb29ac0a4413925c2432cde4df986 Mon Sep 17 00:00:00 2001 From: Jacob Walser Date: Thu, 7 Sep 2017 13:39:23 -0400 Subject: [PATCH 2/6] Set mipmap property to true for brandimage --- src/ui/toolbar/MainToolBarIndicators.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/toolbar/MainToolBarIndicators.qml b/src/ui/toolbar/MainToolBarIndicators.qml index 3934234..79a60fc 100644 --- a/src/ui/toolbar/MainToolBarIndicators.qml +++ b/src/ui/toolbar/MainToolBarIndicators.qml @@ -92,6 +92,7 @@ Item { visible: x > indicatorRow.width && !_communicationLost fillMode: Image.PreserveAspectFit source: _outdoorPalette ? _brandImageOutdoor : _brandImageIndoor + mipmap: true property bool _outdoorPalette: qgcPal.globalTheme === QGCPalette.Light property bool _corePluginBranding: QGroundControl.corePlugin.brandImageIndoor.length != 0 From cbbdf425fc104e569323a4a7b42218e1700238cb Mon Sep 17 00:00:00 2001 From: dheideman Date: Thu, 14 Sep 2017 15:51:37 -0700 Subject: [PATCH 3/6] Remove userBrandImageLinked fact --- src/Settings/App.SettingsGroup.json | 7 ------- src/Settings/AppSettings.cc | 11 ----------- src/Settings/AppSettings.h | 4 ---- src/ui/preferences/GeneralSettings.qml | 21 +-------------------- src/ui/toolbar/MainToolBarIndicators.qml | 4 ++-- 5 files changed, 3 insertions(+), 44 deletions(-) diff --git a/src/Settings/App.SettingsGroup.json b/src/Settings/App.SettingsGroup.json index c0337ae..5b9bd15 100644 --- a/src/Settings/App.SettingsGroup.json +++ b/src/Settings/App.SettingsGroup.json @@ -158,13 +158,6 @@ "defaultValue": "" }, { - "name": "UserBrandImageLinked", - "shortDescription": "Link indoor/outdoor brand images", - "longDescription": "Boolean option to use same image for indoor and outdoor brand images", - "type": "bool", - "defaultValue": true -}, -{ "name": "MapboxToken", "shortDescription": "Access token to Mapbox maps", "longDescription": "Your personal access token for Mapbox maps", diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc index 295c4d2..3f2375b 100644 --- a/src/Settings/AppSettings.cc +++ b/src/Settings/AppSettings.cc @@ -34,7 +34,6 @@ const char* AppSettings::showLargeCompassName = "ShowLar const char* AppSettings::savePathName = "SavePath"; const char* AppSettings::userBrandImageIndoorName = "UserBrandImageIndoor"; const char* AppSettings::userBrandImageOutdoorName = "UserBrandImageOutdoor"; -const char* AppSettings::userBrandImageLinkedName = "UserBrandImageLinked"; const char* AppSettings::autoLoadMissionsName = "AutoLoadMissions"; const char* AppSettings::mapboxTokenName = "MapboxToken"; const char* AppSettings::esriTokenName = "EsriToken"; @@ -76,7 +75,6 @@ AppSettings::AppSettings(QObject* parent) , _savePathFact(NULL) , _userBrandImageIndoorFact(NULL) , _userBrandImageOutdoorFact(NULL) - , _userBrandImageLinkedFact(NULL) , _autoLoadMissionsFact(NULL) , _mapboxTokenFact(NULL) , _esriTokenFact(NULL) @@ -355,15 +353,6 @@ Fact* AppSettings::userBrandImageOutdoor(void) return _userBrandImageOutdoorFact; } -Fact* AppSettings::userBrandImageLinked(void) -{ - if (!_userBrandImageLinkedFact) { - _userBrandImageLinkedFact = _createSettingsFact(userBrandImageLinkedName); - } - - return _userBrandImageLinkedFact; -} - Fact* AppSettings::autoLoadMissions(void) { if (!_autoLoadMissionsFact) { diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h index 398a9ec..0314a17 100644 --- a/src/Settings/AppSettings.h +++ b/src/Settings/AppSettings.h @@ -38,7 +38,6 @@ public: Q_PROPERTY(Fact* savePath READ savePath CONSTANT) Q_PROPERTY(Fact* userBrandImageIndoor READ userBrandImageIndoor CONSTANT) Q_PROPERTY(Fact* userBrandImageOutdoor READ userBrandImageOutdoor CONSTANT) - Q_PROPERTY(Fact* userBrandImageLinked READ userBrandImageLinked CONSTANT) Q_PROPERTY(Fact* autoLoadMissions READ autoLoadMissions CONSTANT) Q_PROPERTY(Fact* mapboxToken READ mapboxToken CONSTANT) Q_PROPERTY(Fact* esriToken READ esriToken CONSTANT) @@ -76,7 +75,6 @@ public: Fact* savePath (void); Fact* userBrandImageIndoor (void); Fact* userBrandImageOutdoor (void); - Fact* userBrandImageLinked (void); Fact* autoLoadMissions (void); Fact* mapboxToken (void); Fact* esriToken (void); @@ -111,7 +109,6 @@ public: static const char* savePathName; static const char* userBrandImageIndoorName; static const char* userBrandImageOutdoorName; - static const char* userBrandImageLinkedName; static const char* autoLoadMissionsName; static const char* mapboxTokenName; static const char* esriTokenName; @@ -161,7 +158,6 @@ private: SettingsFact* _savePathFact; SettingsFact* _userBrandImageIndoorFact; SettingsFact* _userBrandImageOutdoorFact; - SettingsFact* _userBrandImageLinkedFact; SettingsFact* _autoLoadMissionsFact; SettingsFact* _mapboxTokenFact; SettingsFact* _esriTokenFact; diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index b628309..dafc78a 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -36,7 +36,6 @@ QGCView { property Fact _savePath: QGroundControl.settingsManager.appSettings.savePath property Fact _userBrandImageIndoor: QGroundControl.settingsManager.appSettings.userBrandImageIndoor property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.appSettings.userBrandImageOutdoor - property Fact _userBrandImageLinked: QGroundControl.settingsManager.appSettings.userBrandImageLinked property Fact _appFontPointSize: QGroundControl.settingsManager.appSettings.appFontPointSize property real _labelWidth: ScreenTools.defaultFontPixelWidth * 15 property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 30 @@ -713,19 +712,13 @@ QGCView { selectExisting: true selectFolder: false - onAcceptedForLoad: { - _userBrandImageIndoor.rawValue = "file:///" + file - if(_userBrandImageLinked.value) { - _userBrandImageOutdoor.rawValue = _userBrandImageIndoor.rawValue - } - } + onAcceptedForLoad: _userBrandImageIndoor.rawValue = "file:///" + file } } } Row { spacing: ScreenTools.defaultFontPixelWidth visible: _userBrandImageOutdoor.visible - enabled: !_userBrandImageLinked.value QGCLabel { anchors.baseline: userBrandImageOutdoorBrowse.baseline @@ -759,18 +752,6 @@ QGCView { spacing: ScreenTools.defaultFontPixelWidth visible: _userBrandImageIndoor.visible - FactCheckBox { - text: qsTr("Link Brand Images") - width: _labelWidth*1.5 - visible: _userBrandImageLinked.visible - fact: _userBrandImageLinked - onClicked: { - if(_userBrandImageLinked.value) { - _userBrandImageOutdoor.rawValue = _userBrandImageIndoor.rawValue - } - } - } - QGCButton { id: userBrandImageReset text: "Reset Default Brand Image" diff --git a/src/ui/toolbar/MainToolBarIndicators.qml b/src/ui/toolbar/MainToolBarIndicators.qml index 79a60fc..8cf0d47 100644 --- a/src/ui/toolbar/MainToolBarIndicators.qml +++ b/src/ui/toolbar/MainToolBarIndicators.qml @@ -100,8 +100,8 @@ Item { property string _userBrandImageOutdoor: QGroundControl.settingsManager.appSettings.userBrandImageOutdoor.value property bool _userBrandingIndoor: _userBrandImageIndoor.length != 0 property bool _userBrandingOutdoor: _userBrandImageOutdoor.length != 0 - property string _brandImageIndoor: _userBrandingIndoor ? _userBrandImageIndoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageIndoor : (_activeVehicle ? _activeVehicle.brandImageIndoor : "") ) - property string _brandImageOutdoor: _userBrandingOutdoor ? _userBrandImageOutdoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageOutdoor : (_activeVehicle ? _activeVehicle.brandImageOutdoor : "") ) + property string _brandImageIndoor: _userBrandingIndoor ? _userBrandImageIndoor : (_userBrandingOutdoor ? _userBrandImageOutdoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageIndoor : (_activeVehicle ? _activeVehicle.brandImageIndoor : "") ) ) + property string _brandImageOutdoor: _userBrandingOutdoor ? _userBrandImageOutdoor : (_userBrandingIndoor ? _userBrandImageIndoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageOutdoor : (_activeVehicle ? _activeVehicle.brandImageOutdoor : "") ) ) } Row { From 23561c4a5ced26271879bf3e6cf131c6bf241d56 Mon Sep 17 00:00:00 2001 From: dheideman Date: Thu, 14 Sep 2017 18:36:33 -0700 Subject: [PATCH 4/6] Move User Brand Image to new factgroup --- qgroundcontrol.pro | 2 ++ qgroundcontrol.qrc | 1 + src/Settings/AppSettings.cc | 22 --------------- src/Settings/AppSettings.h | 8 ------ src/Settings/BrandImage.SettingsGroup.json | 16 +++++++++++ src/Settings/BrandImageSettings.cc | 44 ++++++++++++++++++++++++++++++ src/Settings/BrandImageSettings.h | 38 ++++++++++++++++++++++++++ src/Settings/SettingsManager.cc | 2 ++ src/Settings/SettingsManager.h | 4 +++ src/ui/preferences/GeneralSettings.qml | 8 +++--- src/ui/toolbar/MainToolBarIndicators.qml | 4 +-- 11 files changed, 113 insertions(+), 36 deletions(-) create mode 100644 src/Settings/BrandImage.SettingsGroup.json create mode 100644 src/Settings/BrandImageSettings.cc create mode 100644 src/Settings/BrandImageSettings.h diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 47e517c..c9145d7 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -554,6 +554,7 @@ HEADERS += \ src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h \ src/Settings/AppSettings.h \ src/Settings/AutoConnectSettings.h \ + src/Settings/BrandImageSettings.h \ src/Settings/FlightMapSettings.h \ src/Settings/GuidedSettings.h \ src/Settings/RTKSettings.h \ @@ -736,6 +737,7 @@ SOURCES += \ src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc \ src/Settings/AppSettings.cc \ src/Settings/AutoConnectSettings.cc \ + src/Settings/BrandImageSettings.cc \ src/Settings/FlightMapSettings.cc \ src/Settings/GuidedSettings.cc \ src/Settings/RTKSettings.cc \ diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index adc4f77..ce13d5a 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -222,6 +222,7 @@ src/Vehicle/VibrationFact.json src/Vehicle/TemperatureFact.json src/Vehicle/SubmarineFact.json + src/Settings/BrandImage.SettingsGroup.json src/comm/APMArduCopterMockLink.params diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc index 3f2375b..65068ef 100644 --- a/src/Settings/AppSettings.cc +++ b/src/Settings/AppSettings.cc @@ -32,8 +32,6 @@ const char* AppSettings::appFontPointSizeName = "BaseDev const char* AppSettings::indoorPaletteName = "StyleIsDark"; const char* AppSettings::showLargeCompassName = "ShowLargeCompass"; const char* AppSettings::savePathName = "SavePath"; -const char* AppSettings::userBrandImageIndoorName = "UserBrandImageIndoor"; -const char* AppSettings::userBrandImageOutdoorName = "UserBrandImageOutdoor"; const char* AppSettings::autoLoadMissionsName = "AutoLoadMissions"; const char* AppSettings::mapboxTokenName = "MapboxToken"; const char* AppSettings::esriTokenName = "EsriToken"; @@ -73,8 +71,6 @@ AppSettings::AppSettings(QObject* parent) , _indoorPaletteFact(NULL) , _showLargeCompassFact(NULL) , _savePathFact(NULL) - , _userBrandImageIndoorFact(NULL) - , _userBrandImageOutdoorFact(NULL) , _autoLoadMissionsFact(NULL) , _mapboxTokenFact(NULL) , _esriTokenFact(NULL) @@ -335,24 +331,6 @@ QString AppSettings::videoSavePath(void) return fullPath; } -Fact* AppSettings::userBrandImageIndoor(void) -{ - if (!_userBrandImageIndoorFact) { - _userBrandImageIndoorFact = _createSettingsFact(userBrandImageIndoorName); - } - - return _userBrandImageIndoorFact; -} - -Fact* AppSettings::userBrandImageOutdoor(void) -{ - if (!_userBrandImageOutdoorFact) { - _userBrandImageOutdoorFact = _createSettingsFact(userBrandImageOutdoorName); - } - - return _userBrandImageOutdoorFact; -} - Fact* AppSettings::autoLoadMissions(void) { if (!_autoLoadMissionsFact) { diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h index 0314a17..5b29ac3 100644 --- a/src/Settings/AppSettings.h +++ b/src/Settings/AppSettings.h @@ -36,8 +36,6 @@ public: Q_PROPERTY(Fact* indoorPalette READ indoorPalette CONSTANT) Q_PROPERTY(Fact* showLargeCompass READ showLargeCompass CONSTANT) Q_PROPERTY(Fact* savePath READ savePath CONSTANT) - Q_PROPERTY(Fact* userBrandImageIndoor READ userBrandImageIndoor CONSTANT) - Q_PROPERTY(Fact* userBrandImageOutdoor READ userBrandImageOutdoor CONSTANT) Q_PROPERTY(Fact* autoLoadMissions READ autoLoadMissions CONSTANT) Q_PROPERTY(Fact* mapboxToken READ mapboxToken CONSTANT) Q_PROPERTY(Fact* esriToken READ esriToken CONSTANT) @@ -73,8 +71,6 @@ public: Fact* indoorPalette (void); Fact* showLargeCompass (void); Fact* savePath (void); - Fact* userBrandImageIndoor (void); - Fact* userBrandImageOutdoor (void); Fact* autoLoadMissions (void); Fact* mapboxToken (void); Fact* esriToken (void); @@ -107,8 +103,6 @@ public: static const char* indoorPaletteName; static const char* showLargeCompassName; static const char* savePathName; - static const char* userBrandImageIndoorName; - static const char* userBrandImageOutdoorName; static const char* autoLoadMissionsName; static const char* mapboxTokenName; static const char* esriTokenName; @@ -156,8 +150,6 @@ private: SettingsFact* _indoorPaletteFact; SettingsFact* _showLargeCompassFact; SettingsFact* _savePathFact; - SettingsFact* _userBrandImageIndoorFact; - SettingsFact* _userBrandImageOutdoorFact; SettingsFact* _autoLoadMissionsFact; SettingsFact* _mapboxTokenFact; SettingsFact* _esriTokenFact; diff --git a/src/Settings/BrandImage.SettingsGroup.json b/src/Settings/BrandImage.SettingsGroup.json new file mode 100644 index 0000000..2d80c20 --- /dev/null +++ b/src/Settings/BrandImage.SettingsGroup.json @@ -0,0 +1,16 @@ +[ +{ + "name": "UserBrandImageIndoor", + "shortDescription": "User-selected brand image", + "longDescription": "Location in file system of user-selected brand image (indoor)", + "type": "string", + "defaultValue": "" +}, +{ + "name": "UserBrandImageOutdoor", + "shortDescription": "User-selected brand image", + "longDescription": "Location in file system of user-selected brand image (outdoor)", + "type": "string", + "defaultValue": "" +} +] diff --git a/src/Settings/BrandImageSettings.cc b/src/Settings/BrandImageSettings.cc new file mode 100644 index 0000000..20bdc6d --- /dev/null +++ b/src/Settings/BrandImageSettings.cc @@ -0,0 +1,44 @@ +/**************************************************************************** + * + * (c) 2009-2017 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "BrandImageSettings.h" + +#include +#include + +const char* BrandImageSettings::brandImageSettingsGroupName = "BrandImage"; +const char* BrandImageSettings::userBrandImageIndoorName = "UserBrandImageIndoor"; +const char* BrandImageSettings::userBrandImageOutdoorName = "UserBrandImageOutdoor"; + +BrandImageSettings::BrandImageSettings(QObject* parent) + : SettingsGroup(brandImageSettingsGroupName, QString() /* root settings group */, parent) + , _userBrandImageIndoorFact(NULL) + , _userBrandImageOutdoorFact(NULL) +{ + QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); + qmlRegisterUncreatableType("QGroundControl.SettingsManager", 1, 0, "BrandImageSettings", "Reference only"); +} + +Fact* BrandImageSettings::userBrandImageIndoor(void) +{ + if (!_userBrandImageIndoorFact) { + _userBrandImageIndoorFact = _createSettingsFact(userBrandImageIndoorName); + } + + return _userBrandImageIndoorFact; +} + +Fact* BrandImageSettings::userBrandImageOutdoor(void) +{ + if (!_userBrandImageOutdoorFact) { + _userBrandImageOutdoorFact = _createSettingsFact(userBrandImageOutdoorName); + } + + return _userBrandImageOutdoorFact; +} diff --git a/src/Settings/BrandImageSettings.h b/src/Settings/BrandImageSettings.h new file mode 100644 index 0000000..c2f66b3 --- /dev/null +++ b/src/Settings/BrandImageSettings.h @@ -0,0 +1,38 @@ +/**************************************************************************** + * + * (c) 2009-2017 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#ifndef BrandImageSettings_H +#define BrandImageSettings_H + +#include "SettingsGroup.h" + +class BrandImageSettings : public SettingsGroup +{ + Q_OBJECT + +public: + BrandImageSettings(QObject* parent = NULL); + + Q_PROPERTY(Fact* userBrandImageIndoor READ userBrandImageIndoor CONSTANT) + Q_PROPERTY(Fact* userBrandImageOutdoor READ userBrandImageOutdoor CONSTANT) + + Fact* userBrandImageIndoor (void); + Fact* userBrandImageOutdoor (void); + + static const char* brandImageSettingsGroupName; + + static const char* userBrandImageIndoorName; + static const char* userBrandImageOutdoorName; + +private: + SettingsFact* _userBrandImageIndoorFact; + SettingsFact* _userBrandImageOutdoorFact; +}; + +#endif diff --git a/src/Settings/SettingsManager.cc b/src/Settings/SettingsManager.cc index d2e8e10..643bf23 100644 --- a/src/Settings/SettingsManager.cc +++ b/src/Settings/SettingsManager.cc @@ -21,6 +21,7 @@ SettingsManager::SettingsManager(QGCApplication* app, QGCToolbox* toolbox) , _flightMapSettings (NULL) , _rtkSettings (NULL) , _guidedSettings (NULL) + , _brandImageSettings (NULL) { } @@ -38,4 +39,5 @@ void SettingsManager::setToolbox(QGCToolbox *toolbox) _flightMapSettings = new FlightMapSettings(this); _rtkSettings = new RTKSettings(this); _guidedSettings = new GuidedSettings(this); + _brandImageSettings = new BrandImageSettings(this); } diff --git a/src/Settings/SettingsManager.h b/src/Settings/SettingsManager.h index c38cd72..a69b7f6 100644 --- a/src/Settings/SettingsManager.h +++ b/src/Settings/SettingsManager.h @@ -21,6 +21,7 @@ #include "FlightMapSettings.h" #include "RTKSettings.h" #include "GuidedSettings.h" +#include "BrandImageSettings.h" #include @@ -39,6 +40,7 @@ public: Q_PROPERTY(QObject* flightMapSettings READ flightMapSettings CONSTANT) Q_PROPERTY(QObject* rtkSettings READ rtkSettings CONSTANT) Q_PROPERTY(QObject* guidedSettings READ guidedSettings CONSTANT) + Q_PROPERTY(QObject* brandImageSettings READ brandImageSettings CONSTANT) // Override from QGCTool virtual void setToolbox(QGCToolbox *toolbox); @@ -50,6 +52,7 @@ public: FlightMapSettings* flightMapSettings (void) { return _flightMapSettings; } RTKSettings* rtkSettings (void) { return _rtkSettings; } GuidedSettings* guidedSettings (void) { return _guidedSettings; } + BrandImageSettings* brandImageSettings (void) { return _brandImageSettings; } private: AppSettings* _appSettings; @@ -59,6 +62,7 @@ private: FlightMapSettings* _flightMapSettings; RTKSettings* _rtkSettings; GuidedSettings* _guidedSettings; + BrandImageSettings* _brandImageSettings; }; #endif diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index dafc78a..c7faeeb 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -34,9 +34,9 @@ QGCView { property Fact _percentRemainingAnnounce: QGroundControl.settingsManager.appSettings.batteryPercentRemainingAnnounce property Fact _savePath: QGroundControl.settingsManager.appSettings.savePath - property Fact _userBrandImageIndoor: QGroundControl.settingsManager.appSettings.userBrandImageIndoor - property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.appSettings.userBrandImageOutdoor property Fact _appFontPointSize: QGroundControl.settingsManager.appSettings.appFontPointSize + property Fact _userBrandImageIndoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageIndoor + property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor property real _labelWidth: ScreenTools.defaultFontPixelWidth * 15 property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 30 property Fact _mapProvider: QGroundControl.settingsManager.flightMapSettings.mapProvider @@ -697,7 +697,7 @@ QGCView { anchors.baseline: userBrandImageIndoorBrowse.baseline readOnly: true width: _editFieldWidth - text: QGroundControl.settingsManager.appSettings.userBrandImageIndoor.valueString.replace("file:///","") + text: _userBrandImageIndoor.valueString.replace("file:///","") } QGCButton { id: userBrandImageIndoorBrowse @@ -729,7 +729,7 @@ QGCView { anchors.baseline: userBrandImageOutdoorBrowse.baseline readOnly: true width: _editFieldWidth - text: QGroundControl.settingsManager.appSettings.userBrandImageOutdoor.valueString.replace("file:///","") + text: _userBrandImageOutdoor.valueString.replace("file:///","") } QGCButton { id: userBrandImageOutdoorBrowse diff --git a/src/ui/toolbar/MainToolBarIndicators.qml b/src/ui/toolbar/MainToolBarIndicators.qml index 8cf0d47..1698ce6 100644 --- a/src/ui/toolbar/MainToolBarIndicators.qml +++ b/src/ui/toolbar/MainToolBarIndicators.qml @@ -96,8 +96,8 @@ Item { property bool _outdoorPalette: qgcPal.globalTheme === QGCPalette.Light property bool _corePluginBranding: QGroundControl.corePlugin.brandImageIndoor.length != 0 - property string _userBrandImageIndoor: QGroundControl.settingsManager.appSettings.userBrandImageIndoor.value - property string _userBrandImageOutdoor: QGroundControl.settingsManager.appSettings.userBrandImageOutdoor.value + property string _userBrandImageIndoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageIndoor.value + property string _userBrandImageOutdoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor.value property bool _userBrandingIndoor: _userBrandImageIndoor.length != 0 property bool _userBrandingOutdoor: _userBrandImageOutdoor.length != 0 property string _brandImageIndoor: _userBrandingIndoor ? _userBrandImageIndoor : (_userBrandingOutdoor ? _userBrandImageOutdoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageIndoor : (_activeVehicle ? _activeVehicle.brandImageIndoor : "") ) ) From 1560cda09d6cf9f90fecbffc7e0d5d246ce1e460 Mon Sep 17 00:00:00 2001 From: dheideman Date: Fri, 15 Sep 2017 08:27:21 -0700 Subject: [PATCH 5/6] Make brand image settings respect brandImageSettings.visible --- src/ui/preferences/GeneralSettings.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index c7faeeb..67ca438 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -665,7 +665,7 @@ QGCView { height: userBrandImageLabel.height anchors.margins: ScreenTools.defaultFontPixelWidth anchors.horizontalCenter: parent.horizontalCenter - visible: !ScreenTools.isMobile + visible: QGroundControl.settingsManager.brandImageSettings.visible && !ScreenTools.isMobile QGCLabel { id: userBrandImageLabel text: qsTr("Brand Image") @@ -678,7 +678,7 @@ QGCView { color: qgcPal.windowShade anchors.margins: ScreenTools.defaultFontPixelWidth anchors.horizontalCenter: parent.horizontalCenter - visible: !ScreenTools.isMobile + visible: QGroundControl.settingsManager.brandImageSettings.visible && !ScreenTools.isMobile Column { id: userBrandImageCol From ab798f871f729d1820e13c661cfdc0af2a382437 Mon Sep 17 00:00:00 2001 From: dheideman Date: Fri, 15 Sep 2017 09:23:50 -0700 Subject: [PATCH 6/6] Reformat brand image qml property for readability --- src/ui/toolbar/MainToolBarIndicators.qml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ui/toolbar/MainToolBarIndicators.qml b/src/ui/toolbar/MainToolBarIndicators.qml index 1698ce6..c045cd6 100644 --- a/src/ui/toolbar/MainToolBarIndicators.qml +++ b/src/ui/toolbar/MainToolBarIndicators.qml @@ -100,8 +100,22 @@ Item { property string _userBrandImageOutdoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor.value property bool _userBrandingIndoor: _userBrandImageIndoor.length != 0 property bool _userBrandingOutdoor: _userBrandImageOutdoor.length != 0 - property string _brandImageIndoor: _userBrandingIndoor ? _userBrandImageIndoor : (_userBrandingOutdoor ? _userBrandImageOutdoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageIndoor : (_activeVehicle ? _activeVehicle.brandImageIndoor : "") ) ) - property string _brandImageOutdoor: _userBrandingOutdoor ? _userBrandImageOutdoor : (_userBrandingIndoor ? _userBrandImageIndoor : (_corePluginBranding ? QGroundControl.corePlugin.brandImageOutdoor : (_activeVehicle ? _activeVehicle.brandImageOutdoor : "") ) ) + property string _brandImageIndoor: _userBrandingIndoor ? + _userBrandImageIndoor : (_userBrandingOutdoor ? + _userBrandImageOutdoor : (_corePluginBranding ? + QGroundControl.corePlugin.brandImageIndoor : (_activeVehicle ? + _activeVehicle.brandImageIndoor : "" + ) + ) + ) + property string _brandImageOutdoor: _userBrandingOutdoor ? + _userBrandImageOutdoor : (_userBrandingIndoor ? + _userBrandImageIndoor : (_corePluginBranding ? + QGroundControl.corePlugin.brandImageOutdoor : (_activeVehicle ? + _activeVehicle.brandImageOutdoor : "" + ) + ) + ) } Row {