From 11b23ae9cd4ec961b9a35571d428a6f27b2eef18 Mon Sep 17 00:00:00 2001 From: Uwe Risse Date: Mon, 10 Jan 2022 19:59:28 +0100 Subject: [PATCH 1/6] A more balanced stretching --- widgets/mainwindow.ui | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index e77826657..ef5830860 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -7,7 +7,7 @@ 0 0 882 - 718 + 658 @@ -560,7 +560,7 @@ - + From fb4eb56508e24da65fac00e6a5892a768a4df20b Mon Sep 17 00:00:00 2001 From: Uwe Risse Date: Mon, 10 Jan 2022 20:16:54 +0100 Subject: [PATCH 2/6] Minor tooltip cleanup --- widgets/mainwindow.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index ef5830860..a6c208480 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -2871,7 +2871,7 @@ QLabel[oob="true"] { - Toggle FT8 hound mode on/off + Toggle FT8 hound mode On/Off H From 947ab4eb2570b984c2bd950ff1b518ce25d84965 Mon Sep 17 00:00:00 2001 From: Uwe Risse Date: Tue, 11 Jan 2022 10:51:48 +0100 Subject: [PATCH 3/6] Add features Highlight DX Call / DX Grid and Clear DX Call / DX Grid after QSO --- Configuration.cpp | 24 +++++++++++ Configuration.hpp | 4 ++ Configuration.ui | 96 +++++++++++++++++++++++++++--------------- widgets/mainwindow.cpp | 11 +++++ 4 files changed, 101 insertions(+), 34 deletions(-) diff --git a/Configuration.cpp b/Configuration.cpp index 386c1ee1d..f5bb816e3 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -670,6 +670,10 @@ private: bool bLowSidelobes_; bool pwrBandTxMemory_; bool pwrBandTuneMemory_; + bool highlight_DXcall_; + bool clear_DXcall_; + bool highlight_DXgrid_; + bool clear_DXgrid_; QAudioDeviceInfo audio_input_device_; QAudioDeviceInfo next_audio_input_device_; @@ -787,6 +791,10 @@ DecodeHighlightingModel const& Configuration::decode_highlighting () const {retu bool Configuration::highlight_by_mode () const {return m_->highlight_by_mode_;} bool Configuration::highlight_only_fields () const {return m_->highlight_only_fields_;} bool Configuration::include_WAE_entities () const {return m_->include_WAE_entities_;} +bool Configuration::highlight_DXcall () const {return m_->highlight_DXcall_;} +bool Configuration::clear_DXcall () const {return m_->clear_DXcall_;} +bool Configuration::highlight_DXgrid () const {return m_->highlight_DXgrid_;} +bool Configuration::clear_DXgrid () const {return m_->clear_DXgrid_;} void Configuration::set_calibration (CalibrationParams params) { @@ -1422,6 +1430,10 @@ void Configuration::impl::initialize_models () ui_->only_fields_check_box->setChecked (highlight_only_fields_); ui_->include_WAE_check_box->setChecked (include_WAE_entities_); ui_->LotW_days_since_upload_spin_box->setValue (LotW_days_since_upload_); + ui_->cbHighlightDXcall->setChecked(highlight_DXcall_); + ui_->cbClearDXcall->setChecked(clear_DXcall_); + ui_->cbHighlightDXgrid->setChecked(highlight_DXgrid_); + ui_->cbClearDXgrid->setChecked(clear_DXgrid_); set_rig_invariants (); } @@ -1578,6 +1590,10 @@ void Configuration::impl::read_settings () calibration_.slope_ppm = settings_->value ("CalibrationSlopePPM", 0.).toDouble (); pwrBandTxMemory_ = settings_->value("pwrBandTxMemory",false).toBool (); pwrBandTuneMemory_ = settings_->value("pwrBandTuneMemory",false).toBool (); + highlight_DXcall_ = settings_->value("highlight_DXcall",false).toBool (); + clear_DXcall_ = settings_->value("clear_DXcall",false).toBool (); + highlight_DXgrid_ = settings_->value("highlight_DXgrid",false).toBool (); + clear_DXgrid_ = settings_->value("clear_DXgrid",false).toBool (); } void Configuration::impl::find_audio_devices () @@ -1709,6 +1725,10 @@ void Configuration::impl::write_settings () settings_->setValue ("pwrBandTuneMemory", pwrBandTuneMemory_); settings_->setValue ("Region", QVariant::fromValue (region_)); settings_->setValue ("AutoGrid", use_dynamic_grid_); + settings_->setValue ("highlight_DXcall", highlight_DXcall_); + settings_->setValue ("clear_DXcall", clear_DXcall_); + settings_->setValue ("highlight_DXgrid", highlight_DXgrid_); + settings_->setValue ("clear_DXgrid", clear_DXgrid_); settings_->sync (); } @@ -2196,6 +2216,10 @@ void Configuration::impl::accept () dynamic_grid_.clear (); } use_dynamic_grid_ = ui_->use_dynamic_grid->isChecked(); + highlight_DXcall_ = ui_->cbHighlightDXcall->isChecked(); + clear_DXcall_ = ui_->cbClearDXcall->isChecked(); + highlight_DXgrid_ = ui_->cbHighlightDXgrid->isChecked(); + clear_DXgrid_ = ui_->cbClearDXgrid->isChecked(); write_settings (); // make visible to all } diff --git a/Configuration.hpp b/Configuration.hpp index 5f9e30bbf..cb45858a3 100644 --- a/Configuration.hpp +++ b/Configuration.hpp @@ -184,6 +184,10 @@ public: void setSpecial_Hound(); void setSpecial_Fox(); void setSpecial_None(); + bool highlight_DXcall () const; + bool clear_DXcall () const; + bool highlight_DXgrid () const; + bool clear_DXgrid () const; enum class SpecialOperatingActivity {NONE, NA_VHF, EU_VHF, FIELD_DAY, RTTY, WW_DIGI, FOX, HOUND}; SpecialOperatingActivity special_op_id () const; diff --git a/Configuration.ui b/Configuration.ui index 17fd1a326..e08657002 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -181,29 +181,6 @@ - - - - Show if decoded stations are new DXCC entities or worked before. - - - Show &DXCC, grid, and worked-before status - - - false - - - - - - - <html><head/><body><p>Check to have decodes for a new period start at the top of the Band Activity window and not scroll off the top when the window is full.</p><p>This is to aid selecting decodes to double-click while decoding is still in progress. Use the Band Activity vertical scroll bar to reveal decodes past the bottom of the window.</p></body></html> - - - Start new period decodes at top - - - @@ -265,13 +242,10 @@ - - - - Include a separator line between periods in the band activity window. - + + - &Blank line between decoding periods + Highlight DX Call in message @@ -285,6 +259,60 @@ + + + + Show if decoded stations are new DXCC entities or worked before. + + + Show &DXCC, grid, and worked-before status + + + false + + + + + + + <html><head/><body><p>Check to have decodes for a new period start at the top of the Band Activity window and not scroll off the top when the window is full.</p><p>This is to aid selecting decodes to double-click while decoding is still in progress. Use the Band Activity vertical scroll bar to reveal decodes past the bottom of the window.</p></body></html> + + + Start new period decodes at top + + + + + + + Clear DX Grid after QSO + + + + + + + Include a separator line between periods in the band activity window. + + + &Blank line between decoding periods + + + + + + + Highlight DX Grid in message + + + + + + + Clear DX Call after QSO + + + @@ -3233,13 +3261,13 @@ Right click for insert and delete options. + + + + - - - - - + diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 5138b1253..81b962c8c 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3457,6 +3457,15 @@ void MainWindow::readFromStdout() //readFromStdout ui->cbCQonly->isVisible() && ui->cbCQonly->isChecked(), haveFSpread, fSpread); + if (m_config.highlight_DXcall () && (m_hisCall!="") && ((decodedtext.string().contains(QRegularExpression {"(\\w+) " + m_hisCall})) + || (decodedtext.string().contains(QRegularExpression {"(\\w+) <" + m_hisCall +">"})) + || (decodedtext.string().contains(QRegularExpression {"<(\\w+)> " + m_hisCall})))) { + ui->decodedTextBrowser->highlight_callsign(m_hisCall, QColor(255,0,0), QColor(255,255,255), true); // highlight dxCallEntry + } + if (m_config.highlight_DXgrid () && (m_hisGrid!="") && (decodedtext.string().contains(m_hisGrid))) { + ui->decodedTextBrowser->highlight_callsign(m_hisGrid, QColor(0,0,255), QColor(255,255,255), true); // highlight dxGridEntry + } + if(m_bBestSPArmed && m_mode=="FT4" && CALLING == m_QSOProgress) { QString messagePriority=ui->decodedTextBrowser->CQPriority(); if(messagePriority!="") { @@ -6013,6 +6022,8 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, m_xSent.clear (); m_xRcvd.clear (); + if (m_config.clear_DXcall ()) ui->dxCallEntry->clear (); + if (m_config.clear_DXgrid ()) ui->dxGridEntry->clear (); } qint64 MainWindow::nWidgets(QString t) From 3a765e3b1229e261edee9fe0a54ca9ccff020c2d Mon Sep 17 00:00:00 2001 From: Uwe Risse Date: Tue, 11 Jan 2022 14:35:15 +0100 Subject: [PATCH 4/6] Add optional highlighting of messages with 73 or RR73 --- Configuration.cpp | 7 +++++++ Configuration.hpp | 1 + Configuration.ui | 45 ++++++++++++++++++++++++----------------- widgets/displaytext.cpp | 5 +++-- 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/Configuration.cpp b/Configuration.cpp index f5bb816e3..661a42d6e 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -593,6 +593,7 @@ private: bool highlight_by_mode_; bool highlight_only_fields_; bool include_WAE_entities_; + bool highlight_73_; int LotW_days_since_upload_; TransceiverFactory::ParameterPack rig_params_; @@ -791,6 +792,7 @@ DecodeHighlightingModel const& Configuration::decode_highlighting () const {retu bool Configuration::highlight_by_mode () const {return m_->highlight_by_mode_;} bool Configuration::highlight_only_fields () const {return m_->highlight_only_fields_;} bool Configuration::include_WAE_entities () const {return m_->include_WAE_entities_;} +bool Configuration::highlight_73 () const {return m_->highlight_73_;} bool Configuration::highlight_DXcall () const {return m_->highlight_DXcall_;} bool Configuration::clear_DXcall () const {return m_->clear_DXcall_;} bool Configuration::highlight_DXgrid () const {return m_->highlight_DXgrid_;} @@ -1016,6 +1018,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network , highlight_by_mode_ {false} , highlight_only_fields_ {false} , include_WAE_entities_ {false} + , highlight_73_ {false} , LotW_days_since_upload_ {0} , last_port_type_ {TransceiverFactory::Capabilities::none} , rig_is_dummy_ {false} @@ -1429,6 +1432,7 @@ void Configuration::impl::initialize_models () ui_->highlight_by_mode_check_box->setChecked (highlight_by_mode_); ui_->only_fields_check_box->setChecked (highlight_only_fields_); ui_->include_WAE_check_box->setChecked (include_WAE_entities_); + ui_->highlight_73_check_box->setChecked (highlight_73_); ui_->LotW_days_since_upload_spin_box->setValue (LotW_days_since_upload_); ui_->cbHighlightDXcall->setChecked(highlight_DXcall_); ui_->cbClearDXcall->setChecked(clear_DXcall_); @@ -1528,6 +1532,7 @@ void Configuration::impl::read_settings () highlight_by_mode_ = settings_->value("HighlightByMode", false).toBool (); highlight_only_fields_ = settings_->value("OnlyFieldsSought", false).toBool (); include_WAE_entities_ = settings_->value("IncludeWAEEntities", false).toBool (); + highlight_73_ = settings_->value("Highlight73", false).toBool (); LotW_days_since_upload_ = settings_->value ("LotWDaysSinceLastUpload", 365).toInt (); lotw_users_.set_age_constraint (LotW_days_since_upload_); @@ -1666,6 +1671,7 @@ void Configuration::impl::write_settings () settings_->setValue ("HighlightByMode", highlight_by_mode_); settings_->setValue ("OnlyFieldsSought", highlight_only_fields_); settings_->setValue ("IncludeWAEEntities", include_WAE_entities_); + settings_->setValue ("Highlight73", highlight_73_); settings_->setValue ("LotWDaysSinceLastUpload", LotW_days_since_upload_); settings_->setValue ("toRTTY", log_as_RTTY_); settings_->setValue ("dBtoComments", report_in_comments_); @@ -2207,6 +2213,7 @@ void Configuration::impl::accept () highlight_by_mode_ = ui_->highlight_by_mode_check_box->isChecked (); highlight_only_fields_ = ui_->only_fields_check_box->isChecked (); include_WAE_entities_ = ui_->include_WAE_check_box->isChecked (); + highlight_73_ = ui_->highlight_73_check_box->isChecked (); LotW_days_since_upload_ = ui_->LotW_days_since_upload_spin_box->value (); lotw_users_.set_age_constraint (LotW_days_since_upload_); diff --git a/Configuration.hpp b/Configuration.hpp index cb45858a3..c4cf068ec 100644 --- a/Configuration.hpp +++ b/Configuration.hpp @@ -181,6 +181,7 @@ public: bool highlight_by_mode () const; bool highlight_only_fields () const; bool include_WAE_entities () const; + bool highlight_73 () const; void setSpecial_Hound(); void setSpecial_Fox(); void setSpecial_None(); diff --git a/Configuration.ui b/Configuration.ui index e08657002..c64160476 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -7,7 +7,7 @@ 0 0 554 - 560 + 599 @@ -17,7 +17,7 @@ - 0 + 6 @@ -2330,6 +2330,23 @@ Right click for insert and delete options. + + + + Include extra WAE entities + + + + + + + Check to for grid highlighting to only apply to unworked grid fields + + + Only grid Fields sought + + + @@ -2377,20 +2394,10 @@ Right click for insert and delete options. - - + + - Include extra WAE entities - - - - - - - Check to for grid highlighting to only apply to unworked grid fields - - - Only grid Fields sought + Highlight also messages with 73 or RR73 @@ -3262,12 +3269,12 @@ Right click for insert and delete options. - - + + + + - - diff --git a/widgets/displaytext.cpp b/widgets/displaytext.cpp index d784ead1b..d588573a9 100644 --- a/widgets/displaytext.cpp +++ b/widgets/displaytext.cpp @@ -404,6 +404,7 @@ void DisplayText::displayDecodedText(DecodedText const& decodedText, QString con QColor bg; QColor fg; bool CQcall = false; + auto is_73 = decodedText.messageWords().filter (QRegularExpression {"^(73|RR73)$"}).size(); if (decodedText.string ().contains (" CQ ") || decodedText.string ().contains (" CQDX ") || decodedText.string ().contains (" QRZ ")) @@ -446,14 +447,14 @@ void DisplayText::displayDecodedText(DecodedText const& decodedText, QString con message = message.left (ap_pos).trimmed (); } m_CQPriority=""; - if (CQcall) + if (CQcall || (is_73 && (m_config->highlight_73 ()))) { if (displayDXCCEntity) { // if enabled add the DXCC entity and B4 status to the end of the // preformated text line t1 auto currentMode = mode; - message = appendWorkedB4 (message, decodedText.CQersCall(), dxGrid, &bg, &fg + message = appendWorkedB4 (message, dxCall, dxGrid, &bg, &fg , logBook, currentBand, currentMode, extra); } else From 151f0f0ab34dbb7c0e00666cbf83224c049a14e3 Mon Sep 17 00:00:00 2001 From: Uwe Risse Date: Tue, 18 Jan 2022 10:18:10 +0100 Subject: [PATCH 5/6] Set Tune watchdog to 120 seconds --- widgets/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 81b962c8c..d152e354c 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -7049,7 +7049,7 @@ void MainWindow::on_rptSpinBox_valueChanged(int n) void MainWindow::on_tuneButton_clicked (bool checked) { - tuneATU_Timer.start (60000); // tune watchdog (60s) + tuneATU_Timer.start (120000); // tune watchdog (120s) static bool lastChecked = false; if (lastChecked == checked) return; lastChecked = checked; From 4b6886cdd09dca01a3a043756b8d32e3d269b3e6 Mon Sep 17 00:00:00 2001 From: Uwe Risse Date: Tue, 18 Jan 2022 17:10:41 +0100 Subject: [PATCH 6/6] Add options to the writing of ALL.TXT --- widgets/mainwindow.cpp | 18 ++++++++++++++++++ widgets/mainwindow.ui | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index d152e354c..a92e1c359 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -604,6 +604,12 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, ui->actionSave_decoded->setActionGroup(saveGroup); ui->actionSave_all->setActionGroup(saveGroup); + QActionGroup* alltxtGroup = new QActionGroup(this); + ui->actionDon_t_split_ALL_TXT->setActionGroup(alltxtGroup); + ui->actionSplit_ALL_TXT_yearly->setActionGroup(alltxtGroup); + ui->actionSplit_ALL_TXT_monthly->setActionGroup(alltxtGroup); + ui->actionDisable_writing_of_ALL_TXT->setActionGroup(alltxtGroup); + QActionGroup* DepthGroup = new QActionGroup(this); ui->actionQuickDecode->setActionGroup(DepthGroup); ui->actionMediumDecode->setActionGroup(DepthGroup); @@ -1188,6 +1194,10 @@ void MainWindow::writeSettings() } m_settings->setValue ("PhaseEqualizationCoefficients", QVariant {coeffs}); } + m_settings->setValue ("actionDontSplitALLTXT", ui->actionDon_t_split_ALL_TXT->isChecked() ); + m_settings->setValue ("splitAllTxtYearly", ui->actionSplit_ALL_TXT_yearly->isChecked() ); + m_settings->setValue ("splitAllTxtMonthly", ui->actionSplit_ALL_TXT_monthly->isChecked() ); + m_settings->setValue ("disableWritingOfAllTxt", ui->actionDisable_writing_of_ALL_TXT->isChecked() ); m_settings->endGroup(); } @@ -1230,6 +1240,10 @@ void MainWindow::readSettings() ui->actionAstronomical_data->setChecked (displayAstro); m_settings->beginGroup("Common"); + ui->actionDon_t_split_ALL_TXT->setChecked(m_settings->value("actionDontSplitALLTXT", true).toBool()); + ui->actionSplit_ALL_TXT_yearly->setChecked(m_settings->value("splitAllTxtYearly", false).toBool()); + ui->actionSplit_ALL_TXT_monthly->setChecked(m_settings->value("splitAllTxtMonthly", false).toBool()); + ui->actionDisable_writing_of_ALL_TXT->setChecked(m_settings->value("disableWritingOfAllTxt", false).toBool()); m_mode=m_settings->value("Mode","JT9").toString(); ui->actionNone->setChecked(m_settings->value("SaveNone",true).toBool()); ui->actionSave_decoded->setChecked(m_settings->value("SaveDecoded",false).toBool()); @@ -9237,6 +9251,7 @@ void MainWindow::foxTest() void MainWindow::write_all(QString txRx, QString message) { + if (!(ui->actionDisable_writing_of_ALL_TXT->isChecked())) { QString line; QString t; QString msg; @@ -9277,6 +9292,8 @@ void MainWindow::write_all(QString txRx, QString message) } QString file_name="ALL.TXT"; + if (ui->actionSplit_ALL_TXT_yearly->isChecked()) file_name=(time.toString("yyyy") + "-" + "ALL.TXT"); + if (ui->actionSplit_ALL_TXT_monthly->isChecked()) file_name=(time.toString("yyyy-MM") + "-" + "ALL.TXT"); if (m_mode=="WSPR") file_name="ALL_WSPR.TXT"; QFile f{m_config.writeable_data_dir().absoluteFilePath(file_name)}; if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { @@ -9295,6 +9312,7 @@ void MainWindow::write_all(QString txRx, QString message) QTimer::singleShot (0, [=] { // don't block guiUpdate MessageBox::warning_message(this, tr ("Log File Error"), message2); }); } + } } void MainWindow::chkFT4() diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index a6c208480..ce38d9c6c 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -3036,6 +3036,11 @@ QLabel[oob="true"] { + + + + + @@ -3584,6 +3589,41 @@ QLabel[oob="true"] { Quick-Start Guide to WSJT-X 2.5.0 and MAP65 3.0 + + + true + + + true + + + Don't split ALL.TXT + + + + + true + + + Split ALL.TXT yearly + + + + + true + + + Split ALL.TXT monthly + + + + + true + + + Disable writing of ALL.TXT + +