Merge branch 'statusbar'

This commit is contained in:
Jan Käberich 2021-10-17 20:57:32 +02:00
commit 400fb7aa90
2 changed files with 67 additions and 30 deletions

View File

@ -101,30 +101,12 @@ AppWindow::AppWindow(QWidget *parent)
} }
ui->setupUi(this); 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"); SetupStatusBar();
lADCOverload.setText("ADC overload"); UpdateStatusBar(DeviceStatusBar::Disconnected);
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; };");
CreateToolbars(); CreateToolbars();
auto logDock = new QDockWidget("Device Log"); auto logDock = new QDockWidget("Device Log");
logDock->setWidget(&deviceLog); logDock->setWidget(&deviceLog);
logDock->setObjectName("Log Dock"); logDock->setObjectName("Log Dock");
@ -288,16 +270,11 @@ bool AppWindow::ConnectToDevice(QString serial)
try { try {
qDebug() << "Attempting to connect to device..."; qDebug() << "Attempting to connect to device...";
device = new Device(serial); device = new Device(serial);
lConnectionStatus.setText("Connected to " + device->serial()); UpdateStatusBar(AppWindow::DeviceStatusBar::Connected);
qInfo() << "Connected to" << device->serial();
lDeviceInfo.setText(device->getLastDeviceInfoString());
connect(device, &Device::LogLineReceived, &deviceLog, &DeviceLog::addLine); connect(device, &Device::LogLineReceived, &deviceLog, &DeviceLog::addLine);
connect(device, &Device::ConnectionLost, this, &AppWindow::DeviceConnectionLost); connect(device, &Device::ConnectionLost, this, &AppWindow::DeviceConnectionLost);
connect(device, &Device::DeviceInfoUpdated, [this]() { connect(device, &Device::DeviceInfoUpdated, [this]() {
lDeviceInfo.setText(device->getLastDeviceInfoString()); UpdateStatusBar(AppWindow::DeviceStatusBar::Updated);
lADCOverload.setVisible(device->Info().ADC_overload);
lUnlevel.setVisible(device->Info().unlevel);
lUnlock.setVisible(!device->Info().LO1_locked || !device->Info().source_locked);
}); });
connect(device, &Device::NeedsFirmwareUpdate, this, &AppWindow::DeviceNeedsUpdate); connect(device, &Device::NeedsFirmwareUpdate, this, &AppWindow::DeviceNeedsUpdate);
ui->actionDisconnect->setEnabled(true); ui->actionDisconnect->setEnabled(true);
@ -343,8 +320,7 @@ void AppWindow::DisconnectDevice()
if(deviceActionGroup->checkedAction()) { if(deviceActionGroup->checkedAction()) {
deviceActionGroup->checkedAction()->setChecked(false); deviceActionGroup->checkedAction()->setChecked(false);
} }
lConnectionStatus.setText("No device connected"); UpdateStatusBar(DeviceStatusBar::Disconnected);
lDeviceInfo.setText("No device information available yet");
Mode::getActiveMode()->deviceDisconnected(); Mode::getActiveMode()->deviceDisconnected();
qDebug() << "Disconnected device"; qDebug() << "Disconnected device";
} }
@ -961,3 +937,54 @@ const QString& AppWindow::getAppGitHash() const
{ {
return appGitHash; 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;
}
}

View File

@ -61,7 +61,17 @@ private slots:
nlohmann::json SaveSetup(); nlohmann::json SaveSetup();
void LoadSetup(nlohmann::json j); void LoadSetup(nlohmann::json j);
private: private:
enum class DeviceStatusBar {
Connected,
Updated,
Disconnected,
};
void DeviceConnectionLost(); void DeviceConnectionLost();
void SetupStatusBar();
void UpdateStatusBar(DeviceStatusBar status);
void CreateToolbars(); void CreateToolbars();
void SetupSCPI(); void SetupSCPI();
void StartTCPServer(int port); void StartTCPServer(int port);