Skip to content

Commit 2f255c0

Browse files
committed
Add GUI react on action dropbox change
1 parent bb49814 commit 2f255c0

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

src/Joystick/Joystick.cc

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,12 @@ void Joystick::_loadSettings()
372372
// Remap to stored TX mode in settings
373373
_remapAxes(2, _transmitterMode, _rgFunctionAxis);
374374

375+
while (_pwmVisibilities.length() < _totalButtonCount) {
376+
_pwmVisibilities.push_back(false);
377+
}
378+
375379
for (int button = 0; button < _totalButtonCount; button++) {
380+
_pwmVisibilities[button] = false;
376381
QString action = settings.value(QString(_buttonActionNameKey).arg(button), QString()).toString();
377382
if (!action.isEmpty() && action != _buttonActionNone) {
378383
if (_buttonActionArray[button]) {
@@ -381,6 +386,7 @@ void Joystick::_loadSettings()
381386

382387
AssignedButtonAction *ap;
383388
if (assignableActionIsPwm(action)) {
389+
_pwmVisibilities[button] = true;
384390
int lowPwm = settings.value(QString(_buttonActionLowPwmValueKey).arg(button), -1).toInt();
385391
int highPwm = settings.value(QString(_buttonActionHighPwmValueKey).arg(button), -1).toInt();
386392
bool latch = settings.value(QString(_buttonActionLatchPwmValueKey).arg(button), false).toBool();
@@ -914,6 +920,7 @@ void Joystick::setButtonAction(int button, const QString& action)
914920
settings.beginGroup(_settingsGroup);
915921
settings.beginGroup(_name);
916922
if(action.isEmpty() || action == _buttonActionNone) {
923+
_pwmVisibilities[button] = false;
917924
if(_buttonActionArray[button]) {
918925
//-- Clear from settings
919926
settings.remove(QString(_buttonActionNameKey).arg(button));
@@ -928,8 +935,10 @@ void Joystick::setButtonAction(int button, const QString& action)
928935
}
929936
} else {
930937
bool isPwmAction = assignableActionIsPwm(action);
938+
_pwmVisibilities[button] = isPwmAction;
939+
qCDebug(JoystickLog) << "setButtonAction: isPwmAction" << isPwmAction;
931940
AssignedButtonAction *ap;
932-
941+
//TODO(bzd) rethink this section
933942
if(!_buttonActionArray[button]) {
934943
if (isPwmAction) {
935944
ap = new AssignedButtonAction(this, action, 0, 0, false);
@@ -964,6 +973,7 @@ void Joystick::setButtonAction(int button, const QString& action)
964973
settings.setValue(QString(_buttonActionLatchPwmValueKey).arg(button), _buttonActionArray[button]->pwmLatchMode());
965974
}
966975
}
976+
emit pwmVisibilitiesChanged();
967977
emit buttonActionsChanged();
968978
}
969979

src/Joystick/Joystick.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ class Joystick : public QThread
129129
Q_PROPERTY(QmlObjectListModel* assignableActions READ assignableActions NOTIFY assignableActionsChanged)
130130
Q_PROPERTY(QStringList assignableActionTitles READ assignableActionTitles NOTIFY assignableActionsChanged)
131131
Q_PROPERTY(QString disabledActionName READ disabledActionName CONSTANT)
132+
Q_PROPERTY(QList<bool> pwmVisibilities READ pwmVisibilities NOTIFY pwmVisibilitiesChanged)
132133

133134
Q_PROPERTY(int throttleMode READ throttleMode WRITE setThrottleMode NOTIFY throttleModeChanged)
134135
Q_PROPERTY(float axisFrequencyHz READ axisFrequencyHz WRITE setAxisFrequency NOTIFY axisFrequencyHzChanged)
@@ -164,6 +165,7 @@ class Joystick : public QThread
164165
QmlObjectListModel* assignableActions () { return &_assignableButtonActions; }
165166
QStringList assignableActionTitles () { return _availableActionTitles; }
166167
QString disabledActionName () { return _buttonActionNone; }
168+
QList<bool> pwmVisibilities () { return _pwmVisibilities; }
167169

168170
/// Start the polling thread which will in turn emit joystick signals
169171
void startPolling(Vehicle* vehicle);
@@ -226,6 +228,7 @@ class Joystick : public QThread
226228
void calibratedChanged (bool calibrated);
227229
void buttonActionsChanged ();
228230
void assignableActionsChanged ();
231+
void pwmVisibilitiesChanged ();
229232
void throttleModeChanged (int mode);
230233
void negativeThrustChanged (bool allowNegative);
231234
void exponentialChanged (float exponential);
@@ -339,6 +342,8 @@ class Joystick : public QThread
339342
QmlObjectListModel _assignableButtonActions;
340343
QList<AssignedButtonAction*> _buttonActionArray;
341344
QStringList _availableActionTitles;
345+
//TODO(bzd) refactor name
346+
QList<bool> _pwmVisibilities;
342347
MultiVehicleManager* _multiVehicleManager = nullptr;
343348

344349
QList<JoystickMavCommand> _customMavCommands;

src/VehicleSetup/JoystickConfigButtons.qml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,6 @@ ColumnLayout {
8989
}
9090
}
9191

92-
function _isCurrentButtonActionPwm() {
93-
return _activeJoystick ? _activeJoystick.assignableActionIsPwm(modelData) : false
94-
}
95-
9692
Component.onCompleted: _findCurrentButtonAction()
9793
onModelChanged: _findCurrentButtonAction()
9894
onActivated: _activeJoystick.setButtonAction(modelData, textAt(index))
@@ -119,9 +115,8 @@ ColumnLayout {
119115

120116
Row {
121117
id: pwmSettings
122-
property bool pwmRowVisible: buttonActionCombo._isCurrentButtonActionPwm()
123118
spacing: ScreenTools.defaultFontPixelWidth
124-
visible: pwmRowVisible
119+
visible: _activeJoystick ? _activeJoystick.pwmVisibilities[modelData] : false
125120

126121
function _setButtonPwm(button, isLow, pwm) {
127122
if(_activeJoystick) {

0 commit comments

Comments
 (0)