Commit 8783b20d authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #4571 from DonLakeFlyer/SettingsManager

Add/use new SettingsManager implementation
parents 4881b985 616e1137
...@@ -474,6 +474,7 @@ HEADERS += \ ...@@ -474,6 +474,7 @@ HEADERS += \
src/QmlControls/RCChannelMonitorController.h \ src/QmlControls/RCChannelMonitorController.h \
src/QmlControls/ScreenToolsController.h \ src/QmlControls/ScreenToolsController.h \
src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h \ src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h \
src/SettingsManager.h \
src/Vehicle/MAVLinkLogManager.h \ src/Vehicle/MAVLinkLogManager.h \
src/VehicleSetup/JoystickConfigController.h \ src/VehicleSetup/JoystickConfigController.h \
src/audio/QGCAudioWorker.h \ src/audio/QGCAudioWorker.h \
...@@ -635,6 +636,7 @@ SOURCES += \ ...@@ -635,6 +636,7 @@ SOURCES += \
src/QmlControls/RCChannelMonitorController.cc \ src/QmlControls/RCChannelMonitorController.cc \
src/QmlControls/ScreenToolsController.cc \ src/QmlControls/ScreenToolsController.cc \
src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc \ src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc \
src/SettingsManager.cc \
src/Vehicle/MAVLinkLogManager.cc \ src/Vehicle/MAVLinkLogManager.cc \
src/VehicleSetup/JoystickConfigController.cc \ src/VehicleSetup/JoystickConfigController.cc \
src/audio/QGCAudioWorker.cpp \ src/audio/QGCAudioWorker.cpp \
......
...@@ -168,7 +168,7 @@ ...@@ -168,7 +168,7 @@
<file alias="Vehicle/GPSFact.json">src/Vehicle/GPSFact.json</file> <file alias="Vehicle/GPSFact.json">src/Vehicle/GPSFact.json</file>
<file alias="Vehicle/WindFact.json">src/Vehicle/WindFact.json</file> <file alias="Vehicle/WindFact.json">src/Vehicle/WindFact.json</file>
<file alias="Vehicle/VibrationFact.json">src/Vehicle/VibrationFact.json</file> <file alias="Vehicle/VibrationFact.json">src/Vehicle/VibrationFact.json</file>
<file alias="QGroundControlQmlGlobal.json">src/QmlControls/QGroundControlQmlGlobal.json</file> <file alias="SettingsManager.json">src/SettingsManager.json</file>
<file alias="RallyPoint.FactMetaData.json">src/MissionManager/RallyPoint.FactMetaData.json</file> <file alias="RallyPoint.FactMetaData.json">src/MissionManager/RallyPoint.FactMetaData.json</file>
<file alias="FWLandingPattern.FactMetaData.json">src/MissionManager/FWLandingPattern.FactMetaData.json</file> <file alias="FWLandingPattern.FactMetaData.json">src/MissionManager/FWLandingPattern.FactMetaData.json</file>
<file alias="Survey.FactMetaData.json">src/MissionManager/Survey.FactMetaData.json</file> <file alias="Survey.FactMetaData.json">src/MissionManager/Survey.FactMetaData.json</file>
......
...@@ -14,8 +14,9 @@ ...@@ -14,8 +14,9 @@
/// @author Don Gagne <don@thegagnes.com> /// @author Don Gagne <don@thegagnes.com>
#include "FactMetaData.h" #include "FactMetaData.h"
#include "QGroundControlQmlGlobal.h" #include "SettingsManager.h"
#include "JsonHelper.h" #include "JsonHelper.h"
#include "QGCApplication.h"
#include <QDebug> #include <QDebug>
#include <QtMath> #include <QtMath>
...@@ -45,21 +46,21 @@ const FactMetaData::BuiltInTranslation_s FactMetaData::_rgBuiltInTranslations[] ...@@ -45,21 +46,21 @@ const FactMetaData::BuiltInTranslation_s FactMetaData::_rgBuiltInTranslations[]
// Translations driven by app settings // Translations driven by app settings
const FactMetaData::AppSettingsTranslation_s FactMetaData::_rgAppSettingsTranslations[] = { const FactMetaData::AppSettingsTranslation_s FactMetaData::_rgAppSettingsTranslations[] = {
{ "m", "m", false, QGroundControlQmlGlobal::DistanceUnitsMeters, FactMetaData::_defaultTranslator, FactMetaData::_defaultTranslator }, { "m", "m", false, SettingsManager::DistanceUnitsMeters, FactMetaData::_defaultTranslator, FactMetaData::_defaultTranslator },
{ "meters", "meters", false, QGroundControlQmlGlobal::DistanceUnitsMeters, FactMetaData::_defaultTranslator, FactMetaData::_defaultTranslator }, { "meters", "meters", false, SettingsManager::DistanceUnitsMeters, FactMetaData::_defaultTranslator, FactMetaData::_defaultTranslator },
{ "m/s", "m/s", true, QGroundControlQmlGlobal::SpeedUnitsMetersPerSecond, FactMetaData::_defaultTranslator, FactMetaData::_defaultTranslator }, { "m/s", "m/s", true, SettingsManager::SpeedUnitsMetersPerSecond, FactMetaData::_defaultTranslator, FactMetaData::_defaultTranslator },
{ "m^2", "m^2", false, QGroundControlQmlGlobal::AreaUnitsSquareMeters, FactMetaData::_defaultTranslator, FactMetaData::_defaultTranslator }, { "m^2", "m^2", false, SettingsManager::AreaUnitsSquareMeters, FactMetaData::_defaultTranslator, FactMetaData::_defaultTranslator },
{ "m", "ft", false, QGroundControlQmlGlobal::DistanceUnitsFeet, FactMetaData::_metersToFeet, FactMetaData::_feetToMeters }, { "m", "ft", false, SettingsManager::DistanceUnitsFeet, FactMetaData::_metersToFeet, FactMetaData::_feetToMeters },
{ "meters", "ft", false, QGroundControlQmlGlobal::DistanceUnitsFeet, FactMetaData::_metersToFeet, FactMetaData::_feetToMeters }, { "meters", "ft", false, SettingsManager::DistanceUnitsFeet, FactMetaData::_metersToFeet, FactMetaData::_feetToMeters },
{ "m^2", "km^2", false, QGroundControlQmlGlobal::AreaUnitsSquareKilometers, FactMetaData::_squareMetersToSquareKilometers, FactMetaData::_squareKilometersToSquareMeters }, { "m^2", "km^2", false, SettingsManager::AreaUnitsSquareKilometers, FactMetaData::_squareMetersToSquareKilometers, FactMetaData::_squareKilometersToSquareMeters },
{ "m^2", "ha", false, QGroundControlQmlGlobal::AreaUnitsHectares, FactMetaData::_squareMetersToHectares, FactMetaData::_hectaresToSquareMeters }, { "m^2", "ha", false, SettingsManager::AreaUnitsHectares, FactMetaData::_squareMetersToHectares, FactMetaData::_hectaresToSquareMeters },
{ "m^2", "ft^2", false, QGroundControlQmlGlobal::AreaUnitsSquareFeet, FactMetaData::_squareMetersToSquareFeet, FactMetaData::_squareFeetToSquareMeters }, { "m^2", "ft^2", false, SettingsManager::AreaUnitsSquareFeet, FactMetaData::_squareMetersToSquareFeet, FactMetaData::_squareFeetToSquareMeters },
{ "m^2", "ac", false, QGroundControlQmlGlobal::AreaUnitsAcres, FactMetaData::_squareMetersToAcres, FactMetaData::_acresToSquareMeters }, { "m^2", "ac", false, SettingsManager::AreaUnitsAcres, FactMetaData::_squareMetersToAcres, FactMetaData::_acresToSquareMeters },
{ "m^2", "mi^2", false, QGroundControlQmlGlobal::AreaUnitsSquareMiles, FactMetaData::_squareMetersToSquareMiles, FactMetaData::_squareMilesToSquareMeters }, { "m^2", "mi^2", false, SettingsManager::AreaUnitsSquareMiles, FactMetaData::_squareMetersToSquareMiles, FactMetaData::_squareMilesToSquareMeters },
{ "m/s", "ft/s", true, QGroundControlQmlGlobal::SpeedUnitsFeetPerSecond, FactMetaData::_metersToFeet, FactMetaData::_feetToMeters }, { "m/s", "ft/s", true, SettingsManager::SpeedUnitsFeetPerSecond, FactMetaData::_metersToFeet, FactMetaData::_feetToMeters },
{ "m/s", "mph", true, QGroundControlQmlGlobal::SpeedUnitsMilesPerHour, FactMetaData::_metersPerSecondToMilesPerHour, FactMetaData::_milesPerHourToMetersPerSecond }, { "m/s", "mph", true, SettingsManager::SpeedUnitsMilesPerHour, FactMetaData::_metersPerSecondToMilesPerHour, FactMetaData::_milesPerHourToMetersPerSecond },
{ "m/s", "km/h", true, QGroundControlQmlGlobal::SpeedUnitsKilometersPerHour, FactMetaData::_metersPerSecondToKilometersPerHour, FactMetaData::_kilometersPerHourToMetersPerSecond }, { "m/s", "km/h", true, SettingsManager::SpeedUnitsKilometersPerHour, FactMetaData::_metersPerSecondToKilometersPerHour, FactMetaData::_kilometersPerHourToMetersPerSecond },
{ "m/s", "kn", true, QGroundControlQmlGlobal::SpeedUnitsKnots, FactMetaData::_metersPerSecondToKnots, FactMetaData::_knotsToMetersPerSecond }, { "m/s", "kn", true, SettingsManager::SpeedUnitsKnots, FactMetaData::_metersPerSecondToKnots, FactMetaData::_knotsToMetersPerSecond },
}; };
const char* FactMetaData::_decimalPlacesJsonKey = "decimalPlaces"; const char* FactMetaData::_decimalPlacesJsonKey = "decimalPlaces";
...@@ -612,8 +613,8 @@ void FactMetaData::_setAppSettingsTranslators(void) ...@@ -612,8 +613,8 @@ void FactMetaData::_setAppSettingsTranslators(void)
const AppSettingsTranslation_s* pAppSettingsTranslation = &_rgAppSettingsTranslations[i]; const AppSettingsTranslation_s* pAppSettingsTranslation = &_rgAppSettingsTranslations[i];
if (pAppSettingsTranslation->rawUnits == _rawUnits.toLower() && if (pAppSettingsTranslation->rawUnits == _rawUnits.toLower() &&
((pAppSettingsTranslation->speed && pAppSettingsTranslation->speedOrDistanceUnits == QGroundControlQmlGlobal::speedUnits()->rawValue().toUInt()) || ((pAppSettingsTranslation->speed && pAppSettingsTranslation->speedOrDistanceUnits == qgcApp()->toolbox()->settingsManager()->speedUnits()->rawValue().toUInt()) ||
(!pAppSettingsTranslation->speed && pAppSettingsTranslation->speedOrDistanceUnits == QGroundControlQmlGlobal::distanceUnits()->rawValue().toUInt()))) { (!pAppSettingsTranslation->speed && pAppSettingsTranslation->speedOrDistanceUnits == qgcApp()->toolbox()->settingsManager()->distanceUnits()->rawValue().toUInt()))) {
_cookedUnits = pAppSettingsTranslation->cookedUnits; _cookedUnits = pAppSettingsTranslation->cookedUnits;
setTranslators(pAppSettingsTranslation->rawTranslator, pAppSettingsTranslation->cookedTranslator); setTranslators(pAppSettingsTranslation->rawTranslator, pAppSettingsTranslation->cookedTranslator);
return; return;
...@@ -628,7 +629,7 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsDist ...@@ -628,7 +629,7 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsDist
const AppSettingsTranslation_s* pAppSettingsTranslation = &_rgAppSettingsTranslations[i]; const AppSettingsTranslation_s* pAppSettingsTranslation = &_rgAppSettingsTranslations[i];
if (pAppSettingsTranslation->rawUnits == rawUnits && if (pAppSettingsTranslation->rawUnits == rawUnits &&
(!pAppSettingsTranslation->speed && pAppSettingsTranslation->speedOrDistanceUnits == QGroundControlQmlGlobal::distanceUnits()->rawValue().toUInt())) { (!pAppSettingsTranslation->speed && pAppSettingsTranslation->speedOrDistanceUnits == qgcApp()->toolbox()->settingsManager()->distanceUnits()->rawValue().toUInt())) {
return pAppSettingsTranslation; return pAppSettingsTranslation;
} }
} }
...@@ -642,7 +643,7 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsArea ...@@ -642,7 +643,7 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsArea
const AppSettingsTranslation_s* pAppSettingsTranslation = &_rgAppSettingsTranslations[i]; const AppSettingsTranslation_s* pAppSettingsTranslation = &_rgAppSettingsTranslations[i];
if (pAppSettingsTranslation->rawUnits == rawUnits && if (pAppSettingsTranslation->rawUnits == rawUnits &&
(!pAppSettingsTranslation->speed && pAppSettingsTranslation->speedOrDistanceUnits == QGroundControlQmlGlobal::areaUnits()->rawValue().toUInt()) (!pAppSettingsTranslation->speed && pAppSettingsTranslation->speedOrDistanceUnits == qgcApp()->toolbox()->settingsManager()->areaUnits()->rawValue().toUInt())
) { ) {
return pAppSettingsTranslation; return pAppSettingsTranslation;
} }
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#include "SettingsFact.h" #include "SettingsFact.h"
#include "QGCCorePlugin.h"
#include "QGCApplication.h"
#include <QSettings> #include <QSettings>
...@@ -18,8 +20,8 @@ SettingsFact::SettingsFact(QObject* parent) ...@@ -18,8 +20,8 @@ SettingsFact::SettingsFact(QObject* parent)
} }
SettingsFact::SettingsFact(QString settingGroup, QString settingName, FactMetaData::ValueType_t type, const QVariant& defaultValue, QObject* parent) SettingsFact::SettingsFact(QString settingGroup, FactMetaData* metaData, QObject* parent)
: Fact(0, settingName, type, parent) : Fact(0, metaData->name(), metaData->type(), parent)
, _settingGroup(settingGroup) , _settingGroup(settingGroup)
{ {
QSettings settings; QSettings settings;
...@@ -28,7 +30,10 @@ SettingsFact::SettingsFact(QString settingGroup, QString settingName, FactMetaDa ...@@ -28,7 +30,10 @@ SettingsFact::SettingsFact(QString settingGroup, QString settingName, FactMetaDa
settings.beginGroup(_settingGroup); settings.beginGroup(_settingGroup);
} }
_rawValue = settings.value(_name, defaultValue); // Allow core plugin a chance to override the default value
metaData->setRawDefaultValue(qgcApp()->toolbox()->corePlugin()->overrideSettingsDefault(metaData->name(), metaData->rawDefaultValue()));
setMetaData(metaData);
_rawValue = settings.value(_name, metaData->rawDefaultValue());
connect(this, &Fact::rawValueChanged, this, &SettingsFact::_rawValueChanged); connect(this, &Fact::rawValueChanged, this, &SettingsFact::_rawValueChanged);
} }
......
...@@ -23,7 +23,7 @@ class SettingsFact : public Fact ...@@ -23,7 +23,7 @@ class SettingsFact : public Fact
public: public:
SettingsFact(QObject* parent = NULL); SettingsFact(QObject* parent = NULL);
SettingsFact(QString settingGroup, QString settingName, FactMetaData::ValueType_t type, const QVariant& defaultValue, QObject* parent = NULL); SettingsFact(QString settingGroup, FactMetaData* metaData, QObject* parent = NULL);
SettingsFact(const SettingsFact& other, QObject* parent = NULL); SettingsFact(const SettingsFact& other, QObject* parent = NULL);
const SettingsFact& operator=(const SettingsFact& other); const SettingsFact& operator=(const SettingsFact& other);
......
...@@ -10,9 +10,10 @@ ...@@ -10,9 +10,10 @@
import QtQuick 2.4 import QtQuick 2.4
import QtQuick.Controls 1.3 import QtQuick.Controls 1.3
import QGroundControl 1.0 import QGroundControl 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.ScreenTools 1.0 import QGroundControl.ScreenTools 1.0
import QGroundControl.SettingsManager 1.0
/// Map scale control /// Map scale control
Item { Item {
...@@ -114,7 +115,7 @@ Item { ...@@ -114,7 +115,7 @@ Item {
var rightCoord = mapControl.toCoordinate(Qt.point(scaleLinePixelLength, scale.y)) var rightCoord = mapControl.toCoordinate(Qt.point(scaleLinePixelLength, scale.y))
var scaleLineMeters = Math.round(leftCoord.distanceTo(rightCoord)) var scaleLineMeters = Math.round(leftCoord.distanceTo(rightCoord))
if (QGroundControl.distanceUnits.value == QGroundControl.DistanceUnitsFeet) { if (QGroundControl.settingsManager.distanceUnits.value == QGroundControl.settingsManager.DistanceUnitsFeet) {
calculateFeetRatio(scaleLineMeters, scaleLinePixelLength) calculateFeetRatio(scaleLineMeters, scaleLinePixelLength)
} else { } else {
calculateMetersRatio(scaleLineMeters, scaleLinePixelLength) calculateMetersRatio(scaleLineMeters, scaleLinePixelLength)
......
...@@ -2,12 +2,13 @@ import QtQuick 2.5 ...@@ -2,12 +2,13 @@ import QtQuick 2.5
import QtQuick.Controls 1.2 import QtQuick.Controls 1.2
import QtQuick.Layouts 1.2 import QtQuick.Layouts 1.2
import QGroundControl 1.0 import QGroundControl 1.0
import QGroundControl.ScreenTools 1.0 import QGroundControl.ScreenTools 1.0
import QGroundControl.Vehicle 1.0 import QGroundControl.Vehicle 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.FactControls 1.0 import QGroundControl.FactControls 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
import QGroundControl.SettingsManager 1.0
// Editor for Mission Settings // Editor for Mission Settings
Rectangle { Rectangle {
...@@ -121,7 +122,7 @@ Rectangle { ...@@ -121,7 +122,7 @@ Rectangle {
Layout.fillWidth: true Layout.fillWidth: true
} }
FactComboBox { FactComboBox {
fact: QGroundControl.offlineEditingFirmwareType fact: QGroundControl.settingsManager.offlineEditingFirmwareType
indexModel: false indexModel: false
visible: _showOfflineEditingCombos visible: _showOfflineEditingCombos
Layout.preferredWidth: _fieldWidth Layout.preferredWidth: _fieldWidth
...@@ -145,7 +146,7 @@ Rectangle { ...@@ -145,7 +146,7 @@ Rectangle {
} }
FactComboBox { FactComboBox {
id: offlineVehicleCombo id: offlineVehicleCombo
fact: QGroundControl.offlineEditingVehicleType fact: QGroundControl.settingsManager.offlineEditingVehicleType
indexModel: false indexModel: false
visible: _showOfflineEditingCombos visible: _showOfflineEditingCombos
Layout.preferredWidth: _fieldWidth Layout.preferredWidth: _fieldWidth
...@@ -169,7 +170,7 @@ Rectangle { ...@@ -169,7 +170,7 @@ Rectangle {
Layout.fillWidth: true Layout.fillWidth: true
} }
FactTextField { FactTextField {
fact: QGroundControl.offlineEditingCruiseSpeed fact: QGroundControl.settingsManager.offlineEditingCruiseSpeed
visible: _showCruiseSpeed visible: _showCruiseSpeed
Layout.preferredWidth: _fieldWidth Layout.preferredWidth: _fieldWidth
} }
...@@ -181,7 +182,7 @@ Rectangle { ...@@ -181,7 +182,7 @@ Rectangle {
Layout.fillWidth: true Layout.fillWidth: true
} }
FactTextField { FactTextField {
fact: QGroundControl.offlineEditingHoverSpeed fact: QGroundControl.settingsManager.offlineEditingHoverSpeed
visible: _showHoverSpeed visible: _showHoverSpeed
Layout.preferredWidth: _fieldWidth Layout.preferredWidth: _fieldWidth
} }
...@@ -195,7 +196,7 @@ Rectangle { ...@@ -195,7 +196,7 @@ Rectangle {
QGCLabel { text: qsTr("Hover speed:"); Layout.fillWidth: true } QGCLabel { text: qsTr("Hover speed:"); Layout.fillWidth: true }
FactTextField { FactTextField {
Layout.preferredWidth: _fieldWidth Layout.preferredWidth: _fieldWidth
fact: QGroundControl.offlineEditingHoverSpeed fact: QGroundControl.settingsManager.offlineEditingHoverSpeed
} }
} }
......
...@@ -17,11 +17,13 @@ ...@@ -17,11 +17,13 @@
#include "QGroundControlQmlGlobal.h" #include "QGroundControlQmlGlobal.h"
#include "MissionCommandUIInfo.h" #include "MissionCommandUIInfo.h"
#include "MissionCommandList.h" #include "MissionCommandList.h"
#include "SettingsManager.h"
#include <QQmlEngine> #include <QQmlEngine>
MissionCommandTree::MissionCommandTree(QGCApplication* app, bool unitTest) MissionCommandTree::MissionCommandTree(QGCApplication* app, bool unitTest)
: QGCTool(app) : QGCTool(app)
, _settingsManager(NULL)
, _unitTest(unitTest) , _unitTest(unitTest)
{ {
} }
...@@ -30,6 +32,8 @@ void MissionCommandTree::setToolbox(QGCToolbox* toolbox) ...@@ -30,6 +32,8 @@ void MissionCommandTree::setToolbox(QGCToolbox* toolbox)
{ {
QGCTool::setToolbox(toolbox); QGCTool::setToolbox(toolbox);
_settingsManager = toolbox->settingsManager();
#ifdef UNITTEST_BUILD #ifdef UNITTEST_BUILD
if (_unitTest) { if (_unitTest) {
// Load unit testing tree // Load unit testing tree
...@@ -249,7 +253,7 @@ void MissionCommandTree::_baseVehicleInfo(Vehicle* vehicle, MAV_AUTOPILOT& baseF ...@@ -249,7 +253,7 @@ void MissionCommandTree::_baseVehicleInfo(Vehicle* vehicle, MAV_AUTOPILOT& baseF
baseVehicleType = _baseVehicleType(vehicle->vehicleType()); baseVehicleType = _baseVehicleType(vehicle->vehicleType());
} else { } else {
// No Vehicle means offline editing // No Vehicle means offline editing
baseFirmwareType = _baseFirmwareType((MAV_AUTOPILOT)QGroundControlQmlGlobal::offlineEditingFirmwareType()->rawValue().toInt()); baseFirmwareType = _baseFirmwareType((MAV_AUTOPILOT)_settingsManager->offlineEditingFirmwareType()->rawValue().toInt());
baseVehicleType = _baseVehicleType((MAV_TYPE)QGroundControlQmlGlobal::offlineEditingVehicleType()->rawValue().toInt()); baseVehicleType = _baseVehicleType((MAV_TYPE)_settingsManager->offlineEditingVehicleType()->rawValue().toInt());
} }
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
class MissionCommandUIInfo; class MissionCommandUIInfo;
class MissionCommandList; class MissionCommandList;
class SettingsManager;
#ifdef UNITTEST_BUILD #ifdef UNITTEST_BUILD
class MissionCommandTreeTest; class MissionCommandTreeTest;
#endif #endif
...@@ -87,7 +88,8 @@ private: ...@@ -87,7 +88,8 @@ private:
/// Collapsed hierarchy for specific vehicle type /// Collapsed hierarchy for specific vehicle type
QMap<MAV_AUTOPILOT, QMap<MAV_TYPE, QStringList>> _availableCategories; QMap<MAV_AUTOPILOT, QMap<MAV_TYPE, QStringList>> _availableCategories;
bool _unitTest; ///< true: running in unit test mode SettingsManager* _settingsManager;
bool _unitTest; ///< true: running in unit test mode
#ifdef UNITTEST_BUILD #ifdef UNITTEST_BUILD
friend class MissionCommandTreeTest; friend class MissionCommandTreeTest;
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "JsonHelper.h" #include "JsonHelper.h"
#include "ParameterManager.h" #include "ParameterManager.h"
#include "QGroundControlQmlGlobal.h" #include "QGroundControlQmlGlobal.h"
#include "SettingsManager.h"
#ifndef __mobile__ #ifndef __mobile__
#include "MainWindow.h" #include "MainWindow.h"
...@@ -431,17 +432,18 @@ bool MissionController::_loadJsonMissionFileV2(Vehicle* vehicle, const QJsonObje ...@@ -431,17 +432,18 @@ bool MissionController::_loadJsonMissionFileV2(Vehicle* vehicle, const QJsonObje
// Mission Settings // Mission Settings
QGeoCoordinate homeCoordinate; QGeoCoordinate homeCoordinate;
SettingsManager* settingsManager = qgcApp()->toolbox()->settingsManager();
if (!JsonHelper::loadGeoCoordinate(json[_jsonPlannedHomePositionKey], true /* altitudeRequired */, homeCoordinate, errorString)) { if (!JsonHelper::loadGeoCoordinate(json[_jsonPlannedHomePositionKey], true /* altitudeRequired */, homeCoordinate, errorString)) {
return false; return false;
} }
if (json.contains(_jsonVehicleTypeKey) && vehicle->isOfflineEditingVehicle()) { if (json.contains(_jsonVehicleTypeKey) && vehicle->isOfflineEditingVehicle()) {
QGroundControlQmlGlobal::offlineEditingVehicleType()->setRawValue(json[_jsonVehicleTypeKey].toDouble()); settingsManager->offlineEditingVehicleType()->setRawValue(json[_jsonVehicleTypeKey].toDouble());
} }
if (json.contains(_jsonCruiseSpeedKey)) { if (json.contains(_jsonCruiseSpeedKey)) {
QGroundControlQmlGlobal::offlineEditingCruiseSpeed()->setRawValue(json[_jsonCruiseSpeedKey].toDouble()); settingsManager->offlineEditingCruiseSpeed()->setRawValue(json[_jsonCruiseSpeedKey].toDouble());
} }
if (json.contains(_jsonHoverSpeedKey)) { if (json.contains(_jsonHoverSpeedKey)) {
QGroundControlQmlGlobal::offlineEditingHoverSpeed()->setRawValue(json[_jsonHoverSpeedKey].toDouble()); settingsManager->offlineEditingHoverSpeed()->setRawValue(json[_jsonHoverSpeedKey].toDouble());
} }
SimpleMissionItem* homeItem = new SimpleMissionItem(vehicle, visualItems); SimpleMissionItem* homeItem = new SimpleMissionItem(vehicle, visualItems);
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "JsonHelper.h" #include "JsonHelper.h"
#include "SimpleMissionItem.h" #include "SimpleMissionItem.h"
#include "QGroundControlQmlGlobal.h" #include "QGroundControlQmlGlobal.h"
#include "SettingsManager.h"
#ifndef __mobile__ #ifndef __mobile__
#include "QGCFileDialog.h" #include "QGCFileDialog.h"
...@@ -267,7 +268,7 @@ void RallyPointController::addPoint(QGeoCoordinate point) ...@@ -267,7 +268,7 @@ void RallyPointController::addPoint(QGeoCoordinate point)
if (_points.count()) { if (_points.count()) {
defaultAlt = qobject_cast<RallyPoint*>(_points[_points.count() - 1])->coordinate().altitude(); defaultAlt = qobject_cast<RallyPoint*>(_points[_points.count() - 1])->coordinate().altitude();
} else { } else {
defaultAlt = QGroundControlQmlGlobal::defaultMissionItemAltitude()->rawValue().toDouble(); defaultAlt = qgcApp()->toolbox()->settingsManager()->defaultMissionItemAltitude()->rawValue().toDouble();
} }
point.setAltitude(defaultAlt); point.setAltitude(defaultAlt);
RallyPoint* newPoint = new RallyPoint(point, this); RallyPoint* newPoint = new RallyPoint(point, this);
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "MissionCommandTree.h" #include "MissionCommandTree.h"
#include "MissionCommandUIInfo.h" #include "MissionCommandUIInfo.h"
#include "QGroundControlQmlGlobal.h" #include "QGroundControlQmlGlobal.h"
#include "SettingsManager.h"
FactMetaData* SimpleMissionItem::_altitudeMetaData = NULL; FactMetaData* SimpleMissionItem::_altitudeMetaData = NULL;
FactMetaData* SimpleMissionItem::_commandMetaData = NULL; FactMetaData* SimpleMissionItem::_commandMetaData = NULL;
...@@ -529,7 +530,7 @@ void SimpleMissionItem::_syncFrameToAltitudeRelativeToHome(void) ...@@ -529,7 +530,7 @@ void SimpleMissionItem::_syncFrameToAltitudeRelativeToHome(void)
void SimpleMissionItem::setDefaultsForCommand(void) void SimpleMissionItem::setDefaultsForCommand(void)
{ {
// We set these global defaults first, then if there are param defaults they will get reset // We set these global defaults first, then if there are param defaults they will get reset
_missionItem.setParam7(QGroundControlQmlGlobal::defaultMissionItemAltitude()->rawValue().toDouble()); _missionItem.setParam7(qgcApp()->toolbox()->settingsManager()->defaultMissionItemAltitude()->rawValue().toDouble());
MAV_CMD command = (MAV_CMD)this->command(); MAV_CMD command = (MAV_CMD)this->command();
const MissionCommandUIInfo* uiInfo = _commandTree->getUIInfo(_vehicle, command); const MissionCommandUIInfo* uiInfo = _commandTree->getUIInfo(_vehicle, command);
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "SimpleMissionItem.h" #include "SimpleMissionItem.h"
#include "QGCApplication.h" #include "QGCApplication.h"
#include "QGroundControlQmlGlobal.h" #include "QGroundControlQmlGlobal.h"
#include "SettingsManager.h"
const SimpleMissionItemTest::ItemInfo_t SimpleMissionItemTest::_rgItemInfo[] = { const SimpleMissionItemTest::ItemInfo_t SimpleMissionItemTest::_rgItemInfo[] = {
{ MAV_CMD_NAV_WAYPOINT, MAV_FRAME_GLOBAL_RELATIVE_ALT }, { MAV_CMD_NAV_WAYPOINT, MAV_FRAME_GLOBAL_RELATIVE_ALT },
...@@ -140,7 +141,7 @@ void SimpleMissionItemTest::_testDefaultValues(void) ...@@ -140,7 +141,7 @@ void SimpleMissionItemTest::_testDefaultValues(void)
item.missionItem().setCommand(MAV_CMD_NAV_WAYPOINT); item.missionItem().setCommand(MAV_CMD_NAV_WAYPOINT);
item.missionItem().setFrame(MAV_FRAME_GLOBAL_RELATIVE_ALT); item.missionItem().setFrame(MAV_FRAME_GLOBAL_RELATIVE_ALT);
QCOMPARE(item.missionItem().param7(), QGroundControlQmlGlobal::defaultMissionItemAltitude()->rawValue().toDouble()); QCOMPARE(item.missionItem().param7(), qgcApp()->toolbox()->settingsManager()->defaultMissionItemAltitude()->rawValue().toDouble());
} }
void SimpleMissionItemTest::_testSignals(void) void SimpleMissionItemTest::_testSignals(void)
...@@ -225,7 +226,7 @@ void SimpleMissionItemTest::_testSignals(void) ...@@ -225,7 +226,7 @@ void SimpleMissionItemTest::_testSignals(void)
// dirtyChanged // dirtyChanged
// Check that changing to the same coordinate does not signal // Check that changing to the same coordinate does not signal
simpleMissionItem.setCoordinate(QGeoCoordinate(50.1234567, 60.1234567, QGroundControlQmlGlobal::defaultMissionItemAltitude()->rawValue().toDouble())); simpleMissionItem.setCoordinate(QGeoCoordinate(50.1234567, 60.1234567, qgcApp()->toolbox()->settingsManager()->defaultMissionItemAltitude()->rawValue().toDouble()));
QVERIFY(multiSpy->checkNoSignals()); QVERIFY(multiSpy->checkNoSignals());
// Check that actually changing coordinate signals correctly // Check that actually changing coordinate signals correctly
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "MAVLinkLogManager.h" #include "MAVLinkLogManager.h"
#include "QGCCorePlugin.h" #include "QGCCorePlugin.h"
#include "QGCOptions.h" #include "QGCOptions.h"
#include "SettingsManager.h"
#if defined(QGC_CUSTOM_BUILD) #if defined(QGC_CUSTOM_BUILD)
#include CUSTOMHEADER #include CUSTOMHEADER
...@@ -55,7 +56,11 @@ QGCToolbox::QGCToolbox(QGCApplication* app) ...@@ -55,7 +56,11 @@ QGCToolbox::QGCToolbox(QGCApplication* app)
, _videoManager(NULL) , _videoManager(NULL)
, _mavlinkLogManager(NULL) , _mavlinkLogManager(NULL)
, _corePlugin(NULL) , _corePlugin(NULL)
, _settingsManager(NULL)
{ {
// SettingsManager must be first so settings are available to any subsequent tools
_settingsManager = new SettingsManager(app);
//-- Scan and load plugins //-- Scan and load plugins
_scanAndLoadPlugins(app); _scanAndLoadPlugins(app);
_audioOutput = new GAudioOutput(app); _audioOutput = new GAudioOutput(app);
...@@ -81,6 +86,9 @@ QGCToolbox::QGCToolbox(QGCApplication* app) ...@@ -81,6 +86,9 @@ QGCToolbox::QGCToolbox(QGCApplication* app)
void QGCToolbox::setChildToolboxes(void) void QGCToolbox::setChildToolboxes(void)
{ {
// SettingsManager must be first so settings are available to any subsequent tools
_settingsManager->setToolbox(this);
_corePlugin->setToolbox(this); _corePlugin->setToolbox(this);
_audioOutput->setToolbox(this); _audioOutput->setToolbox(this);
_factSystem->setToolbox(this); _factSystem->setToolbox(this);
......
...@@ -32,6 +32,7 @@ class QGCPositionManager; ...@@ -32,6 +32,7 @@ class QGCPositionManager;
class VideoManager; class VideoManager;
class MAVLinkLogManager; class MAVLinkLogManager;
class QGCCorePlugin; class QGCCorePlugin;
class SettingsManager;
/// This is used to manage all of our top level services/tools /// This is used to manage all of our top level services/tools
class QGCToolbox { class QGCToolbox {
...@@ -56,6 +57,7 @@ public: ...@@ -56,6 +57,7 @@ public:
VideoManager* videoManager(void) { return _videoManager; } VideoManager* videoManager(void) { return _videoManager; }
MAVLinkLogManager* mavlinkLogManager(void) { return _mavlinkLogManager; } MAVLinkLogManager* mavlinkLogManager(void) { return _mavlinkLogManager; }
QGCCorePlugin* corePlugin(void) { return _corePlugin; } QGCCorePlugin* corePlugin(void) { return _corePlugin; }
SettingsManager* settingsManager(void) { return _settingsManager; }
#ifndef __mobile__ #ifndef __mobile__
GPSManager* gpsManager(void) { return _gpsManager; } GPSManager* gpsManager(void) { return _gpsManager; }
...@@ -86,6 +88,7 @@ private: ...@@ -86,6 +88,7 @@ private:
VideoManager* _videoManager; VideoManager* _videoManager;
MAVLinkLogManager* _mavlinkLogManager; MAVLinkLogManager* _mavlinkLogManager;
QGCCorePlugin* _corePlugin; QGCCorePlugin* _corePlugin;
SettingsManager* _settingsManager;
friend class QGCApplication; friend class QGCApplication;
}; };
......
...@@ -19,19 +19,6 @@ ...@@ -19,19 +19,6 @@
static const char* kQmlGlobalKeyName = "QGCQml"; static const char* kQmlGlobalKeyName = "QGCQml";
SettingsFact* QGroundControlQmlGlobal::_distanceUnitsFact = NULL;
FactMetaData* QGroundControlQmlGlobal::_distanceUnitsMetaData = NULL;
SettingsFact* QGroundControlQmlGlobal::_areaUnitsFact = NULL;
FactMetaData* QGroundControlQmlGlobal::_areaUnitsMetaData = NULL;
SettingsFact* QGroundControlQmlGlobal::_speedUnitsFact = NULL;
FactMetaData* QGroundControlQmlGlobal::_speedUnitsMetaData = NULL;
SettingsFact* QGroundControlQmlGlobal::_offlineEditingFirmwareTypeFact = NULL;
SettingsFact* QGroundControlQmlGlobal::_offlineEditingVehicleTypeFact = NULL;
SettingsFact* QGroundControlQmlGlobal::_offlineEditingCruiseSpeedFact = NULL;
SettingsFact* QGroundControlQmlGlobal::_offlineEditingHoverSpeedFact = NULL;
SettingsFact* QGroundControlQmlGlobal::_batteryPercentRemainingAnnounceFact = NULL;
SettingsFact* QGroundControlQmlGlobal::_defaultMissionItemAltitudeFact = NULL;
const char* QGroundControlQmlGlobal::_virtualTabletJoystickKey = "VirtualTabletJoystick"; const char* QGroundControlQmlGlobal::_virtualTabletJoystickKey = "VirtualTabletJoystick";
const char* QGroundControlQmlGlobal::_baseFontPointSizeKey = "BaseDeviceFontPointSize"; const char* QGroundControlQmlGlobal::_baseFontPointSizeKey = "BaseDeviceFontPointSize";
const char* QGroundControlQmlGlobal::_missionAutoLoadDirKey = "MissionAutoLoadDir"; const char* QGroundControlQmlGlobal::_missionAutoLoadDirKey = "MissionAutoLoadDir";
...@@ -48,6 +35,7 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app) ...@@ -48,6 +35,7 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app)
, _mavlinkLogManager(NULL) , _mavlinkLogManager(NULL)
, _corePlugin(NULL) , _corePlugin(NULL)
, _firmwarePluginManager(NULL) , _firmwarePluginManager(NULL)
, _settingsManager(NULL)
, _virtualTabletJoystick(false) , _virtualTabletJoystick(false)
, _baseFontPointSize(0.0) , _baseFontPointSize(0.0)
{ {
...@@ -67,6 +55,7 @@ QGroundControlQmlGlobal::~QGroundControlQmlGlobal() ...@@ -67,6 +55,7 @@ QGroundControlQmlGlobal::~QGroundControlQmlGlobal()
void QGroundControlQmlGlobal::setToolbox(QGCToolbox* toolbox) void QGroundControlQmlGlobal::setToolbox(QGCToolbox* toolbox)
{ {
QGCTool::setToolbox(toolbox); QGCTool::setToolbox(toolbox);
_flightMapSettings = toolbox->flightMapSettings(); _flightMapSettings = toolbox->flightMapSettings();
_linkManager = toolbox->linkManager(); _linkManager = toolbox->linkManager();
_multiVehicleManager = toolbox->multiVehicleManager(); _multiVehicleManager = toolbox->multiVehicleManager();
...@@ -77,6 +66,7 @@ void QGroundControlQmlGlobal::setToolbox(QGCToolbox* toolbox) ...@@ -77,6 +66,7 @@ void QGroundControlQmlGlobal::setToolbox(QGCToolbox* toolbox)
_mavlinkLogManager = toolbox->mavlinkLogManager(); _mavlinkLogManager = toolbox->mavlinkLogManager();
_corePlugin = toolbox->corePlugin(); _corePlugin = toolbox->corePlugin();
_firmwarePluginManager = toolbox->firmwarePluginManager(); _firmwarePluginManager = toolbox->firmwarePluginManager();
_settingsManager = toolbox->settingsManager();
} }
void QGroundControlQmlGlobal::saveGlobalSetting (const QString& key, const QString& value) void QGroundControlQmlGlobal::saveGlobalSetting (const QString& key, const QString& value)
...@@ -224,131 +214,6 @@ void QGroundControlQmlGlobal::setBaseFontPointSize(qreal size) ...@@ -224,131 +214,6 @@ void QGroundControlQmlGlobal::setBaseFontPointSize(qreal size)
} }
} }
SettingsFact* QGroundControlQmlGlobal::_createSettingsFact(const QString& name)
{
SettingsFact* fact;
FactMetaData* metaData = nameToMetaDataMap()[name];
fact = new SettingsFact(QString(), name, metaData->type(), metaData->rawDefaultValue());
fact->setMetaData(metaData);
return fact;
}
Fact* QGroundControlQmlGlobal::offlineEditingFirmwareType(void)
{
if (!_offlineEditingFirmwareTypeFact) {
_offlineEditingFirmwareTypeFact = _createSettingsFact(QStringLiteral("OfflineEditingFirmwareType"));
}
return _offlineEditingFirmwareTypeFact;
}
Fact* QGroundControlQmlGlobal::offlineEditingVehicleType(void)
{
if (!_offlineEditingVehicleTypeFact) {
_offlineEditingVehicleTypeFact = _createSettingsFact(QStringLiteral("OfflineEditingVehicleType"));
}
return _offlineEditingVehicleTypeFact;
}
Fact* QGroundControlQmlGlobal::offlineEditingCruiseSpeed(void)
{
if (!_offlineEditingCruiseSpeedFact) {
_offlineEditingCruiseSpeedFact = _createSettingsFact(QStringLiteral("OfflineEditingCruiseSpeed"));
}
return _offlineEditingCruiseSpeedFact;
}
Fact* QGroundControlQmlGlobal::offlineEditingHoverSpeed(void)
{
if (!_offlineEditingHoverSpeedFact) {
_offlineEditingHoverSpeedFact = _createSettingsFact(QStringLiteral("OfflineEditingHoverSpeed"));
}
return _offlineEditingHoverSpeedFact;
}
Fact* QGroundControlQmlGlobal::distanceUnits(void)
{
if (!_distanceUnitsFact) {
// Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
QStringList enumStrings;
QVariantList enumValues;
_distanceUnitsFact = new SettingsFact(QString(), "DistanceUnits", FactMetaData::valueTypeUint32, DistanceUnitsMeters);
_distanceUnitsMetaData = new FactMetaData(FactMetaData::valueTypeUint32);
enumStrings << "Feet" << "Meters";
enumValues << QVariant::fromValue((uint32_t)DistanceUnitsFeet) << QVariant::fromValue((uint32_t)DistanceUnitsMeters);
_distanceUnitsMetaData->setEnumInfo(enumStrings, enumValues);
_distanceUnitsFact->setMetaData(_distanceUnitsMetaData);
}
return _distanceUnitsFact;
}
Fact* QGroundControlQmlGlobal::areaUnits(void)
{
if (!_areaUnitsFact) {
// Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
QStringList enumStrings;
QVariantList enumValues;
_areaUnitsFact = new SettingsFact(QString(), "AreaUnits", FactMetaData::valueTypeUint32, AreaUnitsSquareMeters);
_areaUnitsMetaData = new FactMetaData(FactMetaData::valueTypeUint32);
enumStrings << "SquareFeet" << "SquareMeters" << "SquareKilometers" << "Hectares" << "Acres" << "SquareMiles";
enumValues << QVariant::fromValue((uint32_t)AreaUnitsSquareFeet) << QVariant::fromValue((uint32_t)AreaUnitsSquareMeters) << QVariant::fromValue((uint32_t)AreaUnitsSquareKilometers) << QVariant::fromValue((uint32_t)AreaUnitsHectares) << QVariant::fromValue((uint32_t)AreaUnitsAcres) << QVariant::fromValue((uint32_t)AreaUnitsSquareMiles);
_areaUnitsMetaData->setEnumInfo(enumStrings, enumValues);
_areaUnitsFact->setMetaData(_areaUnitsMetaData);
}
return _areaUnitsFact;
}
Fact* QGroundControlQmlGlobal::speedUnits(void)
{
if (!_speedUnitsFact) {
// Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
QStringList enumStrings;
QVariantList enumValues;
_speedUnitsFact = new SettingsFact(QString(), "SpeedUnits", FactMetaData::valueTypeUint32, SpeedUnitsMetersPerSecond);
_speedUnitsMetaData = new FactMetaData(FactMetaData::valueTypeUint32);
enumStrings << "Feet/second" << "Meters/second" << "Miles/hour" << "Kilometers/hour" << "Knots";
enumValues << QVariant::fromValue((uint32_t)SpeedUnitsFeetPerSecond) << QVariant::fromValue((uint32_t)SpeedUnitsMetersPerSecond) << QVariant::fromValue((uint32_t)SpeedUnitsMilesPerHour) << QVariant::fromValue((uint32_t)SpeedUnitsKilometersPerHour) << QVariant::fromValue((uint32_t)SpeedUnitsKnots);
_speedUnitsMetaData->setEnumInfo(enumStrings, enumValues);
_speedUnitsFact->setMetaData(_speedUnitsMetaData);
}
return _speedUnitsFact;
}
Fact* QGroundControlQmlGlobal::batteryPercentRemainingAnnounce(void)
{
if (!_batteryPercentRemainingAnnounceFact) {
_batteryPercentRemainingAnnounceFact = _createSettingsFact(QStringLiteral("batteryPercentRemainingAnnounce"));
}
return _batteryPercentRemainingAnnounceFact;
}
Fact* QGroundControlQmlGlobal::defaultMissionItemAltitude(void)
{
if (!_defaultMissionItemAltitudeFact) {
_defaultMissionItemAltitudeFact = _createSettingsFact(QStringLiteral("DefaultMissionItemAltitude"));
}
return _defaultMissionItemAltitudeFact;
}
int QGroundControlQmlGlobal::supportedFirmwareCount() int QGroundControlQmlGlobal::supportedFirmwareCount()
{ {
return _firmwarePluginManager->knownFirmwareTypes().count(); return _firmwarePluginManager->knownFirmwareTypes().count();
...@@ -363,16 +228,6 @@ bool QGroundControlQmlGlobal::linesIntersect(QPointF line1A, QPointF line1B, QPo ...@@ -363,16 +228,6 @@ bool QGroundControlQmlGlobal::linesIntersect(QPointF line1A, QPointF line1B, QPo
intersectPoint != line1A && intersectPoint != line1B; intersectPoint != line1A && intersectPoint != line1B;
} }
QMap<QString, FactMetaData*>& QGroundControlQmlGlobal::nameToMetaDataMap(void) {
static QMap<QString, FactMetaData*> map;
if (map.isEmpty()) {
map = FactMetaData::createMapFromJsonFile(":/json/QGroundControlQmlGlobal.json", NULL);
}
return map;
}
QString QGroundControlQmlGlobal::missionAutoLoadDir(void) QString QGroundControlQmlGlobal::missionAutoLoadDir(void)
{ {
QSettings settings; QSettings settings;
......
...@@ -37,32 +37,6 @@ public: ...@@ -37,32 +37,6 @@ public:
QGroundControlQmlGlobal(QGCApplication* app); QGroundControlQmlGlobal(QGCApplication* app);
~QGroundControlQmlGlobal(); ~QGroundControlQmlGlobal();
enum DistanceUnits {
DistanceUnitsFeet = 0,
DistanceUnitsMeters
};
enum AreaUnits {
AreaUnitsSquareFeet = 0,
AreaUnitsSquareMeters,
AreaUnitsSquareKilometers,
AreaUnitsHectares,
AreaUnitsAcres,
AreaUnitsSquareMiles,
};
enum SpeedUnits {
SpeedUnitsFeetPerSecond = 0,
SpeedUnitsMetersPerSecond,
SpeedUnitsMilesPerHour,
SpeedUnitsKilometersPerHour,
SpeedUnitsKnots,
};
Q_ENUMS(DistanceUnits)
Q_ENUMS(AreaUnits)
Q_ENUMS(SpeedUnits)
Q_PROPERTY(FlightMapSettings* flightMapSettings READ flightMapSettings CONSTANT) Q_PROPERTY(FlightMapSettings* flightMapSettings READ flightMapSettings CONSTANT)
Q_PROPERTY(LinkManager* linkManager READ linkManager CONSTANT) Q_PROPERTY(LinkManager* linkManager READ linkManager CONSTANT)
Q_PROPERTY(MultiVehicleManager* multiVehicleManager READ multiVehicleManager CONSTANT) Q_PROPERTY(MultiVehicleManager* multiVehicleManager READ multiVehicleManager CONSTANT)
...@@ -72,6 +46,9 @@ public: ...@@ -72,6 +46,9 @@ public:
Q_PROPERTY(VideoManager* videoManager READ videoManager CONSTANT) Q_PROPERTY(VideoManager* videoManager READ videoManager CONSTANT)
Q_PROPERTY(MAVLinkLogManager* mavlinkLogManager READ mavlinkLogManager CONSTANT) Q_PROPERTY(MAVLinkLogManager* mavlinkLogManager READ mavlinkLogManager CONSTANT)
Q_PROPERTY(QGCCorePlugin* corePlugin READ corePlugin CONSTANT) Q_PROPERTY(QGCCorePlugin* corePlugin READ corePlugin CONSTANT)
Q_PROPERTY(SettingsManager* settingsManager READ settingsManager CONSTANT)
Q_PROPERTY(int supportedFirmwareCount READ supportedFirmwareCount CONSTANT)
Q_PROPERTY(qreal zOrderTopMost READ zOrderTopMost CONSTANT) ///< z order for top most items, toolbar, main window sub view Q_PROPERTY(qreal zOrderTopMost READ zOrderTopMost CONSTANT) ///< z order for top most items, toolbar, main window sub view
Q_PROPERTY(qreal zOrderWidgets READ zOrderWidgets CONSTANT) ///< z order value to widgets, for example: zoom controls, hud widgetss Q_PROPERTY(qreal zOrderWidgets READ zOrderWidgets CONSTANT) ///< z order value to widgets, for example: zoom controls, hud widgetss
...@@ -91,17 +68,6 @@ public: ...@@ -91,17 +68,6 @@ public:
Q_PROPERTY(bool isVersionCheckEnabled READ isVersionCheckEnabled WRITE setIsVersionCheckEnabled NOTIFY isVersionCheckEnabledChanged) Q_PROPERTY(bool isVersionCheckEnabled READ isVersionCheckEnabled WRITE setIsVersionCheckEnabled NOTIFY isVersionCheckEnabledChanged)
Q_PROPERTY(int mavlinkSystemID READ mavlinkSystemID WRITE setMavlinkSystemID NOTIFY mavlinkSystemIDChanged) Q_PROPERTY(int mavlinkSystemID READ mavlinkSystemID WRITE setMavlinkSystemID NOTIFY mavlinkSystemIDChanged)
Q_PROPERTY(Fact* offlineEditingFirmwareType READ offlineEditingFirmwareType CONSTANT)
Q_PROPERTY(Fact* offlineEditingVehicleType READ offlineEditingVehicleType CONSTANT)
Q_PROPERTY(Fact* offlineEditingCruiseSpeed READ offlineEditingCruiseSpeed CONSTANT)
Q_PROPERTY(Fact* offlineEditingHoverSpeed READ offlineEditingHoverSpeed CONSTANT)
Q_PROPERTY(Fact* distanceUnits READ distanceUnits CONSTANT)
Q_PROPERTY(Fact* areaUnits READ areaUnits CONSTANT)
Q_PROPERTY(Fact* speedUnits READ speedUnits CONSTANT)
Q_PROPERTY(Fact* batteryPercentRemainingAnnounce READ batteryPercentRemainingAnnounce CONSTANT)
Q_PROPERTY(Fact* defaultMissionItemAltitude READ defaultMissionItemAltitude CONSTANT)
Q_PROPERTY(int supportedFirmwareCount READ supportedFirmwareCount CONSTANT)
Q_PROPERTY(QGeoCoordinate lastKnownHomePosition READ lastKnownHomePosition CONSTANT) Q_PROPERTY(QGeoCoordinate lastKnownHomePosition READ lastKnownHomePosition CONSTANT)
Q_PROPERTY(QGeoCoordinate flightMapPosition MEMBER _flightMapPosition NOTIFY flightMapPositionChanged) Q_PROPERTY(QGeoCoordinate flightMapPosition MEMBER _flightMapPosition NOTIFY flightMapPositionChanged)
Q_PROPERTY(double flightMapZoom MEMBER _flightMapZoom NOTIFY flightMapZoomChanged) Q_PROPERTY(double flightMapZoom MEMBER _flightMapZoom NOTIFY flightMapZoomChanged)
...@@ -163,19 +129,20 @@ public: ...@@ -163,19 +129,20 @@ public:
// Property accesors // Property accesors
FlightMapSettings* flightMapSettings () { return _flightMapSettings; } FlightMapSettings* flightMapSettings () { return _flightMapSettings; }
LinkManager* linkManager () { return _linkManager; } LinkManager* linkManager () { return _linkManager; }
MultiVehicleManager* multiVehicleManager () { return _multiVehicleManager; } MultiVehicleManager* multiVehicleManager () { return _multiVehicleManager; }
QGCMapEngineManager* mapEngineManager () { return _mapEngineManager; } QGCMapEngineManager* mapEngineManager () { return _mapEngineManager; }
QGCPositionManager* qgcPositionManger () { return _qgcPositionManager; } QGCPositionManager* qgcPositionManger () { return _qgcPositionManager; }
MissionCommandTree* missionCommandTree () { return _missionCommandTree; } MissionCommandTree* missionCommandTree () { return _missionCommandTree; }
VideoManager* videoManager () { return _videoManager; } VideoManager* videoManager () { return _videoManager; }
MAVLinkLogManager* mavlinkLogManager () { return _mavlinkLogManager; } MAVLinkLogManager* mavlinkLogManager () { return _mavlinkLogManager; }
QGCCorePlugin* corePlugin () { return _corePlugin; } QGCCorePlugin* corePlugin () { return _corePlugin; }
SettingsManager* settingsManager () { return _settingsManager; }
qreal zOrderTopMost () { return 1000; }
qreal zOrderWidgets () { return 100; } qreal zOrderTopMost () { return 1000; }
qreal zOrderMapItems () { return 50; } qreal zOrderWidgets () { return 100; }
qreal zOrderMapItems () { return 50; }
bool isDarkStyle () { return _app->styleIsDark(); } bool isDarkStyle () { return _app->styleIsDark(); }
bool isAudioMuted () { return _toolbox->audioOutput()->isMuted(); } bool isAudioMuted () { return _toolbox->audioOutput()->isMuted(); }
...@@ -189,16 +156,6 @@ public: ...@@ -189,16 +156,6 @@ public:
QGeoCoordinate lastKnownHomePosition() { return qgcApp()->lastKnownHomePosition(); } QGeoCoordinate lastKnownHomePosition() { return qgcApp()->lastKnownHomePosition(); }
static Fact* offlineEditingFirmwareType (void);
static Fact* offlineEditingVehicleType (void);
static Fact* offlineEditingCruiseSpeed (void);
static Fact* offlineEditingHoverSpeed (void);
static Fact* distanceUnits (void);
static Fact* areaUnits (void);
static Fact* speedUnits (void);
static Fact* batteryPercentRemainingAnnounce(void);
static Fact* defaultMissionItemAltitude (void);
int supportedFirmwareCount (); int supportedFirmwareCount ();
void setIsDarkStyle (bool dark); void setIsDarkStyle (bool dark);
...@@ -238,9 +195,6 @@ signals: ...@@ -238,9 +195,6 @@ signals:
void missionAutoLoadDirChanged (QString missionAutoLoadDir); void missionAutoLoadDirChanged (QString missionAutoLoadDir);
private: private:
static SettingsFact* _createSettingsFact(const QString& name);
static QMap<QString, FactMetaData*>& nameToMetaDataMap(void);
FlightMapSettings* _flightMapSettings; FlightMapSettings* _flightMapSettings;
LinkManager* _linkManager; LinkManager* _linkManager;
MultiVehicleManager* _multiVehicleManager; MultiVehicleManager* _multiVehicleManager;
...@@ -251,26 +205,13 @@ private: ...@@ -251,26 +205,13 @@ private:
MAVLinkLogManager* _mavlinkLogManager; MAVLinkLogManager* _mavlinkLogManager;
QGCCorePlugin* _corePlugin; QGCCorePlugin* _corePlugin;
FirmwarePluginManager* _firmwarePluginManager; FirmwarePluginManager* _firmwarePluginManager;
SettingsManager* _settingsManager;
bool _virtualTabletJoystick; bool _virtualTabletJoystick;
qreal _baseFontPointSize; qreal _baseFontPointSize;
QGeoCoordinate _flightMapPosition; QGeoCoordinate _flightMapPosition;
double _flightMapZoom; double _flightMapZoom;
// These are static so they are available to C++ code as well as Qml
static SettingsFact* _offlineEditingFirmwareTypeFact;
static SettingsFact* _offlineEditingVehicleTypeFact;
static SettingsFact* _offlineEditingCruiseSpeedFact;
static SettingsFact* _offlineEditingHoverSpeedFact;
static SettingsFact* _distanceUnitsFact;
static FactMetaData* _distanceUnitsMetaData;
static SettingsFact* _areaUnitsFact;
static FactMetaData* _areaUnitsMetaData;
static SettingsFact* _speedUnitsFact;
static FactMetaData* _speedUnitsMetaData;
static SettingsFact* _batteryPercentRemainingAnnounceFact;
static SettingsFact* _defaultMissionItemAltitudeFact;
static const char* _virtualTabletJoystickKey; static const char* _virtualTabletJoystickKey;
static const char* _baseFontPointSizeKey; static const char* _baseFontPointSizeKey;
static const char* _missionAutoLoadDirKey; static const char* _missionAutoLoadDirKey;
......
/****************************************************************************
*
* (c) 2009-2016 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.
*
****************************************************************************/
#include "SettingsManager.h"
#include "QGCApplication.h"
QGC_LOGGING_CATEGORY(SettingsManagerLog, "SettingsManagerLog")
const char* SettingsManager::offlineEditingFirmwareTypeSettingsName = "OfflineEditingFirmwareType";
const char* SettingsManager::offlineEditingVehicleTypeSettingsName = "OfflineEditingVehicleType";
const char* SettingsManager::offlineEditingCruiseSpeedSettingsName = "OfflineEditingCruiseSpeed";
const char* SettingsManager::offlineEditingHoverSpeedSettingsName = "OfflineEditingHoverSpeed";
const char* SettingsManager::distanceUnitsSettingsName = "DistanceUnits";
const char* SettingsManager::areaUnitsSettingsName = "AreaUnits";
const char* SettingsManager::speedUnitsSettingsName = "SpeedUnits";
const char* SettingsManager::batteryPercentRemainingAnnounceSettingsName = "batteryPercentRemainingAnnounce";
const char* SettingsManager::defaultMissionItemAltitudeSettingsName = "DefaultMissionItemAltitude";
SettingsManager::SettingsManager(QGCApplication* app)
: QGCTool(app)
, _offlineEditingFirmwareTypeFact(NULL)
, _offlineEditingVehicleTypeFact(NULL)
, _offlineEditingCruiseSpeedFact(NULL)
, _offlineEditingHoverSpeedFact(NULL)
, _distanceUnitsFact(NULL)
, _areaUnitsFact(NULL)
, _speedUnitsFact(NULL)
, _batteryPercentRemainingAnnounceFact(NULL)
, _defaultMissionItemAltitudeFact(NULL)
{
}
void SettingsManager::setToolbox(QGCToolbox *toolbox)
{
QGCTool::setToolbox(toolbox);
QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
qmlRegisterUncreatableType<SettingsManager>("QGroundControl.SettingsManager", 1, 0, "SettingsManager", "Reference only");
_nameToMetaDataMap = FactMetaData::createMapFromJsonFile(":/json/SettingsManager.json", this);
}
SettingsFact* SettingsManager::_createSettingsFact(const QString& name)
{
return new SettingsFact(QString() /* no settings group */, _nameToMetaDataMap[name], this);
}
Fact* SettingsManager::offlineEditingFirmwareType(void)
{
if (!_offlineEditingFirmwareTypeFact) {
_offlineEditingFirmwareTypeFact = _createSettingsFact(offlineEditingFirmwareTypeSettingsName);
}
return _offlineEditingFirmwareTypeFact;
}
Fact* SettingsManager::offlineEditingVehicleType(void)
{
if (!_offlineEditingVehicleTypeFact) {
_offlineEditingVehicleTypeFact = _createSettingsFact(offlineEditingVehicleTypeSettingsName);
}
return _offlineEditingVehicleTypeFact;
}
Fact* SettingsManager::offlineEditingCruiseSpeed(void)
{
if (!_offlineEditingCruiseSpeedFact) {
_offlineEditingCruiseSpeedFact = _createSettingsFact(offlineEditingCruiseSpeedSettingsName);
}
return _offlineEditingCruiseSpeedFact;
}
Fact* SettingsManager::offlineEditingHoverSpeed(void)
{
if (!_offlineEditingHoverSpeedFact) {
_offlineEditingHoverSpeedFact = _createSettingsFact(offlineEditingHoverSpeedSettingsName);
}
return _offlineEditingHoverSpeedFact;
}
Fact* SettingsManager::batteryPercentRemainingAnnounce(void)
{
if (!_batteryPercentRemainingAnnounceFact) {
_batteryPercentRemainingAnnounceFact = _createSettingsFact(batteryPercentRemainingAnnounceSettingsName);
}
return _batteryPercentRemainingAnnounceFact;
}
Fact* SettingsManager::defaultMissionItemAltitude(void)
{
if (!_defaultMissionItemAltitudeFact) {
_defaultMissionItemAltitudeFact = _createSettingsFact(defaultMissionItemAltitudeSettingsName);
}
return _defaultMissionItemAltitudeFact;
}
Fact* SettingsManager::distanceUnits(void)
{
if (!_distanceUnitsFact) {
// Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
QStringList enumStrings;
QVariantList enumValues;
enumStrings << "Feet" << "Meters";
enumValues << QVariant::fromValue((uint32_t)DistanceUnitsFeet) << QVariant::fromValue((uint32_t)DistanceUnitsMeters);
FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
metaData->setName(distanceUnitsSettingsName);
metaData->setEnumInfo(enumStrings, enumValues);
metaData->setRawDefaultValue(DistanceUnitsMeters);
_distanceUnitsFact = new SettingsFact(QString() /* no settings group */, metaData, this);
}
return _distanceUnitsFact;
}
Fact* SettingsManager::areaUnits(void)
{
if (!_areaUnitsFact) {
// Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
QStringList enumStrings;
QVariantList enumValues;
enumStrings << "SquareFeet" << "SquareMeters" << "SquareKilometers" << "Hectares" << "Acres" << "SquareMiles";
enumValues << QVariant::fromValue((uint32_t)AreaUnitsSquareFeet) << QVariant::fromValue((uint32_t)AreaUnitsSquareMeters) << QVariant::fromValue((uint32_t)AreaUnitsSquareKilometers) << QVariant::fromValue((uint32_t)AreaUnitsHectares) << QVariant::fromValue((uint32_t)AreaUnitsAcres) << QVariant::fromValue((uint32_t)AreaUnitsSquareMiles);
FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
metaData->setName(areaUnitsSettingsName);
metaData->setEnumInfo(enumStrings, enumValues);
metaData->setRawDefaultValue(AreaUnitsSquareMeters);
_areaUnitsFact = new SettingsFact(QString() /* no settings group */, metaData, this);
}
return _areaUnitsFact;
}
Fact* SettingsManager::speedUnits(void)
{
if (!_speedUnitsFact) {
// Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
QStringList enumStrings;
QVariantList enumValues;
enumStrings << "Feet/second" << "Meters/second" << "Miles/hour" << "Kilometers/hour" << "Knots";
enumValues << QVariant::fromValue((uint32_t)SpeedUnitsFeetPerSecond) << QVariant::fromValue((uint32_t)SpeedUnitsMetersPerSecond) << QVariant::fromValue((uint32_t)SpeedUnitsMilesPerHour) << QVariant::fromValue((uint32_t)SpeedUnitsKilometersPerHour) << QVariant::fromValue((uint32_t)SpeedUnitsKnots);
FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
metaData->setName(speedUnitsSettingsName);
metaData->setEnumInfo(enumStrings, enumValues);
metaData->setRawDefaultValue(SpeedUnitsMetersPerSecond);
_speedUnitsFact = new SettingsFact(QString() /* no settings group */, metaData, this);
}
return _speedUnitsFact;
}
/****************************************************************************
*
* (c) 2009-2016 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.
*
****************************************************************************/
#ifndef SettingsManager_H
#define SettingsManager_H
#include "QGCLoggingCategory.h"
#include "Joystick.h"
#include "MultiVehicleManager.h"
#include "QGCToolbox.h"
#include <QVariantList>
Q_DECLARE_LOGGING_CATEGORY(SettingsManagerLog)
/// Provides access to all app settings
class SettingsManager : public QGCTool
{
Q_OBJECT
public:
SettingsManager(QGCApplication* app);
enum DistanceUnits {
DistanceUnitsFeet = 0,
DistanceUnitsMeters
};
enum AreaUnits {
AreaUnitsSquareFeet = 0,
AreaUnitsSquareMeters,
AreaUnitsSquareKilometers,
AreaUnitsHectares,
AreaUnitsAcres,
AreaUnitsSquareMiles,
};
enum SpeedUnits {
SpeedUnitsFeetPerSecond = 0,
SpeedUnitsMetersPerSecond,
SpeedUnitsMilesPerHour,
SpeedUnitsKilometersPerHour,
SpeedUnitsKnots,
};
Q_ENUMS(DistanceUnits)
Q_ENUMS(AreaUnits)
Q_ENUMS(SpeedUnits)
Q_PROPERTY(Fact* offlineEditingFirmwareType READ offlineEditingFirmwareType CONSTANT)
Q_PROPERTY(Fact* offlineEditingVehicleType READ offlineEditingVehicleType CONSTANT)
Q_PROPERTY(Fact* offlineEditingCruiseSpeed READ offlineEditingCruiseSpeed CONSTANT)
Q_PROPERTY(Fact* offlineEditingHoverSpeed READ offlineEditingHoverSpeed CONSTANT)
Q_PROPERTY(Fact* distanceUnits READ distanceUnits CONSTANT)
Q_PROPERTY(Fact* areaUnits READ areaUnits CONSTANT)
Q_PROPERTY(Fact* speedUnits READ speedUnits CONSTANT)
Q_PROPERTY(Fact* batteryPercentRemainingAnnounce READ batteryPercentRemainingAnnounce CONSTANT)
Q_PROPERTY(Fact* defaultMissionItemAltitude READ defaultMissionItemAltitude CONSTANT)
Fact* offlineEditingFirmwareType (void);
Fact* offlineEditingVehicleType (void);
Fact* offlineEditingCruiseSpeed (void);
Fact* offlineEditingHoverSpeed (void);
Fact* distanceUnits (void);
Fact* areaUnits (void);
Fact* speedUnits (void);
Fact* batteryPercentRemainingAnnounce(void);
Fact* defaultMissionItemAltitude (void);
// Override from QGCTool
virtual void setToolbox(QGCToolbox *toolbox);
static const char* offlineEditingFirmwareTypeSettingsName;
static const char* offlineEditingVehicleTypeSettingsName;
static const char* offlineEditingCruiseSpeedSettingsName;
static const char* offlineEditingHoverSpeedSettingsName;
static const char* distanceUnitsSettingsName;
static const char* areaUnitsSettingsName;
static const char* speedUnitsSettingsName;
static const char* batteryPercentRemainingAnnounceSettingsName;
static const char* defaultMissionItemAltitudeSettingsName;
public slots:
signals:
private slots:
private:
SettingsFact* _createSettingsFact(const QString& name);
QMap<QString, FactMetaData*> _nameToMetaDataMap;
SettingsFact* _offlineEditingFirmwareTypeFact;
SettingsFact* _offlineEditingVehicleTypeFact;
SettingsFact* _offlineEditingCruiseSpeedFact;
SettingsFact* _offlineEditingHoverSpeedFact;
SettingsFact* _distanceUnitsFact;
SettingsFact* _areaUnitsFact;
SettingsFact* _speedUnitsFact;
SettingsFact* _batteryPercentRemainingAnnounceFact;
SettingsFact* _defaultMissionItemAltitudeFact;
};
#endif
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "FollowMe.h" #include "FollowMe.h"
#include "QGroundControlQmlGlobal.h" #include "QGroundControlQmlGlobal.h"
#include "ParameterManager.h" #include "ParameterManager.h"
#include "SettingsManager.h"
#if defined (__ios__) || defined(__android__) #if defined (__ios__) || defined(__android__)
#include "MobileScreenMgr.h" #include "MobileScreenMgr.h"
...@@ -62,8 +63,9 @@ void MultiVehicleManager::setToolbox(QGCToolbox *toolbox) ...@@ -62,8 +63,9 @@ void MultiVehicleManager::setToolbox(QGCToolbox *toolbox)
connect(_mavlinkProtocol, &MAVLinkProtocol::vehicleHeartbeatInfo, this, &MultiVehicleManager::_vehicleHeartbeatInfo); connect(_mavlinkProtocol, &MAVLinkProtocol::vehicleHeartbeatInfo, this, &MultiVehicleManager::_vehicleHeartbeatInfo);
_offlineEditingVehicle = new Vehicle(static_cast<MAV_AUTOPILOT>(QGroundControlQmlGlobal::offlineEditingFirmwareType()->rawValue().toInt()), SettingsManager* settingsManager = toolbox->settingsManager();
static_cast<MAV_TYPE>(QGroundControlQmlGlobal::offlineEditingVehicleType()->rawValue().toInt()), _offlineEditingVehicle = new Vehicle(static_cast<MAV_AUTOPILOT>(settingsManager->offlineEditingFirmwareType()->rawValue().toInt()),
static_cast<MAV_TYPE>(settingsManager->offlineEditingVehicleType()->rawValue().toInt()),
_firmwarePluginManager, _firmwarePluginManager,
this); this);
} }
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "FollowMe.h" #include "FollowMe.h"
#include "MissionCommandTree.h" #include "MissionCommandTree.h"
#include "QGroundControlQmlGlobal.h" #include "QGroundControlQmlGlobal.h"
#include "SettingsManager.h"
QGC_LOGGING_CATEGORY(VehicleLog, "VehicleLog") QGC_LOGGING_CATEGORY(VehicleLog, "VehicleLog")
...@@ -75,6 +76,7 @@ Vehicle::Vehicle(LinkInterface* link, ...@@ -75,6 +76,7 @@ Vehicle::Vehicle(LinkInterface* link,
, _autopilotPlugin(NULL) , _autopilotPlugin(NULL)
, _mavlink(NULL) , _mavlink(NULL)
, _soloFirmware(false) , _soloFirmware(false)
, _settingsManager(qgcApp()->toolbox()->settingsManager())
, _joystickMode(JoystickModeRC) , _joystickMode(JoystickModeRC)
, _joystickEnabled(false) , _joystickEnabled(false)
, _uas(NULL) , _uas(NULL)
...@@ -99,8 +101,8 @@ Vehicle::Vehicle(LinkInterface* link, ...@@ -99,8 +101,8 @@ Vehicle::Vehicle(LinkInterface* link,
, _onboardControlSensorsUnhealthy(0) , _onboardControlSensorsUnhealthy(0)
, _gpsRawIntMessageAvailable(false) , _gpsRawIntMessageAvailable(false)
, _globalPositionIntMessageAvailable(false) , _globalPositionIntMessageAvailable(false)
, _cruiseSpeed(QGroundControlQmlGlobal::offlineEditingCruiseSpeed()->rawValue().toDouble()) , _cruiseSpeed(_settingsManager->offlineEditingCruiseSpeed()->rawValue().toDouble())
, _hoverSpeed(QGroundControlQmlGlobal::offlineEditingHoverSpeed()->rawValue().toDouble()) , _hoverSpeed(_settingsManager->offlineEditingHoverSpeed()->rawValue().toDouble())
, _telemetryRRSSI(0) , _telemetryRRSSI(0)
, _telemetryLRSSI(0) , _telemetryLRSSI(0)
, _telemetryRXErrors(0) , _telemetryRXErrors(0)
...@@ -231,6 +233,9 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType, ...@@ -231,6 +233,9 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
, _firmwarePlugin(NULL) , _firmwarePlugin(NULL)
, _firmwarePluginInstanceData(NULL) , _firmwarePluginInstanceData(NULL)
, _autopilotPlugin(NULL) , _autopilotPlugin(NULL)
, _mavlink(NULL)
, _soloFirmware(false)
, _settingsManager(qgcApp()->toolbox()->settingsManager())
, _joystickMode(JoystickModeRC) , _joystickMode(JoystickModeRC)
, _joystickEnabled(false) , _joystickEnabled(false)
, _uas(NULL) , _uas(NULL)
...@@ -255,8 +260,8 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType, ...@@ -255,8 +260,8 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
, _onboardControlSensorsUnhealthy(0) , _onboardControlSensorsUnhealthy(0)
, _gpsRawIntMessageAvailable(false) , _gpsRawIntMessageAvailable(false)
, _globalPositionIntMessageAvailable(false) , _globalPositionIntMessageAvailable(false)
, _cruiseSpeed(QGroundControlQmlGlobal::offlineEditingCruiseSpeed()->rawValue().toDouble()) , _cruiseSpeed(_settingsManager->offlineEditingCruiseSpeed()->rawValue().toDouble())
, _hoverSpeed(QGroundControlQmlGlobal::offlineEditingHoverSpeed()->rawValue().toDouble()) , _hoverSpeed(_settingsManager->offlineEditingHoverSpeed()->rawValue().toDouble())
, _connectionLost(false) , _connectionLost(false)
, _connectionLostEnabled(true) , _connectionLostEnabled(true)
, _missionManager(NULL) , _missionManager(NULL)
...@@ -318,10 +323,10 @@ void Vehicle::_commonInit(void) ...@@ -318,10 +323,10 @@ void Vehicle::_commonInit(void)
connect(_rallyPointManager, &RallyPointManager::error, this, &Vehicle::_rallyPointManagerError); connect(_rallyPointManager, &RallyPointManager::error, this, &Vehicle::_rallyPointManagerError);
// Offline editing vehicle tracks settings changes for offline editing settings // Offline editing vehicle tracks settings changes for offline editing settings
connect(QGroundControlQmlGlobal::offlineEditingFirmwareType(), &Fact::rawValueChanged, this, &Vehicle::_offlineFirmwareTypeSettingChanged); connect(_settingsManager->offlineEditingFirmwareType(), &Fact::rawValueChanged, this, &Vehicle::_offlineFirmwareTypeSettingChanged);
connect(QGroundControlQmlGlobal::offlineEditingVehicleType(), &Fact::rawValueChanged, this, &Vehicle::_offlineVehicleTypeSettingChanged); connect(_settingsManager->offlineEditingVehicleType(), &Fact::rawValueChanged, this, &Vehicle::_offlineVehicleTypeSettingChanged);
connect(QGroundControlQmlGlobal::offlineEditingCruiseSpeed(), &Fact::rawValueChanged, this, &Vehicle::_offlineCruiseSpeedSettingChanged); connect(_settingsManager->offlineEditingCruiseSpeed(), &Fact::rawValueChanged, this, &Vehicle::_offlineCruiseSpeedSettingChanged);
connect(QGroundControlQmlGlobal::offlineEditingHoverSpeed(), &Fact::rawValueChanged, this, &Vehicle::_offlineHoverSpeedSettingChanged); connect(_settingsManager->offlineEditingHoverSpeed(), &Fact::rawValueChanged, this, &Vehicle::_offlineHoverSpeedSettingChanged);
// Build FactGroup object model // Build FactGroup object model
...@@ -786,7 +791,7 @@ void Vehicle::_handleSysStatus(mavlink_message_t& message) ...@@ -786,7 +791,7 @@ void Vehicle::_handleSysStatus(mavlink_message_t& message)
} }
_batteryFactGroup.percentRemaining()->setRawValue(sysStatus.battery_remaining); _batteryFactGroup.percentRemaining()->setRawValue(sysStatus.battery_remaining);
if (sysStatus.battery_remaining > 0 && sysStatus.battery_remaining < QGroundControlQmlGlobal::batteryPercentRemainingAnnounce()->rawValue().toInt()) { if (sysStatus.battery_remaining > 0 && sysStatus.battery_remaining < _settingsManager->batteryPercentRemainingAnnounce()->rawValue().toInt()) {
if (!_lowBatteryAnnounceTimer.isValid() || _lowBatteryAnnounceTimer.elapsed() > _lowBatteryAnnounceRepeatMSecs) { if (!_lowBatteryAnnounceTimer.isValid() || _lowBatteryAnnounceTimer.elapsed() > _lowBatteryAnnounceRepeatMSecs) {
_lowBatteryAnnounceTimer.restart(); _lowBatteryAnnounceTimer.restart();
_say(QString("%1 low battery: %2 percent remaining").arg(_vehicleIdSpeech()).arg(sysStatus.battery_remaining)); _say(QString("%1 low battery: %2 percent remaining").arg(_vehicleIdSpeech()).arg(sysStatus.battery_remaining));
......
...@@ -37,6 +37,7 @@ class RallyPointManager; ...@@ -37,6 +37,7 @@ class RallyPointManager;
class ParameterManager; class ParameterManager;
class JoystickManager; class JoystickManager;
class UASMessage; class UASMessage;
class SettingsManager;
Q_DECLARE_LOGGING_CATEGORY(VehicleLog) Q_DECLARE_LOGGING_CATEGORY(VehicleLog)
...@@ -775,6 +776,7 @@ private: ...@@ -775,6 +776,7 @@ private:
AutoPilotPlugin* _autopilotPlugin; AutoPilotPlugin* _autopilotPlugin;
MAVLinkProtocol* _mavlink; MAVLinkProtocol* _mavlink;
bool _soloFirmware; bool _soloFirmware;
SettingsManager* _settingsManager;
QList<LinkInterface*> _links; QList<LinkInterface*> _links;
......
...@@ -139,3 +139,10 @@ QGCOptions* QGCCorePlugin::options() ...@@ -139,3 +139,10 @@ QGCOptions* QGCCorePlugin::options()
return _p->defaultOptions; return _p->defaultOptions;
} }
QVariant QGCCorePlugin::overrideSettingsDefault(QString name, QVariant defaultValue)
{
Q_UNUSED(name);
// No overrides for base plugin
return defaultValue;
}
...@@ -54,6 +54,12 @@ public: ...@@ -54,6 +54,12 @@ public:
*/ */
virtual QGCOptions* options (); virtual QGCOptions* options ();
/// Allows the core plugin to override the default value for the specified setting
/// @param name - Setting name
/// @param defaultValue - Standard default value for setting
/// @return New default value for setting, if no override just return passed in defaultValue
virtual QVariant overrideSettingsDefault(QString name, QVariant defaultValue);
// Override from QGCTool // Override from QGCTool
void setToolbox (QGCToolbox *toolbox); void setToolbox (QGCToolbox *toolbox);
private: private:
......
...@@ -23,6 +23,7 @@ import QGroundControl.ScreenTools 1.0 ...@@ -23,6 +23,7 @@ import QGroundControl.ScreenTools 1.0
import QGroundControl.MultiVehicleManager 1.0 import QGroundControl.MultiVehicleManager 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
import QGroundControl.Controllers 1.0 import QGroundControl.Controllers 1.0
import QGroundControl.SettingsManager 1.0
QGCView { QGCView {
id: qgcView id: qgcView
...@@ -31,7 +32,7 @@ QGCView { ...@@ -31,7 +32,7 @@ QGCView {
anchors.fill: parent anchors.fill: parent
anchors.margins: ScreenTools.defaultFontPixelWidth anchors.margins: ScreenTools.defaultFontPixelWidth
property Fact _percentRemainingAnnounce: QGroundControl.batteryPercentRemainingAnnounce property Fact _percentRemainingAnnounce: QGroundControl.settingsManager.batteryPercentRemainingAnnounce
property real _labelWidth: ScreenTools.defaultFontPixelWidth * 15 property real _labelWidth: ScreenTools.defaultFontPixelWidth * 15
property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 30 property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 30
...@@ -93,7 +94,7 @@ QGCView { ...@@ -93,7 +94,7 @@ QGCView {
FactComboBox { FactComboBox {
id: distanceUnitsCombo id: distanceUnitsCombo
width: _editFieldWidth width: _editFieldWidth
fact: QGroundControl.distanceUnits fact: QGroundControl.settingsManager.distanceUnits
indexModel: false indexModel: false
} }
} }
...@@ -107,7 +108,7 @@ QGCView { ...@@ -107,7 +108,7 @@ QGCView {
FactComboBox { FactComboBox {
id: areaUnitsCombo id: areaUnitsCombo
width: _editFieldWidth width: _editFieldWidth
fact: QGroundControl.areaUnits fact: QGroundControl.settingsManager.areaUnits
indexModel: false indexModel: false
} }
} }
...@@ -121,7 +122,7 @@ QGCView { ...@@ -121,7 +122,7 @@ QGCView {
FactComboBox { FactComboBox {
id: speedUnitsCombo id: speedUnitsCombo
width: _editFieldWidth width: _editFieldWidth
fact: QGroundControl.speedUnits fact: QGroundControl.settingsManager.speedUnits
indexModel: false indexModel: false
} }
} }
...@@ -326,7 +327,7 @@ QGCView { ...@@ -326,7 +327,7 @@ QGCView {
} }
FactTextField { FactTextField {
id: defaultItemAltitudeField id: defaultItemAltitudeField
fact: QGroundControl.defaultMissionItemAltitude fact: QGroundControl.settingsManager.defaultMissionItemAltitude
} }
} }
//----------------------------------------------------------------- //-----------------------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment