Fix case where the ganged channel is channel 0
This commit is contained in:
parent
81e7e1a5b3
commit
af9263b041
|
@ -1,4 +1,3 @@
|
|||
|
||||
#include "channelwidget.h"
|
||||
#include <QDebug>
|
||||
#include <QMessageBox>
|
||||
|
@ -27,7 +26,6 @@ ChannelWidget::ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber,
|
|||
line.setFrameShadow(QFrame::Sunken);
|
||||
vlayout.addWidget(&line);
|
||||
|
||||
// Add Unganged option first
|
||||
gangcombo.addItem("Unganged");
|
||||
|
||||
hlayout.addStretch();
|
||||
|
@ -35,7 +33,6 @@ ChannelWidget::ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber,
|
|||
hlayout.addWidget(&gangcombo);
|
||||
hlayout.addWidget(&checkbox);
|
||||
|
||||
// Connect signals
|
||||
connect(&checkbox, &QCheckBox::toggled, this, &ChannelWidget::onChannelToggled);
|
||||
connect(&gangcombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &ChannelWidget::onGangComboChanged);
|
||||
|
||||
|
@ -47,7 +44,7 @@ ChannelWidget::ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber,
|
|||
|
||||
ChannelWidget::~ChannelWidget()
|
||||
{
|
||||
// Nothing to clean up
|
||||
|
||||
}
|
||||
|
||||
uint16_t ChannelWidget::getDeviceSerial() const
|
||||
|
@ -83,7 +80,7 @@ void ChannelWidget::onChannelToggled(bool checked)
|
|||
qWarning() << "Failed to connect channel" << channelNumber << "on device" << deviceSerial;
|
||||
checkbox.blockSignals(true);
|
||||
checkbox.setChecked(false);
|
||||
setEnabled(false); // Gray out the widget
|
||||
setEnabled(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -95,7 +92,7 @@ void ChannelWidget::onChannelToggled(bool checked)
|
|||
qWarning() << "Failed to disconnect channel" << channelNumber << "on device" << deviceSerial;
|
||||
checkbox.blockSignals(true);
|
||||
checkbox.setChecked(true);
|
||||
setEnabled(false); // Gray out the widget
|
||||
setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,11 +104,11 @@ void ChannelWidget::onGangComboChanged(int index)
|
|||
{
|
||||
if (index == 0) {
|
||||
// Unganged selected - reset ganged channel tracking
|
||||
gangedDeviceSerial = 0;
|
||||
gangedChannelNumber = 0;
|
||||
gangedDeviceSerial = -1;
|
||||
gangedChannelNumber = -1;
|
||||
checkbox.setEnabled(true);
|
||||
checkbox.setChecked(false);
|
||||
checkbox.setChecked(false); // Reset to false to avoid leaving it checked when unganged
|
||||
checkbox.setChecked(false);
|
||||
} else {
|
||||
// A ganged channel was selected
|
||||
QString currentText = gangcombo.currentText();
|
||||
|
@ -149,12 +146,9 @@ void ChannelWidget::updateGangCombo()
|
|||
|
||||
void ChannelWidget::updateCheckboxState()
|
||||
{
|
||||
// If we're ganged, update our state to match the ganged channel
|
||||
if (gangedDeviceSerial != 0 && gangedChannelNumber != 0) {
|
||||
if (gangedDeviceSerial >= 0 && gangedChannelNumber >= 0) {
|
||||
checkbox.setEnabled(false);
|
||||
// We need to check the state of the ganged channel and sync
|
||||
// This would typically be done by querying the actual channel state
|
||||
// but for now we'll assume the ganged channel's state is known
|
||||
// TODO check current ganged channel state
|
||||
} else {
|
||||
checkbox.setEnabled(true);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
|
||||
|
||||
#ifndef CHANNELWIDGET_H
|
||||
#define CHANNELWIDGET_H
|
||||
|
||||
|
@ -58,8 +56,8 @@ private:
|
|||
QVBoxLayout labellayout;
|
||||
|
||||
// Track the channel this one is ganged to (if any)
|
||||
uint16_t gangedDeviceSerial = 0;
|
||||
uint16_t gangedChannelNumber = 0;
|
||||
int gangedDeviceSerial = -1;
|
||||
int gangedChannelNumber = -1;
|
||||
};
|
||||
|
||||
#endif // CHANNELWIDGET_H
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
|
||||
|
||||
#include <eismultiplexer.h>
|
||||
#include <QMessageBox>
|
||||
#include "mainwindow.h"
|
||||
|
|
Loading…
Reference in a new issue