diff --git a/src/QmlControls/ParameterEditorDialog.qml b/src/QmlControls/ParameterEditorDialog.qml index 7a0bb3b104f28960f8d95b6d79c786a715d79da5..163c33fca6cf565997bece47cb680061eff62f66 100644 --- a/src/QmlControls/ParameterEditorDialog.qml +++ b/src/QmlControls/ParameterEditorDialog.qml @@ -47,7 +47,18 @@ QGCViewDialog { QGCPalette { id: qgcPal; colorGroupEnabled: true } function accept() { - if (factCombo.visible) { + if (bitmaskEditor.visible) { + var value = 0; + for (var i = 0; i < fact.bitmaskValues.length; ++i) { + var checkbox = bitmaskEditor.itemAt(i) + if (checkbox.checked) { + value |= fact.bitmaskValues[i]; + } + } + fact.value = value; + fact.valueChanged(fact.value) + } + else if (factCombo.visible) { fact.enumIndex = factCombo.currentIndex hideDialog() } else { @@ -127,7 +138,7 @@ QGCViewDialog { visible: _showCombo model: fact.enumStrings - property bool _showCombo: fact.enumStrings.length != 0 && !validate + property bool _showCombo: fact.enumStrings.length != 0 && fact.bitmaskStrings.length == 0 && !validate Component.onCompleted: { // We can't bind directly to fact.enumIndex since that would add an unknown value @@ -138,6 +149,17 @@ QGCViewDialog { } } + Column { + Repeater { + id: bitmaskEditor + model: fact.bitmaskStrings + delegate : QGCCheckBox { + text : modelData + checked : fact.value & fact.bitmaskValues[index] + } + } + } + QGCLabel { text: fact.name } Row {