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)