Merge branch 'feat-a7-UR' of bitbucket.org:k1jt/wsjtx into feat-a7-UR

This commit is contained in:
Joe Taylor 2022-01-18 11:17:07 -05:00
commit 12cbf366fe
6 changed files with 197 additions and 56 deletions

View File

@ -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_;
@ -670,6 +671,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 +792,11 @@ 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_;}
bool Configuration::clear_DXgrid () const {return m_->clear_DXgrid_;}
void Configuration::set_calibration (CalibrationParams params)
{
@ -1008,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}
@ -1421,7 +1432,12 @@ 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_);
ui_->cbHighlightDXgrid->setChecked(highlight_DXgrid_);
ui_->cbClearDXgrid->setChecked(clear_DXgrid_);
set_rig_invariants ();
}
@ -1516,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_);
@ -1578,6 +1595,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 ()
@ -1650,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_);
@ -1709,6 +1731,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 ();
}
@ -2187,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_);
@ -2196,6 +2223,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
}

View File

@ -181,9 +181,14 @@ 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();
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;

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>554</width>
<height>560</height>
<height>599</height>
</rect>
</property>
<property name="windowTitle">
@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="configuration_tabs">
<property name="currentIndex">
<number>0</number>
<number>6</number>
</property>
<widget class="QWidget" name="general_tab">
<attribute name="title">
@ -181,29 +181,6 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="DXCC_check_box">
<property name="toolTip">
<string>Show if decoded stations are new DXCC entities or worked before.</string>
</property>
<property name="text">
<string>Show &amp;DXCC, grid, and worked-before status</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="decodes_from_top_check_box">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;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.&lt;/p&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Start new period decodes at top</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="ppfx_check_box">
<property name="text">
@ -265,13 +242,10 @@
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="insert_blank_check_box">
<property name="toolTip">
<string>Include a separator line between periods in the band activity window.</string>
</property>
<item row="5" column="0">
<widget class="QCheckBox" name="cbHighlightDXcall">
<property name="text">
<string>&amp;Blank line between decoding periods</string>
<string>Highlight DX Call in message</string>
</property>
</widget>
</item>
@ -285,6 +259,60 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="DXCC_check_box">
<property name="toolTip">
<string>Show if decoded stations are new DXCC entities or worked before.</string>
</property>
<property name="text">
<string>Show &amp;DXCC, grid, and worked-before status</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="decodes_from_top_check_box">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;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.&lt;/p&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Start new period decodes at top</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QCheckBox" name="cbClearDXgrid">
<property name="text">
<string>Clear DX Grid after QSO</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="insert_blank_check_box">
<property name="toolTip">
<string>Include a separator line between periods in the band activity window.</string>
</property>
<property name="text">
<string>&amp;Blank line between decoding periods</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QCheckBox" name="cbHighlightDXgrid">
<property name="text">
<string>Highlight DX Grid in message</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="cbClearDXcall">
<property name="text">
<string>Clear DX Call after QSO</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -2302,6 +2330,23 @@ Right click for insert and delete options.</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="include_WAE_check_box">
<property name="text">
<string>Include extra WAE entities</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="only_fields_check_box">
<property name="toolTip">
<string>Check to for grid highlighting to only apply to unworked grid fields</string>
</property>
<property name="text">
<string>Only grid Fields sought</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="DecodeHighlightingListView" name="highlighting_list_view">
<property name="sizePolicy">
@ -2349,20 +2394,10 @@ Right click for insert and delete options.</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="include_WAE_check_box">
<item row="5" column="0">
<widget class="QCheckBox" name="highlight_73_check_box">
<property name="text">
<string>Include extra WAE entities</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="only_fields_check_box">
<property name="toolTip">
<string>Check to for grid highlighting to only apply to unworked grid fields</string>
</property>
<property name="text">
<string>Only grid Fields sought</string>
<string>Highlight also messages with 73 or RR73</string>
</property>
</widget>
</item>
@ -3233,13 +3268,13 @@ Right click for insert and delete options.</string>
</connection>
</connections>
<buttongroups>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="special_op_activity_button_group"/>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="special_op_activity_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="split_mode_button_group"/>
</buttongroups>
</ui>

View File

@ -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

View File

@ -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());
@ -3457,6 +3471,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 +6036,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)
@ -7038,7 +7063,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;
@ -9226,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;
@ -9266,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)) {
@ -9284,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()

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>882</width>
<height>718</height>
<height>658</height>
</rect>
</property>
<property name="windowTitle">
@ -560,7 +560,7 @@
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_5" rowstretch="1,0,0" columnstretch="0,0,0,1,4,0">
<layout class="QGridLayout" name="gridLayout_5" rowstretch="1,0,0" columnstretch="0,0,0,1,3,0">
<item row="0" column="5">
<widget class="QLabel" name="label">
<property name="text">
@ -2871,7 +2871,7 @@ QLabel[oob=&quot;true&quot;] {
</size>
</property>
<property name="toolTip">
<string>Toggle FT8 hound mode on/off</string>
<string>Toggle FT8 hound mode On/Off</string>
</property>
<property name="text">
<string>H</string>
@ -3036,6 +3036,11 @@ QLabel[oob=&quot;true&quot;] {
<addaction name="actionNone"/>
<addaction name="actionSave_decoded"/>
<addaction name="actionSave_all"/>
<addaction name="separator"/>
<addaction name="actionDon_t_split_ALL_TXT"/>
<addaction name="actionSplit_ALL_TXT_yearly"/>
<addaction name="actionSplit_ALL_TXT_monthly"/>
<addaction name="actionDisable_writing_of_ALL_TXT"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
@ -3584,6 +3589,41 @@ QLabel[oob=&quot;true&quot;] {
<string>Quick-Start Guide to WSJT-X 2.5.0 and MAP65 3.0</string>
</property>
</action>
<action name="actionDon_t_split_ALL_TXT">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>Don't split ALL.TXT</string>
</property>
</action>
<action name="actionSplit_ALL_TXT_yearly">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Split ALL.TXT yearly</string>
</property>
</action>
<action name="actionSplit_ALL_TXT_monthly">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Split ALL.TXT monthly</string>
</property>
</action>
<action name="actionDisable_writing_of_ALL_TXT">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Disable writing of ALL.TXT</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>