From ae0271c7f90d80233a1f3f2a2fce3116b12b34cc Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Sun, 2 Apr 2023 21:09:37 +0100 Subject: [PATCH 1/2] Use tristate checkbox for Scope enable/disable (also add saving state) --- prefs.h | 1 + wfmain.cpp | 33 +++++++++++++++++++++++++++------ wfmain.h | 2 +- wfmain.ui | 14 ++++++++++---- 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/prefs.h b/prefs.h index 4118cdd..5045b76 100644 --- a/prefs.h +++ b/prefs.h @@ -15,6 +15,7 @@ struct preferences { // Interface: bool useFullScreen; bool useSystemTheme; + int wfEnable; bool drawPeaks; underlay_t underlayMode = underlayNone; int underlayBufferSize = 64; diff --git a/wfmain.cpp b/wfmain.cpp index 21e07d9..09656cb 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -1947,6 +1947,8 @@ void wfmain::loadSettings() settings->beginGroup("Interface"); prefs.useFullScreen = settings->value("UseFullScreen", defPrefs.useFullScreen).toBool(); prefs.useSystemTheme = settings->value("UseSystemTheme", defPrefs.useSystemTheme).toBool(); + prefs.wfEnable = settings->value("WFEnable", defPrefs.wfEnable).toInt(); + ui->scopeEnableWFBtn->setCheckState(Qt::CheckState(prefs.wfEnable)); prefs.wftheme = settings->value("WFTheme", defPrefs.wftheme).toInt(); prefs.plotFloor = settings->value("plotFloor", defPrefs.plotFloor).toInt(); prefs.plotCeiling = settings->value("plotCeiling", defPrefs.plotCeiling).toInt(); @@ -2790,6 +2792,7 @@ void wfmain::saveSettings() settings->beginGroup("Interface"); settings->setValue("UseFullScreen", prefs.useFullScreen); settings->setValue("UseSystemTheme", prefs.useSystemTheme); + settings->setValue("WFEnable", prefs.wfEnable); settings->setValue("DrawPeaks", prefs.drawPeaks); settings->setValue("underlayMode", prefs.underlayMode); settings->setValue("underlayBufferSize", prefs.underlayBufferSize); @@ -3079,6 +3082,7 @@ void wfmain::showHideSpectrum(bool show) ui->scopeBWCombo->setVisible(show); ui->scopeEdgeCombo->setVisible(show); ui->scopeEnableWFBtn->setVisible(show); + ui->scopeEnableWFBtn->setTristate(true); ui->scopeRefLevelSlider->setEnabled(show); ui->wfLengthSlider->setEnabled(show); ui->wfthemeCombo->setVisible(show); @@ -3621,6 +3625,13 @@ void wfmain:: getInitialRigState() issueDelayedCommand(cmdGetSpectrumMode); issueDelayedCommand(cmdGetSpectrumSpan); issueDelayedCommand(cmdGetPassband); + if(ui->scopeEnableWFBtn->checkState() != Qt::Unchecked) + { + issueDelayedCommand(cmdSpecOn); + } else { + issueDelayedCommand(cmdSpecOff); + } + } issueDelayedCommand(cmdNone); @@ -5026,6 +5037,12 @@ void wfmain::changeTxBtn() void wfmain::receiveSpectrumData(QByteArray spectrum, double startFreq, double endFreq) { + if (ui->scopeEnableWFBtn->checkState()== Qt::PartiallyChecked) + { + return; + } + + if(!haveRigCaps) { qDebug(logSystem()) << "Spectrum received, but RigID incomplete."; @@ -5681,14 +5698,17 @@ void wfmain::handlePlotScroll(QWheelEvent *we) handleWFScroll(we); } -void wfmain::on_scopeEnableWFBtn_clicked(bool checked) +void wfmain::on_scopeEnableWFBtn_stateChanged(int state) { - if(checked) + if (state == Qt::Unchecked) { - emit spectOutputEnable(); - } else { - emit spectOutputDisable(); + issueDelayedCommand(cmdSpecOff); } + else + { + issueDelayedCommand(cmdSpecOn); + } + prefs.wfEnable = state; } @@ -7490,7 +7510,7 @@ void wfmain::powerRigOn() emit sendPowerOn(); delayedCommand->setInterval(3000); // 3 seconds - if(ui->scopeEnableWFBtn->isChecked()) + if(ui->scopeEnableWFBtn->checkState() != Qt::Unchecked) { issueDelayedCommand(cmdDispEnable); issueDelayedCommand(cmdQueNormalSpeed); @@ -7498,6 +7518,7 @@ void wfmain::powerRigOn() issueDelayedCommand(cmdStartRegularPolling); // s-meter, etc } else { issueDelayedCommand(cmdQueNormalSpeed); + issueDelayedCommand(cmdSpecOff); issueDelayedCommand(cmdStartRegularPolling); // s-meter, etc } delayedCommand->start(); diff --git a/wfmain.h b/wfmain.h index de38c8c..d61f626 100644 --- a/wfmain.h +++ b/wfmain.h @@ -500,7 +500,7 @@ private slots: void on_vspCombo_currentIndexChanged(int value); - void on_scopeEnableWFBtn_clicked(bool checked); + void on_scopeEnableWFBtn_stateChanged(int state); void on_sqlSlider_valueChanged(int value); diff --git a/wfmain.ui b/wfmain.ui index 1228901..dd50d0b 100644 --- a/wfmain.ui +++ b/wfmain.ui @@ -18,7 +18,7 @@ - 3 + 0 @@ -159,12 +159,18 @@ + + Checked=WF enable, Unchecked=WF disable, Partial=Enable WF but no local display + Enable WF true + + true + @@ -3443,8 +3449,8 @@ 0 0 - 820 - 302 + 579 + 254 @@ -5537,8 +5543,8 @@ - + From 289170e22d8e1a0a8e09ad8000f8fc24126c5fb1 Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Sun, 2 Apr 2023 21:11:14 +0100 Subject: [PATCH 2/2] Enable wf by default --- wfmain.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/wfmain.cpp b/wfmain.cpp index 09656cb..da55bd6 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -1878,6 +1878,7 @@ void wfmain::setDefPrefs() defPrefs.currentColorPresetNumber = 0; defPrefs.underlayMode = underlayNone; defPrefs.underlayBufferSize = 64; + defPrefs.wfEnable = 2; defPrefs.wfAntiAlias = false; defPrefs.wfInterpolate = true; defPrefs.stylesheetPath = QString("qdarkstyle/style.qss");