From 55819d34188018aa10539aceb5660b384dfd1bbc Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Sat, 10 Feb 2024 12:02:02 -0800 Subject: [PATCH 1/6] ATU status supression --- wfmain.cpp | 13 ++++++++++--- wfmain.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/wfmain.cpp b/wfmain.cpp index 1da86ea..bd7e347 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -4312,13 +4312,16 @@ void wfmain::on_tuneNowBtn_clicked() { queue->addUnique(priorityImmediate,queueItem(funcTunerStatus,QVariant::fromValue(2U))); showStatusBarText("Starting ATU tuning cycle..."); + ATUCheckTimer.setSingleShot(true); + ATUCheckTimer.start(5000); } void wfmain::on_tuneEnableChk_clicked(bool checked) { queue->addUnique(priorityImmediate,queueItem(funcTunerStatus,QVariant::fromValue(checked))); - showStatusBarText(QString("Turning %0 ATU").arg(checked?"on":"off")); + ATUCheckTimer.setSingleShot(true); + ATUCheckTimer.start(5000); } bool wfmain::on_exitBtn_clicked() @@ -4398,20 +4401,24 @@ void wfmain::receiveATUStatus(unsigned char atustatus) ui->tuneEnableChk->blockSignals(true); ui->tuneEnableChk->setChecked(false); ui->tuneEnableChk->blockSignals(false); - showStatusBarText("ATU not enabled."); + if(ATUCheckTimer.isActive()) + showStatusBarText("ATU not enabled."); break; case 0x01: // ATU enabled ui->tuneEnableChk->blockSignals(true); ui->tuneEnableChk->setChecked(true); ui->tuneEnableChk->blockSignals(false); - showStatusBarText("ATU enabled."); + if(ATUCheckTimer.isActive()) + showStatusBarText("ATU enabled."); break; case 0x02: // ATU tuning in-progress. // Add command queue to check again and update status bar // qInfo(logSystem()) << "Received ATU status update that *tuning* is taking place"; showStatusBarText("ATU is Tuning..."); + ATUCheckTimer.stop(); + ATUCheckTimer.start(5000); queue->add(priorityHighest,funcTunerStatus); break; default: diff --git a/wfmain.h b/wfmain.h index 2c6989b..e623104 100644 --- a/wfmain.h +++ b/wfmain.h @@ -513,6 +513,7 @@ private: void initLogging(); QTimer logCheckingTimer; int logCheckingOldPosition = 0; + QTimer ATUCheckTimer; QCustomPlot *plot; // line plot QCustomPlot *wf; // waterfall image From c41d697ab71ce0c3e349a9adc0943c1c9fe9a8e5 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Sat, 10 Feb 2024 12:24:38 -0800 Subject: [PATCH 2/6] Disable duplicate meters correctly on startup. --- wfmain.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/wfmain.cpp b/wfmain.cpp index 360e89d..5fb5a92 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -3936,8 +3936,13 @@ void wfmain::receiveRigID(rigCapabilities rigCaps) // Set the second meter here as I suspect we need to be connected for it to work? changeMeterType(prefs.meter2Type, 2); changeMeterType(prefs.meter3Type, 3); + ui->meter2Widget->blockMeterType(prefs.meter3Type); + ui->meter3Widget->blockMeterType(prefs.meter2Type); ui->meter2Widget->setCompReverse(prefs.compMeterReverse); ui->meter3Widget->setCompReverse(prefs.compMeterReverse); + + + // for (int i = 0; i < ui->meter2selectionCombo->count(); i++) // { // if (static_cast(ui->meter2selectionCombo->itemData(i).toInt()) == prefs.meter2Type) From e99e3caa095fe0b1c36124bfeb2fdda08f45e167 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Sat, 10 Feb 2024 12:40:17 -0800 Subject: [PATCH 3/6] Meter combo box goes away if outside click. --- meter.cpp | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/meter.cpp b/meter.cpp index ff78f9c..5d147ef 100644 --- a/meter.cpp +++ b/meter.cpp @@ -63,9 +63,9 @@ meter::meter(QWidget *parent) : QWidget(parent) connect(combo, SIGNAL(activated(int)), this, SLOT(acceptComboItem(int))); //connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(acceptComboItem(int))); + this->setToolTip(""); combo->hide(); this->installEventFilter(this); - } void meter::setCompReverse(bool reverse) { @@ -125,12 +125,23 @@ void meter::clearMeter() update(); } -void meter::setMeterType(meter_t type) +void meter::setMeterType(meter_t m_type_req) { - if(type == meterType) + if(m_type_req == meterType) return; - meterType = type; + if( (m_type_req == meterS) || (m_type_req == meterPower) ) { + this->setToolTip(""); + } else { + this->setToolTip("Double-click to select meter type."); + } + + int m_index = combo->findData(m_type_req); + combo->blockSignals(true); + combo->setCurrentIndex(m_index); + combo->blockSignals(false); + + meterType = m_type_req; // clear average and peak vectors: this->clearMeter(); } @@ -179,13 +190,26 @@ void meter::handleDoubleClick() { } bool meter::eventFilter(QObject *object, QEvent *event) { + + if( (freezeDrawing) && (event->type() == QEvent::MouseButtonPress) ) { + combo->hide(); + freezeDrawing = false; + return true; + } + + if( (freezeDrawing) && (event->type() == QEvent::MouseButtonDblClick) ) { + combo->hide(); + freezeDrawing = false; + return true; + } + if(event->type() == QEvent::MouseButtonDblClick) { - qDebug() << "Mouse double click event in meter widget"; if( !(meterType == meterS || meterType == meterPower)) { handleDoubleClick(); } return true; } + (void)object; return false; } From 727daf6f071578a55d9cdad84568ace72cb38144 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Sat, 10 Feb 2024 12:58:16 -0800 Subject: [PATCH 4/6] Meters on by default, sort of. On but set to none. --- meter.cpp | 2 ++ wfmain.cpp | 9 --------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/meter.cpp b/meter.cpp index 5d147ef..9c2ad33 100644 --- a/meter.cpp +++ b/meter.cpp @@ -277,6 +277,8 @@ void meter::paintEvent(QPaintEvent *) } break; case meterNone: + label = "Double-click to set meter"; + drawLabel(&painter); return; break; case meterAudio: diff --git a/wfmain.cpp b/wfmain.cpp index 5fb5a92..611d6bc 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -748,14 +748,6 @@ void wfmain::receiveNetworkAudioLevels(networkAudioLevels l) void wfmain::setupMainUI() { - ui->meter2Widget->hide(); - ui->meter3Widget->hide(); - - // Future ideas: - //ui->meter2selectionCombo->addItem("Transmit Audio", meterTxMod); - //ui->meter2selectionCombo->addItem("Receive Audio", meterRxAudio); - //ui->meter2selectionCombo->addItem("Latency", meterLatency); - // Set scroll wheel response (tick interval) // and set arrow key response (single step) ui->rfGainSlider->setTickInterval(100); @@ -5085,7 +5077,6 @@ void wfmain::changeMeterType(meter_t m, int meterNum) if(newMeterType==meterNone) { - uiMeter->hide(); uiMeter->setMeterType(newMeterType); } else { uiMeter->show(); From a1ef2a99d3a2d15175e17b43686fa8a39265e087 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Sat, 10 Feb 2024 13:07:03 -0800 Subject: [PATCH 5/6] Removed some old code --- wfmain.cpp | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/wfmain.cpp b/wfmain.cpp index 611d6bc..1633487 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -709,29 +709,6 @@ void wfmain::receiveStatusUpdate(networkStatus status) void wfmain::receiveNetworkAudioLevels(networkAudioLevels l) { - /* - meter_t m2mtr = ui->meter2Widget->getMeterType(); - - if(m2mtr == meterAudio) - { - if(amTransmitting) - { - if(l.haveTxLevels) - ui->meter2Widget->setLevels(l.txAudioRMS, l.txAudioPeak); - } else { - if(l.haveRxLevels) - ui->meter2Widget->setLevels(l.rxAudioRMS, l.rxAudioPeak); - } - } else if (m2mtr == meterTxMod) { - if(l.haveTxLevels) - ui->meter2Widget->setLevels(l.txAudioRMS, l.txAudioPeak); - } else if (m2mtr == meterRxAudio) { - if(l.haveRxLevels) - ui->meter2Widget->setLevels(l.rxAudioRMS, l.rxAudioPeak); - } - */ - - meter_t m = meterNone; if(l.haveRxLevels) { @@ -743,7 +720,6 @@ void wfmain::receiveNetworkAudioLevels(networkAudioLevels l) m = meterTxMod; receiveMeter(m, l.txAudioPeak); } - } void wfmain::setupMainUI() From a35155d418eafd5811b7a54386e1367c45b7caf0 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Sat, 10 Feb 2024 13:44:23 -0800 Subject: [PATCH 6/6] FLoating point scroll wheel support added. --- freqctrl.cpp | 26 ++++++++++++++++++++++++-- freqctrl.h | 5 +++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/freqctrl.cpp b/freqctrl.cpp index 169b292..7650466 100644 --- a/freqctrl.cpp +++ b/freqctrl.cpp @@ -536,8 +536,29 @@ void freqCtrl::wheelEvent(QWheelEvent *event) QPointF pt = event->position(); #endif int delta = m_InvertScrolling ? -event->angleDelta().y() : event->angleDelta().y(); - int numDegrees = delta / 8; - int numSteps = numDegrees / 15; + qreal numDegrees = delta / 8; + qreal offset = numDegrees / 15; + + + qreal stepsToScroll = QApplication::wheelScrollLines() * offset; + + if( (scrollWheelOffsetAccumulated > 0) && (offset > 0) ) { + scrollWheelOffsetAccumulated += stepsToScroll; + } else if ((scrollWheelOffsetAccumulated < 0) && (offset < 0)) { + scrollWheelOffsetAccumulated += stepsToScroll; + } else { + // Changed direction, zap the old accumulation: + scrollWheelOffsetAccumulated = stepsToScroll; + //qInfo() << "Scroll changed direction"; + } + + int numSteps = int(scrollWheelOffsetAccumulated); + + if(!numSteps) { + // we have not accumulated enough for a complete step. + // come back later. + return; + } for (int i = m_DigStart; i < m_NumDigits; i++) { @@ -549,6 +570,7 @@ void freqCtrl::wheelEvent(QWheelEvent *event) decFreq(); } } + scrollWheelOffsetAccumulated = 0; } void freqCtrl::keyPressEvent(QKeyEvent *event) diff --git a/freqctrl.h b/freqctrl.h index 959beba..424468d 100644 --- a/freqctrl.h +++ b/freqctrl.h @@ -9,6 +9,7 @@ #include #include #include +#include enum FctlUnit { FCTL_UNIT_NONE, // Freq displayed without unit: 14.236.000 @@ -110,6 +111,10 @@ private: int m_DecPos; int m_NumSeps; + int scrollYperClick = 24; + int scrollXperClick = 24; + qreal scrollWheelOffsetAccumulated=0; + qint64 m_MinStep; qint64 m_freq; qint64 m_Oldfreq;