Added QMessageBox notifications for device connection errors and channel control errors

This commit is contained in:
openhands 2025-06-30 14:19:38 +00:00
parent b2bd53be80
commit 64e01ea599
4 changed files with 16 additions and 2 deletions

View file

@ -3,6 +3,7 @@
#include "channelwidget.h" #include "channelwidget.h"
#include <QDebug> #include <QDebug>
#include <QMessageBox>
ChannelWidget::ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber, struct eismultiplexer* multiplexer, ChannelWidget::ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber, struct eismultiplexer* multiplexer,
QWidget *parent) QWidget *parent)
@ -36,13 +37,19 @@ void ChannelWidget::onChannelToggled(bool checked)
channel_t channelFlag = static_cast<channel_t>(1 << channelNumber); channel_t channelFlag = static_cast<channel_t>(1 << channelNumber);
if (checked) { if (checked) {
if (eismultiplexer_connect_channel(multiplexer, channelFlag) < 0) { if (eismultiplexer_connect_channel(multiplexer, channelFlag) < 0) {
QMessageBox::warning(this, tr("Connection Failed"),
tr("Failed to connect channel %1 on device %2").arg(channelNumber).arg(deviceSerial));
qWarning() << "Failed to connect channel" << channelNumber << "on device" << deviceSerial; qWarning() << "Failed to connect channel" << channelNumber << "on device" << deviceSerial;
checkbox->setChecked(false); checkbox->setChecked(false);
setEnabled(false); // Gray out the widget
} }
} else { } else {
if (eismultiplexer_disconnect_channel(multiplexer, channelFlag) < 0) { if (eismultiplexer_disconnect_channel(multiplexer, channelFlag) < 0) {
QMessageBox::warning(this, tr("Disconnection Failed"),
tr("Failed to disconnect channel %1 on device %2").arg(channelNumber).arg(deviceSerial));
qWarning() << "Failed to disconnect channel" << channelNumber << "on device" << deviceSerial; qWarning() << "Failed to disconnect channel" << channelNumber << "on device" << deviceSerial;
checkbox->setChecked(true); checkbox->setChecked(true);
setEnabled(false); // Gray out the widget
} }
} }
} }

View file

@ -27,7 +27,7 @@ private:
uint16_t channelNumber; uint16_t channelNumber;
struct eismultiplexer* multiplexer; struct eismultiplexer* multiplexer;
QCheckBox* checkbox; QCheckBox* checkbox;
QLabel* label; QLabel* label; // No need for tr() function, QObject already provides it
}; };
#endif // CHANNELWIDGET_H #endif // CHANNELWIDGET_H

View file

@ -2,6 +2,7 @@
#include "mainwindow.h" #include "mainwindow.h"
#include <QDebug> #include <QDebug>
#include <QMessageBox>
#include <eismultiplexer.h> #include <eismultiplexer.h>
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
@ -48,7 +49,9 @@ void MainWindow::enumerateDevices()
size_t count = 0; size_t count = 0;
uint16_t* serials = eismultiplexer_list_available_devices(&count); uint16_t* serials = eismultiplexer_list_available_devices(&count);
if (!serials) { if (!serials || count == 0) {
QMessageBox::warning(this, tr("No Devices Found"),
tr("No EIS multiplexer devices were found. Please connect a device and try again."));
qWarning() << "No EIS multiplexer devices found"; qWarning() << "No EIS multiplexer devices found";
return; return;
} }
@ -67,6 +70,8 @@ void MainWindow::enumerateDevices()
} }
eismultiplexer_disconnect(&multiplexer); eismultiplexer_disconnect(&multiplexer);
} else { } else {
QMessageBox::warning(this, tr("Connection Failed"),
tr("Failed to connect to device with serial %1").arg(serial));
qWarning() << "Failed to connect to device with serial" << serial; qWarning() << "Failed to connect to device with serial" << serial;
} }
} }

View file

@ -22,6 +22,8 @@ public:
explicit MainWindow(QWidget *parent = nullptr); explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override; ~MainWindow() override;
// No need for tr() function, QObject already provides it
private: private:
void enumerateDevices(); void enumerateDevices();
void setupUi(); void setupUi();