diff --git a/mainwindow.cpp b/mainwindow.cpp index 1445d35..5295175 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -7417,6 +7417,43 @@ void MainWindow::buildQueryMenu(QMenu * menu, QString call){ toggleTx(true); }); + auto hwAction = menu->addAction(QString("%1 HW CPY? - How do you copy?").arg(call).trimmed()); + connect(hwAction, &QAction::triggered, this, [this](){ + + QString selectedCall = callsignSelected(); + if(selectedCall.isEmpty()){ + return; + } + + addMessageText(QString("%1 HW CPY?").arg(selectedCall), true); + toggleTx(true); + }); + + auto rrAction = menu->addAction(QString("%1 RR - Roger. Received. I copy.").arg(call).trimmed()); + connect(rrAction, &QAction::triggered, this, [this](){ + + QString selectedCall = callsignSelected(); + if(selectedCall.isEmpty()){ + return; + } + + addMessageText(QString("%1 RR").arg(selectedCall), true); + toggleTx(true); + }); + + auto fbAction = menu->addAction(QString("%1 FB - Fine Business").arg(call).trimmed()); + connect(fbAction, &QAction::triggered, this, [this](){ + + QString selectedCall = callsignSelected(); + if(selectedCall.isEmpty()){ + return; + } + + addMessageText(QString("%1 FB").arg(selectedCall), true); + toggleTx(true); + }); + + auto sevenThreeAction = menu->addAction(QString("%1 73 - I send my best regards / end of contact").arg(call).trimmed()); connect(sevenThreeAction, &QAction::triggered, this, [this](){ @@ -8933,11 +8970,11 @@ void MainWindow::processCommandActivity() { qth = grid; } - reply = QString("%1 %2").arg(d.from).arg(qth); + reply = QString("%1 QTH %2").arg(d.from).arg(qth); } // QUERIED STATION MESSAGE else if (d.cmd == "&" && !isAllCall) { - reply = QString("%1 %2").arg(d.from).arg(m_config.my_station()); + reply = QString("%1 QTC %2").arg(d.from).arg(m_config.my_station()); } // QUERIED STATIONS HEARD else if (d.cmd == "$" && !isAllCall) { diff --git a/varicode.cpp b/varicode.cpp index 1db0b79..872c566 100644 --- a/varicode.cpp +++ b/varicode.cpp @@ -44,8 +44,8 @@ QMap directed_cmds = { {"@", 1 }, // query qth {"&", 2 }, // query station message {"$", 3 }, // query station(s) heard - {"%", 5 }, // query pwr + {"%", 5 }, // query pwr {"|", 6 }, // retransmit message {"!", 7 }, // alert message {"#", 8 }, // all or nothing message @@ -54,10 +54,12 @@ QMap directed_cmds = { // {"/", 10 }, // unused? (can we even use stroke?) // directed responses - {" HW?", 18 }, // how do you copy? - {" QRZ", 19 }, // who is calling me? + {" QTC", 16 }, // this is my qtc + {" QTH", 17 }, // this is my qth + {" FB", 18 }, // fine business + {" HW CPY?", 19 }, // how do you copy? {" HEARING", 20 }, // i am hearing the following stations - {" RR", 21 }, // roger roger (not visible in UI but still exists) + {" RR", 21 }, // roger roger {" QSL?", 22 }, // do you copy? {" QSL", 23 }, // i copy {" PWR", 24 }, // power level @@ -70,12 +72,12 @@ QMap directed_cmds = { {" ", 31 }, // send freetext }; -QSet allowed_cmds = {0, 1, 2, 3, /*4,*/ 5, 6, 7, 8, /*...*/ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; +QSet allowed_cmds = {0, 1, 2, 3, /*4,*/ 5, 6, 7, 8, /*...*/ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; QSet buffered_cmds = {6, 7, 8}; QString callsign_pattern = QString("(?[A-Z0-9/]+)"); -QString optional_cmd_pattern = QString("(?\\s?(?:AGN[?]|ACK|73|YES|NO|SNR|PWR|QSL[?]?|RR|HEARING|[?@&$%|!# ]))?"); +QString optional_cmd_pattern = QString("(?\\s?(?:AGN[?]|ACK|73|YES|NO|SNR|PWR|QSL[?]?|RR|HEARING|HW CPY[?]|FB|QTH|QTC|[?@&$%|!# ]))?"); QString optional_grid_pattern = QString("(?\\s?[A-R]{2}[0-9]{2})?"); QString optional_extended_grid_pattern = QString("^(?\\s?(?:[A-R]{2}[0-9]{2}(?:[A-X]{2}(?:[0-9]{2})?)*))?"); QString optional_pwr_pattern = QString("(?(?<=PWR)\\s?\\d+\\s?[KM]?W)?");