diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc index b2093d4f4cd2e0ca1b1dd4e6ef5746779e86cf94..a7d4f734fb31216c6fd64ab0ca8b2c8e1c066166 100644 --- a/src/Joystick/Joystick.cc +++ b/src/Joystick/Joystick.cc @@ -75,6 +75,8 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC _rgButtonValues[i] = false; } + _updateTXModeSettingsKey(_multiVehicleManager->activeVehicle()); + _loadSettings(); connect(_multiVehicleManager, &MultiVehicleManager::activeVehicleChanged, this, &Joystick::_activeVehicleChanged); @@ -119,7 +121,7 @@ void Joystick::_setDefaultCalibration(void) { _saveSettings(); } -void Joystick::_activeVehicleChanged(Vehicle *activeVehicle) +void Joystick::_updateTXModeSettingsKey(Vehicle* activeVehicle) { if(activeVehicle) { if(activeVehicle->fixedWing()) { @@ -137,7 +139,16 @@ void Joystick::_activeVehicleChanged(Vehicle *activeVehicle) qWarning() << "No valid joystick TXmode settings key for selected vehicle"; return; } + } else { + _txModeSettingsKey = NULL; + } +} +void Joystick::_activeVehicleChanged(Vehicle* activeVehicle) +{ + _updateTXModeSettingsKey(activeVehicle); + + if(activeVehicle) { QSettings settings; settings.beginGroup(_settingsGroup); int mode = settings.value(_txModeSettingsKey, activeVehicle->firmwarePlugin()->defaultJoystickTXMode()).toInt(); @@ -152,8 +163,10 @@ void Joystick::_loadSettings(void) settings.beginGroup(_settingsGroup); - if(_txModeSettingsKey) - _transmitterMode = settings.value(_txModeSettingsKey, 2).toInt(); + Vehicle* activeVehicle = _multiVehicleManager->activeVehicle(); + + if(_txModeSettingsKey && activeVehicle) + _transmitterMode = settings.value(_txModeSettingsKey, activeVehicle->firmwarePlugin()->defaultJoystickTXMode()).toInt(); settings.beginGroup(_name); diff --git a/src/Joystick/Joystick.h b/src/Joystick/Joystick.h index 89717f715280b7ea5959ade2ff744a6581a21df2..d6f15ed8bf7fd300c9eba04c23f238125a481544 100644 --- a/src/Joystick/Joystick.h +++ b/src/Joystick/Joystick.h @@ -181,6 +181,7 @@ private: virtual int _getAxis(int i) = 0; virtual uint8_t _getHat(int hat,int i) = 0; + void _updateTXModeSettingsKey(Vehicle* activeVehicle); int _mapFunctionMode(int mode, int function); void _remapAxes(int currentMode, int newMode, int (&newMapping)[maxFunction]);