diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index e0032af26c3c623434d4c3c6e733f26e2d990ef3..6adc4c788cda3ecbc0ad8106354a71884abe460e 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -1449,7 +1449,7 @@ const int VehicleBatteryFactGroup::_currentUnavailable = -1; const double VehicleBatteryFactGroup::_temperatureUnavailable = -1.0; const int VehicleBatteryFactGroup::_cellCountUnavailable = -1.0; -SettingsFact VehicleBatteryFactGroup::_percentRemainingAnnounceFact (_settingsGroup, _percentRemainingAnnounceFactName, FactMetaData::valueTypeInt32, _percentRemainingAnnounceDefault); +SettingsFact* VehicleBatteryFactGroup::_percentRemainingAnnounceFact = NULL; VehicleBatteryFactGroup::VehicleBatteryFactGroup(QObject* parent) : FactGroup(1000, ":/json/Vehicle/BatteryFact.json", parent) @@ -1461,13 +1461,13 @@ VehicleBatteryFactGroup::VehicleBatteryFactGroup(QObject* parent) , _temperatureFact (0, _temperatureFactName, FactMetaData::valueTypeDouble) , _cellCountFact (0, _cellCountFactName, FactMetaData::valueTypeInt32) { - _addFact(&_voltageFact, _voltageFactName); - _addFact(&_percentRemainingFact, _percentRemainingFactName); - _addFact(&_percentRemainingAnnounceFact, _percentRemainingAnnounceFactName); - _addFact(&_mahConsumedFact, _mahConsumedFactName); - _addFact(&_currentFact, _currentFactName); - _addFact(&_temperatureFact, _temperatureFactName); - _addFact(&_cellCountFact, _cellCountFactName); + _addFact(&_voltageFact, _voltageFactName); + _addFact(&_percentRemainingFact, _percentRemainingFactName); + _addFact(percentRemainingAnnounce(), _percentRemainingAnnounceFactName); + _addFact(&_mahConsumedFact, _mahConsumedFactName); + _addFact(&_currentFact, _currentFactName); + _addFact(&_temperatureFact, _temperatureFactName); + _addFact(&_cellCountFact, _cellCountFactName); // Start out as not available _voltageFact.setRawValue (_voltageUnavailable); @@ -1483,6 +1483,14 @@ 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 9c871841f7c86a10479d1acad40766bf17ea92a3..eca6ce74d7fc264a1496b1d1b0d02d765fc8792b 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -184,7 +184,7 @@ public: Fact* voltage (void) { return &_voltageFact; } Fact* percentRemaining (void) { return &_percentRemainingFact; } - Fact* percentRemainingAnnounce (void) { return &_percentRemainingAnnounceFact; } + Fact* percentRemainingAnnounce (void); Fact* mahConsumed (void) { return &_mahConsumedFact; } Fact* current (void) { return &_currentFact; } Fact* temperature (void) { return &_temperatureFact; } @@ -220,7 +220,9 @@ private: Fact _temperatureFact; Fact _cellCountFact; - static SettingsFact _percentRemainingAnnounceFact; + /// 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