Allow on-screen adjustment of filter width

half-duplex
Phil Taylor 2023-01-13 18:14:11 +00:00
rodzic 5c210f0699
commit efb953a8c9
2 zmienionych plików z 71 dodań i 18 usunięć

Wyświetl plik

@ -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<quint16>(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<quint16>(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<quint16>(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<QCPItemText*> (item);
QCPItemRect* rectItem = dynamic_cast<QCPItemRect*> (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<QString, spotData*>::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<QCPItemText*> (item);
QCPItemRect* rectItem = dynamic_cast<QCPItemRect*> (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);
}

Wyświetl plik

@ -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);