Commit 70d225be authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #3957 from DonLakeFlyer/BatteryCrash

Move battery.percentRemainingAnnounce to Qml Global
parents bd4b7e25 93b51393
......@@ -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;
......
......@@ -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;
......
......@@ -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",
......
......@@ -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";
......
......@@ -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
......
......@@ -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 }
......
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