From efb953a8c9f68e2be5558621411310aca9e52032 Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Fri, 13 Jan 2023 18:14:11 +0000 Subject: [PATCH] Allow on-screen adjustment of filter width --- wfmain.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++++--------- wfmain.h | 15 ++++++----- 2 files changed, 71 insertions(+), 18 deletions(-) diff --git a/wfmain.cpp b/wfmain.cpp index 1b17a47..2fcef68 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -375,9 +375,9 @@ void wfmain::rigConnections() connect(rig, SIGNAL(haveDTCS(quint16,bool,bool)), rpt, SLOT(handleDTCS(quint16,bool,bool))); connect(rig, SIGNAL(haveRptAccessMode(rptAccessTxRx)), rpt, SLOT(handleRptAccessMode(rptAccessTxRx))); - connect(this, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode())); connect(this, SIGNAL(getPassband()), rig, SLOT(getPassband())); + connect(this, SIGNAL(setPassband(quint16)), rig, SLOT(setPassband(quint16))); connect(this, SIGNAL(getTone()), rig, SLOT(getTone())); connect(this, SIGNAL(getTSQL()), rig, SLOT(getTSQL())); connect(this, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode())); @@ -3514,6 +3514,12 @@ void wfmain::doCmd(commandtype cmddata) emit getBandStackReg(bandStkBand, bandStkRegCode); break; } + case cmdSetPassband: + { + quint16 pass = (*std::static_pointer_cast(data)); + emit setPassband(pass); + break; + } default: doCmd(cmd); break; @@ -3879,6 +3885,14 @@ void wfmain::issueCmd(cmds cmd, unsigned char c) delayedCmdQue.push_back(cmddata); } +void wfmain::issueCmd(cmds cmd, quint16 c) +{ + commandtype cmddata; + cmddata.cmd = cmd; + cmddata.data = std::shared_ptr(new quint16(c)); + delayedCmdQue.push_back(cmddata); +} + void wfmain::issueCmdUniquePriority(cmds cmd, bool b) { commandtype cmddata; @@ -3915,6 +3929,15 @@ void wfmain::issueCmdUniquePriority(cmds cmd, freqt f) removeSimilarCommand(cmd); } +void wfmain::issueCmdUniquePriority(cmds cmd, quint16 c) +{ + commandtype cmddata; + cmddata.cmd = cmd; + cmddata.data = std::shared_ptr(new quint16(c)); + delayedCmdQue.push_front(cmddata); + removeSimilarCommand(cmd); +} + void wfmain::removeSimilarCommand(cmds cmd) { // pop anything out that is of the same kind of command: @@ -4568,6 +4591,13 @@ void wfmain::handlePlotClick(QMouseEvent* me) { QCPAbstractItem* item = plot->itemAt(me->pos(), true); QCPItemText* textItem = dynamic_cast (item); + QCPItemRect* rectItem = dynamic_cast (item); + if (rectItem != nullptr && ((me->pos().x()) == (int)passbandIndicator->right->pixelPosition().x() || + (me->pos().x()) == (int)passbandIndicator->left->pixelPosition().x())) + { + resizingPassband = true; + } + if (me->button() == Qt::RightButton && textItem != nullptr) { QMap::iterator spot = clusterSpots.find(textItem->text()); if (spot != clusterSpots.end() && spot.key() == textItem->text()) { @@ -4623,12 +4653,43 @@ void wfmain::handlePlotMouseRelease(QMouseEvent* me) qInfo(logGui()) << "Mouse release delta: " << delta; } + if (resizingPassband) { + resizingPassband = false; + } } void wfmain::handlePlotMouseMove(QMouseEvent *me) { QCPAbstractItem* item = plot->itemAt(me->pos(), true); QCPItemText* textItem = dynamic_cast (item); + QCPItemRect* rectItem = dynamic_cast (item); + if (rectItem != nullptr && ((me->pos().x()) == (int)passbandIndicator->right->pixelPosition().x() || + (me->pos().x()) == (int)passbandIndicator->left->pixelPosition().x())) { + setCursor(Qt::SizeHorCursor); + } + else if (!resizingPassband) { + setCursor(Qt::ArrowCursor); + } + else if (resizingPassband) { + // We are currently resizing the passband. + double left = passbandIndicator->topLeft->coords().x(); + double right = passbandIndicator->bottomRight->coords().x(); + double delta = plot->xAxis->pixelToCoord(me->pos().x()); + //passBand = delta - left; + + if (currentModeInfo.mk == modeLSB || currentModeInfo.mk == modePSK_R) { + passBand = right - delta; + } + else if (currentModeInfo.mk == modeUSB || currentModeInfo.mk == modePSK) { + passBand = delta - left; + } + else { + passBand = delta - left; + } + + issueCmdUniquePriority(cmdSetPassband, (quint16)(passBand * 1000000)); + } + if(me->buttons() == Qt::LeftButton && textItem==nullptr && prefs.clickDragTuningEnable) { double delta = plot->xAxis->pixelToCoord(me->pos().x()) - mousePressFreq; @@ -5962,17 +6023,6 @@ void wfmain::receiveLANGain(unsigned char level) void wfmain::receivePassband(quint16 pass) { -/* int calc; - if (currentModeInfo.mk == modeAM) { - calc = 200 + (pass * 200); - } - else if (pass <= 10) - { - calc = 50 + (pass * 50); - } - else { - calc = 600 + ((pass - 10) * 100); - } */ passBand = (double)(pass / 1000000.0); } diff --git a/wfmain.h b/wfmain.h index e6de4c3..3db01a1 100644 --- a/wfmain.h +++ b/wfmain.h @@ -105,7 +105,6 @@ signals: // Repeater: void getDuplexMode(); - void getPassband(); void getTone(); void getTSQL(); void getDTCS(); @@ -123,6 +122,9 @@ signals: void getMicGain(); void getSpectrumRefLevel(); void getModInputLevel(rigInput input); + void getMeters(meterKind meter); + void getPassband(); + // Level set: void setRfGain(unsigned char level); @@ -131,7 +133,7 @@ signals: void setIFShift(unsigned char level); void setTPBFInner(unsigned char level); void setTPBFOuter(unsigned char level); - + void setIFShiftWindow(unsigned char level); void setTPBFInnerWindow(unsigned char level); void setTPBFOuterWindow(unsigned char level); @@ -149,9 +151,7 @@ signals: void setACCBGain(unsigned char level); void setUSBGain(unsigned char level); void setLANGain(unsigned char level); - - void getMeters(meterKind meter); - + void setPassband(quint16 pass); // PTT, ATU, ATT, Antenna, Preamp: void getPTT(); @@ -871,7 +871,7 @@ private: cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue, cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain, cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetTPBFInner, cmdSetTPBFInner, - cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus, cmdGetPassband, + cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus, cmdGetPassband, cmdSetPassband, cmdSetATU, cmdStartATU, cmdGetSpectrumMode, cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,cmdPTTToggle, cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel, @@ -902,12 +902,14 @@ private: void issueCmd(cmds cmd, unsigned char c); void issueCmd(cmds cmd, char c); void issueCmd(cmds cmd, bool b); + void issueCmd(cmds cmd, quint16 c); // These commands pop_front and remove similar commands: void issueCmdUniquePriority(cmds cmd, bool b); void issueCmdUniquePriority(cmds cmd, unsigned char c); void issueCmdUniquePriority(cmds cmd, char c); void issueCmdUniquePriority(cmds cmd, freqt f); + void issueCmdUniquePriority(cmds cmd, quint16 c); void removeSimilarCommand(cmds cmd); @@ -1069,6 +1071,7 @@ private: rigstate* rigState = Q_NULLPTR; + bool resizingPassband = false; SERVERCONFIG serverConfig; void serverAddUserLine(const QString& user, const QString& pass, const int& type);