diff --git a/Software/PC_Application/appwindow.cpp b/Software/PC_Application/appwindow.cpp index 918093f..c63ec15 100644 --- a/Software/PC_Application/appwindow.cpp +++ b/Software/PC_Application/appwindow.cpp @@ -101,30 +101,12 @@ AppWindow::AppWindow(QWidget *parent) } ui->setupUi(this); - ui->statusbar->addWidget(&lConnectionStatus); - auto div1 = new QFrame; - div1->setFrameShape(QFrame::VLine); - ui->statusbar->addWidget(div1); - ui->statusbar->addWidget(&lDeviceInfo); - ui->statusbar->addWidget(new QLabel, 1); - lADCOverload.setStyleSheet("color : red"); - lADCOverload.setText("ADC overload"); - lADCOverload.setVisible(false); - ui->statusbar->addWidget(&lADCOverload); - - lUnlevel.setStyleSheet("color : red"); - lUnlevel.setText("Unlevel"); - lUnlevel.setVisible(false); - ui->statusbar->addWidget(&lUnlevel); - - lUnlock.setStyleSheet("color : red"); - lUnlock.setText("Unlock"); - lUnlock.setVisible(false); - ui->statusbar->addWidget(&lUnlock); - //ui->statusbar->setStyleSheet("QStatusBar::item { border: 1px solid black; };"); + SetupStatusBar(); + UpdateStatusBar(DeviceStatusBar::Disconnected); CreateToolbars(); + auto logDock = new QDockWidget("Device Log"); logDock->setWidget(&deviceLog); logDock->setObjectName("Log Dock"); @@ -288,16 +270,11 @@ bool AppWindow::ConnectToDevice(QString serial) try { qDebug() << "Attempting to connect to device..."; device = new Device(serial); - lConnectionStatus.setText("Connected to " + device->serial()); - qInfo() << "Connected to" << device->serial(); - lDeviceInfo.setText(device->getLastDeviceInfoString()); + UpdateStatusBar(AppWindow::DeviceStatusBar::Connected); connect(device, &Device::LogLineReceived, &deviceLog, &DeviceLog::addLine); connect(device, &Device::ConnectionLost, this, &AppWindow::DeviceConnectionLost); connect(device, &Device::DeviceInfoUpdated, [this]() { - lDeviceInfo.setText(device->getLastDeviceInfoString()); - lADCOverload.setVisible(device->Info().ADC_overload); - lUnlevel.setVisible(device->Info().unlevel); - lUnlock.setVisible(!device->Info().LO1_locked || !device->Info().source_locked); + UpdateStatusBar(AppWindow::DeviceStatusBar::Updated); }); connect(device, &Device::NeedsFirmwareUpdate, this, &AppWindow::DeviceNeedsUpdate); ui->actionDisconnect->setEnabled(true); @@ -343,8 +320,7 @@ void AppWindow::DisconnectDevice() if(deviceActionGroup->checkedAction()) { deviceActionGroup->checkedAction()->setChecked(false); } - lConnectionStatus.setText("No device connected"); - lDeviceInfo.setText("No device information available yet"); + UpdateStatusBar(DeviceStatusBar::Disconnected); Mode::getActiveMode()->deviceDisconnected(); qDebug() << "Disconnected device"; } @@ -961,3 +937,54 @@ const QString& AppWindow::getAppGitHash() const { return appGitHash; } + +void AppWindow::SetupStatusBar() +{ + ui->statusbar->addWidget(&lConnectionStatus); + auto div1 = new QFrame; + div1->setFrameShape(QFrame::VLine); + ui->statusbar->addWidget(div1); + ui->statusbar->addWidget(&lDeviceInfo); + ui->statusbar->addWidget(new QLabel, 1); + + lADCOverload.setStyleSheet("color : red"); + lADCOverload.setText("ADC overload"); + lADCOverload.setVisible(false); + ui->statusbar->addWidget(&lADCOverload); + + lUnlevel.setStyleSheet("color : red"); + lUnlevel.setText("Unlevel"); + lUnlevel.setVisible(false); + ui->statusbar->addWidget(&lUnlevel); + + lUnlock.setStyleSheet("color : red"); + lUnlock.setText("Unlock"); + lUnlock.setVisible(false); + ui->statusbar->addWidget(&lUnlock); + //ui->statusbar->setStyleSheet("QStatusBar::item { border: 1px solid black; };"); +} + +void AppWindow::UpdateStatusBar(DeviceStatusBar status) +{ + switch(status) { + case DeviceStatusBar::Connected: + lConnectionStatus.setText("Connected to " + device->serial()); + qInfo() << "Connected to" << device->serial(); + lDeviceInfo.setText(device->getLastDeviceInfoString()); + break; + case DeviceStatusBar::Disconnected: + lConnectionStatus.setText("No device connected"); + lDeviceInfo.setText("No device information available yet"); + break; + case DeviceStatusBar::Updated: + lDeviceInfo.setText(device->getLastDeviceInfoString()); + lADCOverload.setVisible(device->Info().ADC_overload); + lUnlevel.setVisible(device->Info().unlevel); + lUnlock.setVisible(!device->Info().LO1_locked || !device->Info().source_locked); + break; + default: + // invalid status + break; + } + +} diff --git a/Software/PC_Application/appwindow.h b/Software/PC_Application/appwindow.h index 9b27ea1..f011243 100644 --- a/Software/PC_Application/appwindow.h +++ b/Software/PC_Application/appwindow.h @@ -61,7 +61,17 @@ private slots: nlohmann::json SaveSetup(); void LoadSetup(nlohmann::json j); private: + + enum class DeviceStatusBar { + Connected, + Updated, + Disconnected, + }; + void DeviceConnectionLost(); + + void SetupStatusBar(); + void UpdateStatusBar(DeviceStatusBar status); void CreateToolbars(); void SetupSCPI(); void StartTCPServer(int port);