diff --git a/CMakeLists.txt b/CMakeLists.txt index 7df320a5e..37dfddd60 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -505,6 +505,7 @@ set (wsjt_FSRCS lib/qra/q65/q65_set_list.f90 lib/refspectrum.f90 lib/savec2.f90 + lib/save_dxbase.f90 lib/sec0.f90 lib/sec_midn.f90 lib/setup65.f90 diff --git a/lib/77bit/packjt77.f90 b/lib/77bit/packjt77.f90 index b8a4ac424..23d4bdb87 100644 --- a/lib/77bit/packjt77.f90 +++ b/lib/77bit/packjt77.f90 @@ -8,6 +8,7 @@ module packjt77 character (len=13), dimension(1:MAXRECENT) :: recent_calls='' character (len=13) :: mycall13='' character (len=13) :: dxcall13='' + character (len=6) :: dxbase='' integer, dimension(1:MAXHASH) :: ihash22=-1 integer :: nzhash=0 integer n28a,n28b @@ -124,6 +125,11 @@ subroutine pack77(msg0,i3,n3,c77) integer ntel(3) msg=msg0 + if(msg(1:3).eq.'$DX') then + i1=index(msg,' ') + msg=trim(dxbase)//' '//msg(i1+1:) + endif + i3_hint=i3 n3_hint=n3 i3=-1 diff --git a/lib/save_dxbase.f90 b/lib/save_dxbase.f90 new file mode 100644 index 000000000..206dfd5e5 --- /dev/null +++ b/lib/save_dxbase.f90 @@ -0,0 +1,9 @@ +subroutine save_dxbase(dxbase0) + + use packjt77 + character*6 dxbase0 + + dxbase=dxbase0 + + return +end subroutine save_dxbase diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 4c9c5aabc..9ff4ae175 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -184,6 +184,8 @@ extern "C" { void get_ft4msg_(int* idecode, char* line, int len); void chk_samples_(int* m_ihsym,int* k, int* m_hsymStop); + + void save_dxbase_(char* dxbase, int len); } int volatile itone[MAX_NUM_SYMBOLS]; //Audio tones for all Tx symbols @@ -210,7 +212,7 @@ using SpecOp = Configuration::SpecialOperatingActivity; namespace { Radio::Frequency constexpr default_frequency {14076000}; - QRegExp message_alphabet {"[- @A-Za-z0-9+./?#<>;]*"}; + QRegExp message_alphabet {"[$- @A-Za-z0-9+./?#<>;]*"}; // grid exact match excluding RR73 QRegularExpression grid_regexp {"\\A(?![Rr]{2}73)[A-Ra-r]{2}[0-9]{2}([A-Xa-x]{2}){0,1}\\z"}; auto quint32_max = std::numeric_limits::max (); @@ -5371,6 +5373,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional) auto is_type_one = !is77BitMode () && is_compound && shortList (my_callsign); auto const& my_grid = m_config.my_grid ().left (4); auto const& hisBase = Radio::base_callsign (hisCall); + save_dxbase_(const_cast ((hisBase + " ").left (6).toLatin1().constData()),6); auto eme_short_codes = m_config.enable_VHF_features () && ui->cbShMsgs->isChecked () && m_mode == "JT65"; @@ -5852,6 +5855,13 @@ void MainWindow::on_dxCallEntry_textChanged (QString const& call) statusUpdate (); } +void MainWindow::on_dxCallEntry_editingFinished() +{ + auto const& dxBase = Radio::base_callsign (m_hisCall); + save_dxbase_(const_cast ((dxBase + " ").left (6).toLatin1().constData()),6); +} + + void MainWindow::on_dxCallEntry_returnPressed () { on_lookupButton_clicked(); diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 7c39e2c76..139c30c3b 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -204,6 +204,7 @@ private slots: void on_addButton_clicked(); void on_dxCallEntry_textChanged (QString const&); void on_dxGridEntry_textChanged (QString const&); + void on_dxCallEntry_editingFinished(); void on_dxCallEntry_returnPressed (); void on_genStdMsgsPushButton_clicked(); void on_logQSOButton_clicked();