diff --git a/.appveyor.yml b/.appveyor.yml index 22beb1402e63091d60aad79ff8d188c4d11c9ea0..f3b48d65c5492d80508179baee7f57aba61c14d5 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -15,7 +15,7 @@ environment: install: - git submodule update --init --recursive - call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 - - set PATH=C:\Qt\Tools\QtCreator\bin;C:\Qt\5.9.3\msvc2015\bin;%PATH% + - set PATH=C:\Qt\Tools\QtCreator\bin;C:\Qt\5.9.4\msvc2015\bin;%PATH% - mkdir %LOCALAPPDATA%\QtProject && copy test\qtlogging.ini %LOCALAPPDATA%\QtProject\ - ps: | Write-Host "Installing GStreamer..." -ForegroundColor Cyan @@ -35,7 +35,7 @@ install: Write-Host "Installed" -ForegroundColor Green build_script: - - mkdir %SHADOW_BUILD_DIR% && cd %SHADOW_BUILD_DIR% && C:\Qt\5.9.3\msvc2015\bin\qmake -r CONFIG-=debug_and_release CONFIG+=%CONFIG% CONFIG+=WarningsAsErrorsOn %APPVEYOR_BUILD_FOLDER%\qgroundcontrol.pro + - mkdir %SHADOW_BUILD_DIR% && cd %SHADOW_BUILD_DIR% && C:\Qt\5.9.4\msvc2015\bin\qmake -r CONFIG-=debug_and_release CONFIG+=%CONFIG% CONFIG+=WarningsAsErrorsOn %APPVEYOR_BUILD_FOLDER%\qgroundcontrol.pro - cd %SHADOW_BUILD_DIR% && jom - if "%CONFIG%" EQU "installer" ( copy %SHADOW_BUILD_DIR%\release\QGroundControl-installer.exe %APPVEYOR_BUILD_FOLDER%\QGroundControl-installer.exe ) # Generate the source server information to embed in the PDB diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc index 04d51ccf348baad2f900c5659e8f3e72abbe1df7..3f0ba6aeb22ea2bead37025410237e5f6b698a4f 100644 --- a/src/Joystick/Joystick.cc +++ b/src/Joystick/Joystick.cc @@ -32,6 +32,11 @@ const char* Joystick::_roverTXModeSettingsKey = "TXMode_Rover"; const char* Joystick::_vtolTXModeSettingsKey = "TXMode_VTOL"; const char* Joystick::_submarineTXModeSettingsKey = "TXMode_Submarine"; +const char* Joystick::_buttonActionArm = QT_TR_NOOP("Arm"); +const char* Joystick::_buttonActionDisarm = QT_TR_NOOP("Disarm"); +const char* Joystick::_buttonActionVTOLFixedWing = QT_TR_NOOP("VTOL: Fixed Wing"); +const char* Joystick::_buttonActionVTOLMultiRotor = QT_TR_NOOP("VTOL: Multi-Rotor"); + const char* Joystick::_rgFunctionSettingsKey[Joystick::maxFunction] = { "RollAxis", "PitchAxis", @@ -84,6 +89,10 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC Joystick::~Joystick() { + // Crash out of the thread if it is still running + terminate(); + wait(); + delete[] _rgAxisValues; delete[] _rgCalibration; delete[] _rgButtonValues; @@ -638,11 +647,12 @@ QStringList Joystick::actions(void) { QStringList list; - list << "Arm" << "Disarm"; + list << _buttonActionArm << _buttonActionDisarm; if (_activeVehicle) { list << _activeVehicle->flightModes(); } + list << _buttonActionVTOLFixedWing << _buttonActionVTOLMultiRotor; return list; } @@ -787,10 +797,14 @@ void Joystick::_buttonAction(const QString& action) return; } - if (action == "Arm") { + if (action == _buttonActionArm) { _activeVehicle->setArmed(true); - } else if (action == "Disarm") { + } else if (action == _buttonActionDisarm) { _activeVehicle->setArmed(false); + } else if (action == _buttonActionVTOLFixedWing) { + _activeVehicle->setVtolInFwdFlight(true); + } else if (action == _buttonActionVTOLMultiRotor) { + _activeVehicle->setVtolInFwdFlight(false); } else if (_activeVehicle->flightModes().contains(action)) { _activeVehicle->setFlightMode(action); } else { diff --git a/src/Joystick/Joystick.h b/src/Joystick/Joystick.h index f90b8169b84440479e866a11ee7de3cf96f8ccf8..8cd6accf66306b3b2e89ec6d0512bdc06f3e6234 100644 --- a/src/Joystick/Joystick.h +++ b/src/Joystick/Joystick.h @@ -236,6 +236,11 @@ private: static const char* _vtolTXModeSettingsKey; static const char* _submarineTXModeSettingsKey; + static const char* _buttonActionArm; + static const char* _buttonActionDisarm; + static const char* _buttonActionVTOLFixedWing; + static const char* _buttonActionVTOLMultiRotor; + private slots: void _activeVehicleChanged(Vehicle* activeVehicle); }; diff --git a/src/QmlControls/QGCButton.qml b/src/QmlControls/QGCButton.qml index f9cbe883583a6acd69dcd319a30a09633bb89f35..f7adf355b18b4908e3a15c49410a2dd183191727 100644 --- a/src/QmlControls/QGCButton.qml +++ b/src/QmlControls/QGCButton.qml @@ -6,6 +6,8 @@ import QGroundControl.Palette 1.0 import QGroundControl.ScreenTools 1.0 Button { + activeFocusOnPress: true + property bool primary: false ///< primary button for a group of buttons property real pointSize: ScreenTools.defaultFontPointSize ///< Point size for button text diff --git a/src/QmlControls/QGCCheckBox.qml b/src/QmlControls/QGCCheckBox.qml index 735138d28ec87d8a44f310cc35b72e0217c94054..ed602c1678742f9bf8b8f5fb08e9f0e6def34772 100644 --- a/src/QmlControls/QGCCheckBox.qml +++ b/src/QmlControls/QGCCheckBox.qml @@ -6,6 +6,8 @@ import QGroundControl.Palette 1.0 import QGroundControl.ScreenTools 1.0 CheckBox { + activeFocusOnPress: true + property var __qgcPal: QGCPalette { colorGroupEnabled: enabled } style: CheckBoxStyle {