27 changed files with 482 additions and 349 deletions
@ -0,0 +1,170 @@
@@ -0,0 +1,170 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (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; |
||||
} |
@ -0,0 +1,112 @@
@@ -0,0 +1,112 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (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 |
Loading…
Reference in new issue