From 61940fbd9e3fb6f74b214294baea715aedf9a11a Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Fri, 19 Aug 2016 19:10:23 -0700 Subject: [PATCH] Merge pull request #3957 from DonLakeFlyer/BatteryCrash Move battery.percentRemainingAnnounce to Qml Global --- src/QmlControls/QGroundControlQmlGlobal.cc | 23 ++++++++++++++++++++++ src/QmlControls/QGroundControlQmlGlobal.h | 4 ++++ src/Vehicle/BatteryFact.json | 10 ---------- src/Vehicle/Vehicle.cc | 16 ++------------- src/Vehicle/Vehicle.h | 10 ---------- src/ui/preferences/GeneralSettings.qml | 2 +- 6 files changed, 30 insertions(+), 35 deletions(-) diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc index 264b5f7e6..b7b7ebd75 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.cc +++ b/src/QmlControls/QGroundControlQmlGlobal.cc @@ -23,6 +23,8 @@ SettingsFact* QGroundControlQmlGlobal::_distanceUnitsFact = FactMetaData* QGroundControlQmlGlobal::_distanceUnitsMetaData = 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"; @@ -279,3 +281,24 @@ 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; +} diff --git a/src/QmlControls/QGroundControlQmlGlobal.h b/src/QmlControls/QGroundControlQmlGlobal.h index dd09600ea..600d8a1d7 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.h +++ b/src/QmlControls/QGroundControlQmlGlobal.h @@ -84,6 +84,7 @@ public: Q_PROPERTY(Fact* offlineEditingFirmwareType READ offlineEditingFirmwareType CONSTANT) Q_PROPERTY(Fact* distanceUnits READ distanceUnits 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) @@ -163,6 +164,7 @@ public: static Fact* offlineEditingFirmwareType (void); static Fact* distanceUnits (void); static Fact* speedUnits (void); + static Fact* batteryPercentRemainingAnnounce(void); //-- TODO: Make this into an actual preference. bool isAdvancedMode () { return false; } @@ -223,6 +225,8 @@ private: static FactMetaData* _distanceUnitsMetaData; 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 484aa240f..3c3b86133 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 4ba474a08..9b70b930d 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -23,6 +23,7 @@ #include "QGCImageProvider.h" #include "GAudioOutput.h" #include "FollowMe.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)); @@ -1823,14 +1824,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; @@ -1839,8 +1838,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) @@ -1853,7 +1850,6 @@ VehicleBatteryFactGroup::VehicleBatteryFactGroup(QObject* parent) { _addFact(&_voltageFact, _voltageFactName); _addFact(&_percentRemainingFact, _percentRemainingFactName); - _addFact(percentRemainingAnnounce(), _percentRemainingAnnounceFactName); _addFact(&_mahConsumedFact, _mahConsumedFactName); _addFact(&_currentFact, _currentFactName); _addFact(&_temperatureFact, _temperatureFactName); @@ -1873,14 +1869,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 ebc398bdf..771985b86 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 9a3e5dfc8..418016146 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 } -- 2.22.0