Skip to content

Commit

Permalink
Fix mavlink inspector unselection (#12508)
Browse files Browse the repository at this point in the history
* Fix mavlink inspector unselection

* Clean up
  • Loading branch information
vryabokon1705 authored Mar 3, 2025
1 parent 4cc1359 commit 7fb2fc9
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 27 deletions.
2 changes: 1 addition & 1 deletion src/AnalyzeView/MAVLinkChartController.cc
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ void MAVLinkChartController::delSeries(QGCMAVLinkMessageField *field)

const QVariant f = QVariant::fromValue(field);
const QList<QVariant>::const_iterator it = std::find(_chartFields.constBegin(), _chartFields.constEnd(), f);
if (it != _chartFields.end()) {
if (it != _chartFields.constEnd()) {
(void) _chartFields.erase(it);
emit chartFieldsChanged();

Expand Down
67 changes: 41 additions & 26 deletions src/AnalyzeView/MAVLinkInspectorPage.qml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,39 @@ AnalyzePage {
id: controller
}

function updateEnabledStatus(repeater, message, chart) {
if(!message) {
return;
}

for (let i = 0; i < repeater.count; i++) {
let checkBox = repeater.itemAt(i)
if(!checkBox) {
continue
}
const object = message.fields.get(i)
checkBox.enabled = isCheckboxEnabled(checkBox, object, chart)
}
}

function isCheckboxEnabled(checkBox, object, chart) {
if(checkBox.checkState === Qt.Checked) {
return true
}
if(!object.selectable) {
return false
}
if(object.series !== null) {
return false
}
if(chart.chartController !== null) {
if (chart.chartController.chartFields.length >= chart.seriesColors.length) {
return false
}
}
return true
}

Component {
id: headerComponent
//-- Header
Expand Down Expand Up @@ -263,61 +296,43 @@ AnalyzePage {
}
}
Repeater {
id: chart1Repeater
model: curMessage ? curMessage.fields : []
delegate: QGCCheckBox {
Layout.row: index + 2
Layout.column: 3
Layout.alignment: Qt.AlignHCenter
enabled: {
if(checked)
return true
if(!object.selectable)
return false
if(object.series !== null)
return false
if(chart1.chartController !== null) {
if(chart1.chartController.chartFields.length >= chart1.seriesColors.length)
return false
}
return true;
}
checked: object.series !== null && object.chartIndex === 0
onClicked: {
if(checked) {
chart1.addDimension(object)
} else {
chart1.delDimension(object)
}
updateEnabledStatus(chart1Repeater, curMessage, chart1)
updateEnabledStatus(chart2Repeater, curMessage, chart2)
}
Component.onCompleted: updateEnabledStatus(chart1Repeater, curMessage, chart1)
}
}
Repeater {
id: chart2Repeater
model: curMessage ? curMessage.fields : []
delegate: QGCCheckBox {
Layout.row: index + 2
Layout.column: 4
Layout.alignment: Qt.AlignHCenter
enabled: {
if(checked)
return true
if(!object.selectable)
return false
if(object.series !== null)
return false
if(chart2.chartController !== null) {
if(chart2.chartController.chartFields.length >= chart2.seriesColors.length)
return false
}
return true;
}
checked: object.series !== null && object.chartIndex === 1
onClicked: {
if(checked) {
chart2.addDimension(object)
} else {
chart2.delDimension(object)
}
updateEnabledStatus(chart2Repeater, curMessage, chart2)
updateEnabledStatus(chart1Repeater, curMessage, chart1)
}
Component.onCompleted: updateEnabledStatus(chart2Repeater, curMessage, chart2)
}
}
}
Expand Down

0 comments on commit 7fb2fc9

Please sign in to comment.