diff --git a/mainwindow.cpp b/mainwindow.cpp index 1dcd563..38c5e57 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -6820,7 +6820,14 @@ void MainWindow::buildRepeatMenu(QMenu *menu, QPushButton * button, int * interv void MainWindow::sendHeartbeat(){ QString mycall = m_config.my_callsign(); QString mygrid = m_config.my_grid().left(4); - QString message = QString("%1: HB %2").arg(mycall).arg(mygrid).trimmed(); + + QStringList parts; + + parts.append(QString("%1: HB").arg(mycall)); + parts.append(generateStatusFlags()); + parts.append(mygrid); + + QString message = parts.join(" ").trimmed(); auto f = m_config.heartbeat_anywhere() ? -1 : findFreeFreqOffset(500, 1000, 50); @@ -9415,19 +9422,26 @@ QString MainWindow::generateStatus() { QString lastActiveString = since(lastActive).toUpper().replace("NOW", "0M"); QStringList status; + status.append(generateStatusFlags()); + if(!lastActiveString.isEmpty()){ - status.append(lastActiveString); + status.append(lastActiveString.trimmed()); } - if(ui->autoReplyButton->isChecked()) status.append("AUTO"); - if(ui->hbMacroButton->isChecked() && m_hbInterval > 0) status.append("HB"); - if(ui->spotButton->isChecked()) status.append("SPOT"); - if(!m_config.relay_off()) status.append("RELAY"); status.append("V" + version().replace("-devel", "").replace("-rc", "")); return status.join(" ").trimmed(); } +QStringList MainWindow::generateStatusFlags() { + QStringList flags; + if(ui->hbMacroButton->isChecked() && m_hbInterval > 0) flags.append("HB"); + if(ui->autoReplyButton->isChecked()) flags.append("AUTO"); + if(!m_config.relay_off()) flags.append("RELAY"); + if(ui->spotButton->isChecked()) flags.append("SPOT"); + return flags; +} + void MainWindow::processCommandActivity() { #if 0 if (!m_txFrameQueue.isEmpty()) { diff --git a/mainwindow.h b/mainwindow.h index 58d7efb..aa8750a 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -947,6 +947,7 @@ private: void processCompoundActivity(); void processBufferedActivity(); QString generateStatus(); + QStringList generateStatusFlags(); void processCommandActivity(); QString inboxPath(); void refreshInboxCounts(); diff --git a/mainwindow.ui b/mainwindow.ui index 4be27f8..a0ca34c 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -1117,6 +1117,9 @@ QTextEdit[transmitting="true"] { 6 + + false + QFrame::Box diff --git a/varicode.cpp b/varicode.cpp index 3b1b2bb..ecf4d07 100644 --- a/varicode.cpp +++ b/varicode.cpp @@ -123,7 +123,7 @@ QRegularExpression directed_re("^" + optional_cmd_pattern + optional_num_pattern); -QRegularExpression heartbeat_re(R"(^\s*(?CQCQCQ|CQ QRPP?|CQ DX|CQ TEST|CQ( CQ){0,2}|HB)(?:\s(?[A-R]{2}[0-9]{2}))?\b)"); +QRegularExpression heartbeat_re(R"(^\s*(?CQCQCQ|CQ QRPP?|CQ DX|CQ TEST|CQ( CQ){0,2}|HB( AUTO)?( RELAY)?( SPOT)?)(?:\s(?[A-R]{2}[0-9]{2}))?\b)"); QRegularExpression compound_re("^\\s*[`]" + callsign_pattern + @@ -206,8 +206,13 @@ QMap cqs = { }; QMap hbs = { - { 0, "HB" }, // HB ACTIVE - { 1, "HB" }, // HB IDLE + { 0, "HB" }, // HB + { 1, "HB AUTO" }, // HB AUTO + { 2, "HB AUTO RELAY" }, // HB AUTO RELAY + { 3, "HB AUTO RELAY SPOT" }, // HB AUTO RELAY SPOT + { 4, "HB RELAY" }, // HB RELAY + { 5, "HB RELAY SPOT" }, // HB RELAY SPOT + { 6, "HB SPOT" }, // HB SPOT };