diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc index 99f385f4a1c3fa850e81a3fbed5348e043b0e8fc..0aca011312dce80e73bffeb7b1e1b71cf28eedd5 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.cc +++ b/src/QmlControls/QGroundControlQmlGlobal.cc @@ -19,18 +19,20 @@ static const char* kQmlGlobalKeyName = "QGCQml"; -SettingsFact* QGroundControlQmlGlobal::_offlineEditingFirmwareTypeFact = NULL; -FactMetaData* QGroundControlQmlGlobal::_offlineEditingFirmwareTypeMetaData = NULL; -SettingsFact* QGroundControlQmlGlobal::_offlineEditingVehicleTypeFact = NULL; -FactMetaData* QGroundControlQmlGlobal::_offlineEditingVehicleTypeMetaData = NULL; -SettingsFact* QGroundControlQmlGlobal::_offlineEditingCruiseSpeedFact = NULL; -SettingsFact* QGroundControlQmlGlobal::_offlineEditingHoverSpeedFact = NULL; -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; +FactMetaData* QGroundControlQmlGlobal::_offlineEditingFirmwareTypeMetaData = NULL; +SettingsFact* QGroundControlQmlGlobal::_offlineEditingVehicleTypeFact = NULL; +FactMetaData* QGroundControlQmlGlobal::_offlineEditingVehicleTypeMetaData = NULL; +SettingsFact* QGroundControlQmlGlobal::_offlineEditingCruiseSpeedFact = NULL; +SettingsFact* QGroundControlQmlGlobal::_offlineEditingHoverSpeedFact = NULL; +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::_batteryPercentRemainingAnnounceFact = NULL; +FactMetaData* QGroundControlQmlGlobal::_batteryPercentRemainingAnnounceMetaData = NULL; const char* QGroundControlQmlGlobal::_virtualTabletJoystickKey = "VirtualTabletJoystick"; const char* QGroundControlQmlGlobal::_baseFontPointSizeKey = "BaseDeviceFontPointSize"; @@ -340,6 +342,27 @@ Fact* QGroundControlQmlGlobal::speedUnits(void) return _speedUnitsFact; } +Fact* QGroundControlQmlGlobal::batteryPercentRemainingAnnounce(void) +{ + if (!_batteryPercentRemainingAnnounceFact) { + QStringList enumStrings; + QVariantList enumValues; + + _batteryPercentRemainingAnnounceFact = new SettingsFact(QString(), "batteryPercentRemainingAnnounce", FactMetaData::valueTypeUint32, 30); + _batteryPercentRemainingAnnounceMetaData = new FactMetaData(FactMetaData::valueTypeUint32); + + _batteryPercentRemainingAnnounceMetaData->setDecimalPlaces(0); + _batteryPercentRemainingAnnounceMetaData->setShortDescription(tr("Percent announce")); + _batteryPercentRemainingAnnounceMetaData->setRawUnits("%"); + _batteryPercentRemainingAnnounceMetaData->setRawMin(0); + _batteryPercentRemainingAnnounceMetaData->setRawMax(100); + + _batteryPercentRemainingAnnounceFact->setMetaData(_batteryPercentRemainingAnnounceMetaData); + } + + return _batteryPercentRemainingAnnounceFact; +} + bool QGroundControlQmlGlobal::linesIntersect(QPointF line1A, QPointF line1B, QPointF line2A, QPointF line2B) { QPointF intersectPoint; diff --git a/src/QmlControls/QGroundControlQmlGlobal.h b/src/QmlControls/QGroundControlQmlGlobal.h index 5fd305cea03b582ff810daab15efbcbf16eb737b..dc7eb2b713794ed14eaa4c794017fb34387059e5 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.h +++ b/src/QmlControls/QGroundControlQmlGlobal.h @@ -90,13 +90,14 @@ public: Q_PROPERTY(bool isVersionCheckEnabled READ isVersionCheckEnabled WRITE setIsVersionCheckEnabled NOTIFY isVersionCheckEnabledChanged) 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* 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(QGeoCoordinate lastKnownHomePosition READ lastKnownHomePosition CONSTANT) Q_PROPERTY(QGeoCoordinate flightMapPosition MEMBER _flightMapPosition NOTIFY flightMapPositionChanged) @@ -182,13 +183,14 @@ public: 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* 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); //-- TODO: Make this into an actual preference. bool isAdvancedMode () { return false; } @@ -251,6 +253,8 @@ private: static FactMetaData* _areaUnitsMetaData; static SettingsFact* _speedUnitsFact; static FactMetaData* _speedUnitsMetaData; + static SettingsFact* _batteryPercentRemainingAnnounceFact; + static FactMetaData* _batteryPercentRemainingAnnounceMetaData; static const char* _virtualTabletJoystickKey; static const char* _baseFontPointSizeKey; diff --git a/src/Vehicle/BatteryFact.json b/src/Vehicle/BatteryFact.json index 484aa240f8e367fefbeb2c464f479f26aaf6358a..3c3b861336c04dbbdc2a1f72a19207e012d8d9e2 100644 --- a/src/Vehicle/BatteryFact.json +++ b/src/Vehicle/BatteryFact.json @@ -16,16 +16,6 @@ "decimalPlaces": 0, "units": "%" }, - { - "name": "percentRemainingAnnounce", - "shortDescription": "Percent announce", - "type": "int32", - "decimalPlaces": 0, - "units": "%", - "defaultValue": 30, - "min": 0, - "max": 100 - }, { "name": "mahConsumed", "shortDescription": "Consumed", diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index e4529b4e68f477f2c78ef2f68debcd942c21b19d..09fe5f613678f888c7eeab895749ed21034bd250 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -24,6 +24,7 @@ #include "GAudioOutput.h" #include "FollowMe.h" #include "MissionCommandTree.h" +#include "QGroundControlQmlGlobal.h" QGC_LOGGING_CATEGORY(VehicleLog, "VehicleLog") @@ -585,7 +586,7 @@ void Vehicle::_handleSysStatus(mavlink_message_t& message) } _batteryFactGroup.percentRemaining()->setRawValue(sysStatus.battery_remaining); - if (sysStatus.battery_remaining > 0 && sysStatus.battery_remaining < _batteryFactGroup.percentRemainingAnnounce()->rawValue().toInt()) { + if (sysStatus.battery_remaining > 0 && sysStatus.battery_remaining < QGroundControlQmlGlobal::batteryPercentRemainingAnnounce()->rawValue().toInt()) { if (!_lowBatteryAnnounceTimer.isValid() || _lowBatteryAnnounceTimer.elapsed() > _lowBatteryAnnounceRepeatMSecs) { _lowBatteryAnnounceTimer.restart(); _say(QString("%1 low battery: %2 percent remaining").arg(_vehicleIdSpeech()).arg(sysStatus.battery_remaining)); @@ -1891,14 +1892,12 @@ void VehicleGPSFactGroup::_setSatLoc(UASInterface*, int fix) const char* VehicleBatteryFactGroup::_voltageFactName = "voltage"; const char* VehicleBatteryFactGroup::_percentRemainingFactName = "percentRemaining"; -const char* VehicleBatteryFactGroup::_percentRemainingAnnounceFactName = "percentRemainingAnnounce"; const char* VehicleBatteryFactGroup::_mahConsumedFactName = "mahConsumed"; const char* VehicleBatteryFactGroup::_currentFactName = "current"; const char* VehicleBatteryFactGroup::_temperatureFactName = "temperature"; const char* VehicleBatteryFactGroup::_cellCountFactName = "cellCount"; const char* VehicleBatteryFactGroup::_settingsGroup = "Vehicle.battery"; -const int VehicleBatteryFactGroup::_percentRemainingAnnounceDefault = 30; const double VehicleBatteryFactGroup::_voltageUnavailable = -1.0; const int VehicleBatteryFactGroup::_percentRemainingUnavailable = -1; @@ -1907,8 +1906,6 @@ const int VehicleBatteryFactGroup::_currentUnavailable = -1; const double VehicleBatteryFactGroup::_temperatureUnavailable = -1.0; const int VehicleBatteryFactGroup::_cellCountUnavailable = -1.0; -SettingsFact* VehicleBatteryFactGroup::_percentRemainingAnnounceFact = NULL; - VehicleBatteryFactGroup::VehicleBatteryFactGroup(QObject* parent) : FactGroup(1000, ":/json/Vehicle/BatteryFact.json", parent) , _vehicle(NULL) @@ -1921,7 +1918,6 @@ VehicleBatteryFactGroup::VehicleBatteryFactGroup(QObject* parent) { _addFact(&_voltageFact, _voltageFactName); _addFact(&_percentRemainingFact, _percentRemainingFactName); - _addFact(percentRemainingAnnounce(), _percentRemainingAnnounceFactName); _addFact(&_mahConsumedFact, _mahConsumedFactName); _addFact(&_currentFact, _currentFactName); _addFact(&_temperatureFact, _temperatureFactName); @@ -1941,14 +1937,6 @@ void VehicleBatteryFactGroup::setVehicle(Vehicle* vehicle) _vehicle = vehicle; } -Fact* VehicleBatteryFactGroup::percentRemainingAnnounce(void) -{ - if (!_percentRemainingAnnounceFact) { - _percentRemainingAnnounceFact = new SettingsFact(_settingsGroup, _percentRemainingAnnounceFactName, FactMetaData::valueTypeInt32, _percentRemainingAnnounceDefault); - } - return _percentRemainingAnnounceFact; -} - const char* VehicleWindFactGroup::_directionFactName = "direction"; const char* VehicleWindFactGroup::_speedFactName = "speed"; const char* VehicleWindFactGroup::_verticalSpeedFactName = "verticalSpeed"; diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index 006e0e584ed9bf6be150075c62fb6fdf9426c4d8..7dce83d5a4a6213a203cf70fecd9d8ac40de35ee 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -166,12 +166,8 @@ public: Q_PROPERTY(Fact* temperature READ temperature CONSTANT) Q_PROPERTY(Fact* cellCount READ cellCount CONSTANT) - /// If percentRemaining falls below this value, warning will be output through speech - Q_PROPERTY(Fact* percentRemainingAnnounce READ percentRemainingAnnounce CONSTANT) - Fact* voltage (void) { return &_voltageFact; } Fact* percentRemaining (void) { return &_percentRemainingFact; } - Fact* percentRemainingAnnounce (void); Fact* mahConsumed (void) { return &_mahConsumedFact; } Fact* current (void) { return &_currentFact; } Fact* temperature (void) { return &_temperatureFact; } @@ -182,14 +178,12 @@ public: static const char* _voltageFactName; static const char* _percentRemainingFactName; - static const char* _percentRemainingAnnounceFactName; static const char* _mahConsumedFactName; static const char* _currentFactName; static const char* _temperatureFactName; static const char* _cellCountFactName; static const char* _settingsGroup; - static const int _percentRemainingAnnounceDefault; static const double _voltageUnavailable; static const int _percentRemainingUnavailable; @@ -206,10 +200,6 @@ private: Fact _currentFact; Fact _temperatureFact; Fact _cellCountFact; - - /// This fact is global to all Vehicles. We must allocated the first time we need it so we don't - /// run into QSettings application setup ordering issues. - static SettingsFact* _percentRemainingAnnounceFact; }; class Vehicle : public FactGroup diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index 152e33b244249b1f00f751c85042963b05f916f6..e2f8637fda64d34cc8c3d9476e8cc80eecea4460 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -28,7 +28,7 @@ QGCView { anchors.fill: parent anchors.margins: ScreenTools.defaultFontPixelWidth - property Fact _percentRemainingAnnounce: QGroundControl.multiVehicleManager.disconnectedVehicle.battery.percentRemainingAnnounce + property Fact _percentRemainingAnnounce: QGroundControl.batteryPercentRemainingAnnounce property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 15 QGCPalette { id: qgcPal }