diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 8626a0588..f5866a30f 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3450,6 +3450,7 @@ void MainWindow::ARRL_Digi_Update(DecodedText dt) m_recentCall[deCall]=rc; m_points=m_activeCall.value(deCall).points; } + updateRate(); } void MainWindow::ARRL_Digi_Display() @@ -3755,18 +3756,18 @@ void MainWindow::readFromStdout() //readFromStdout } } if(m_bCallingCQ && !m_bAutoReply && for_us && SpecOp::FOX > m_config.special_op_id()) { - bool bActiveStations=false; - if(ui->respondComboBox->currentText()=="CQ: First") bActiveStations=true; - - if(ui->respondComboBox->currentText()=="CQ: Max Dist" and m_ActiveStationsWidget==NULL) bActiveStations=true; - if(m_ActiveStationsWidget!=NULL and !m_ActiveStationsWidget->isVisible()) bActiveStations=true; - if(bActiveStations) { + bool bProcessMsgNormally=ui->respondComboBox->currentText()=="CQ: First" or + (ui->respondComboBox->currentText()=="CQ: Max Dist" and m_ActiveStationsWidget==NULL) or + (m_ActiveStationsWidget!=NULL and !m_ActiveStationsWidget->isVisible()); + QString t=decodedtext.messageWords()[4]; + if(t.contains("R+") or t.contains("R-") or t.contains("R ")) bProcessMsgNormally=true; + if(bProcessMsgNormally) { m_bDoubleClicked=true; m_bAutoReply = true; processMessage (decodedtext); } - if(!bActiveStations and m_ActiveStationsWidget and ui->respondComboBox->currentText()=="CQ: Max Dist") { + if(!bProcessMsgNormally and m_ActiveStationsWidget and ui->respondComboBox->currentText()=="CQ: Max Dist") { QString deCall; QString deGrid; decodedtext.deCallAndGrid(/*out*/deCall,deGrid); @@ -6322,20 +6323,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, al.band=band; al.points=points; m_arrl_log.append(al); - int iz=m_arrl_log.size(); - int rate=0; - int nbc=0; - - for(int i=iz-1; i>=0; i--) { - double hrDiff = m_arrl_log[i].time.msecsTo(al.time)/3600000.0; - if(hrDiff > 1.0) break; - rate += m_arrl_log[i].points; - if(isetRate(rate); - m_ActiveStationsWidget->setScore(m_score); - m_ActiveStationsWidget->setBandChanges(nbc); + updateRate(); } m_xSent.clear (); @@ -6344,6 +6332,24 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, if (m_config.clear_DXgrid ()) ui->dxGridEntry->clear (); } +void MainWindow::updateRate() +{ + int iz=m_arrl_log.size(); + int rate=0; + int nbc=0; + double hrDiff; + + for(int i=iz-1; i>=0; i--) { + hrDiff = m_arrl_log[i].time.msecsTo(QDateTime::currentDateTimeUtc())/3600000.0; + if(hrDiff > 1.0) break; + rate += m_arrl_log[i].points; + if(isetRate(rate); + m_ActiveStationsWidget->setScore(m_score); + m_ActiveStationsWidget->setBandChanges(nbc); +} + qint64 MainWindow::nWidgets(QString t) { Q_ASSERT(t.length()==N_WIDGETS); diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 8aff69d35..400b1b4ca 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -785,6 +785,7 @@ private: void CQTxFreq(); void useNextCall(); void abortQSO(); + void updateRate(); void write_all(QString txRx, QString message); bool isWorked(int itype, QString key, float fMHz=0, QString="");