From 5542540e75e5dbfc1ab152b91c71ae9dfc065ea9 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Mon, 1 Mar 2021 22:20:30 +0000 Subject: [PATCH] Ensure double-click of repeated final message responds correctly --- widgets/mainwindow.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 581b0d4f2..7c688aa85 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -4184,16 +4184,15 @@ void MainWindow::guiUpdate() msg_parts[1].remove (QChar {'<'}); msg_parts[1].remove (QChar {'>'}); } - auto is_73 = m_QSOProgress >= ROGER_REPORT - && message_is_73 (m_currentMessageType, msg_parts); + auto is_73 = message_is_73 (m_currentMessageType, msg_parts); m_sentFirst73 = is_73 && !message_is_73 (m_lastMessageType, m_lastMessageSent.split (' ', SkipEmptyParts)); - if (m_sentFirst73) { + if (m_sentFirst73 || (is_73 && CALLING == m_QSOProgress)) { m_qsoStop=t2; if(m_config.id_after_73 ()) { icw[0] = m_ncw; } - if((m_config.prompt_to_log() or m_config.autoLog()) && !m_tune) logQSOTimer.start(0); + if((m_config.prompt_to_log() or m_config.autoLog()) && !m_tune && CALLING != m_QSOProgress) logQSOTimer.start(0); } bool b=(m_mode=="FT8" or m_mode=="FT4") and ui->cbAutoSeq->isChecked(); @@ -4985,9 +4984,10 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie auto const& word_3 = message_words.at (3); bool word_3_is_int; auto word_3_as_number = word_3.toInt (&word_3_is_int); - if(m_QSOProgress >= ROGER_REPORT && ("RRR" == word_3 - || (word_3_is_int && word_3_as_number == 73) - || "RR73" == word_3)) { + if (("RRR" == word_3 + || (word_3_is_int && word_3_as_number == 73) + || "RR73" == word_3 + || ("R" == word_3 && m_QSOProgress != REPORT))) { if(m_mode=="FT4" and "RR73" == word_3) m_dateTimeRcvdRR73=QDateTime::currentDateTimeUtc(); m_bTUmsg=false; m_nextCall=""; //### Temporary: disable use of "TU;" message @@ -5000,20 +5000,28 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie ui->tx3->setText(t); m_bTUmsg=true; } else { - if (SpecOp::RTTY == m_config.special_op_id () + if (SpecOp::NONE < m_config.special_op_id () && SpecOp::FOX > m_config.special_op_id () && ("RR73" == word_3 || 73 == word_3_as_number)) { logQSOTimer.start(0); m_ntx=6; ui->txrb6->setChecked(true); } + else if (word_3.startsWith ('R') && word_3 != "RRR" && m_QSOProgress != ROGER_REPORT) + { + m_ntx=4; + ui->txrb4->setChecked(true); + } else { m_ntx=5; ui->txrb5->setChecked(true); } } - m_QSOProgress = SIGNOFF; + if (m_QSOProgress >= ROGER_REPORT) + { + m_QSOProgress = SIGNOFF; + } } else if((m_QSOProgress >= REPORT || (m_QSOProgress >= REPLYING && (m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4")))