Change the SpecOp enumeration so that FOX=6, HOUND=7, ARRL_DIGI=8.

This commit is contained in:
Joe Taylor 2022-07-29 15:20:04 -04:00
parent 4c4a5fe023
commit ca39746dc5
3 changed files with 149 additions and 152 deletions

View File

@ -197,9 +197,9 @@
* 3 -> FIELD DAY * 3 -> FIELD DAY
* 4 -> RTTY RU * 4 -> RTTY RU
* 5 -> WW DIGI * 5 -> WW DIGI
* 6 -> ARRL DIGI * 6 -> FOX
* 7 -> FOX * 7 -> HOUND
* 8 -> HOUND * 8 -> ARRL DIGI
* *
* The Frequency Tolerance and T/R period fields may have a value * The Frequency Tolerance and T/R period fields may have a value
* of the maximum quint32 value which implies the field is not * of the maximum quint32 value which implies the field is not

View File

@ -1373,12 +1373,12 @@ void MainWindow::readSettings()
void MainWindow::checkMSK144ContestType() void MainWindow::checkMSK144ContestType()
{ {
if(SpecOp::NONE != m_config.special_op_id()) if(SpecOp::NONE != m_specOp)
{ {
if(m_mode=="MSK144" && SpecOp::EU_VHF < m_config.special_op_id()) if(m_mode=="MSK144" && SpecOp::EU_VHF < m_specOp)
{ {
MessageBox::warning_message (this, tr ("Improper mode"), MessageBox::warning_message (this, tr ("Improper mode"),
"Mode will be changed to FT8. MSK144 not available if Field Day, WW Digi, RTTY or Fox/Hound is selected."); "Mode will be changed to FT8. MSK144 not available if Fox, Hound, Field Day, FT Roundup, WW Digi. or ARRL Digi contest is selected.");
on_actionFT8_triggered(); on_actionFT8_triggered();
} }
} }
@ -1898,7 +1898,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog
// things that might change that we need know about // things that might change that we need know about
auto callsign = m_config.my_callsign (); auto callsign = m_config.my_callsign ();
auto my_grid = m_config.my_grid (); auto my_grid = m_config.my_grid ();
SpecOp nContest0=m_config.special_op_id(); SpecOp nContest0=m_specOp;
auto psk_on = m_config.spot_to_psk_reporter (); auto psk_on = m_config.spot_to_psk_reporter ();
if (QDialog::Accepted == m_config.exec ()) { if (QDialog::Accepted == m_config.exec ()) {
checkMSK144ContestType(); checkMSK144ContestType();
@ -1964,16 +1964,17 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog
ui->actionEnable_AP_JT65->setVisible(false); ui->actionEnable_AP_JT65->setVisible(false);
ui->actionAuto_Clear_Avg->setVisible(false); ui->actionAuto_Clear_Avg->setVisible(false);
} }
if(m_config.special_op_id()!=nContest0) { m_specOp=m_config.special_op_id();
if(m_specOp!=nContest0) {
ui->tx1->setEnabled(true); ui->tx1->setEnabled(true);
ui->txb1->setEnabled(true); ui->txb1->setEnabled(true);
} }
chkFT4(); chkFT4();
if(SpecOp::EU_VHF==m_config.special_op_id() and m_config.my_grid().size()<6) { if(SpecOp::EU_VHF==m_specOp and m_config.my_grid().size()<6) {
MessageBox::information_message (this, MessageBox::information_message (this,
"EU VHF Contest messages require a 6-character locator."); "EU VHF Contest messages require a 6-character locator.");
} }
if((m_config.special_op_id()==SpecOp::FOX or m_config.special_op_id()==SpecOp::HOUND) and if((m_specOp==SpecOp::FOX or m_specOp==SpecOp::HOUND) and
m_mode!="FT8") { m_mode!="FT8") {
MessageBox::information_message (this, MessageBox::information_message (this,
"Fox-and-Hound operation is available only in FT8 mode.\nGo back and change your selection."); "Fox-and-Hound operation is available only in FT8 mode.\nGo back and change your selection.");
@ -2062,7 +2063,7 @@ void MainWindow::auto_tx_mode (bool state)
void MainWindow::keyPressEvent (QKeyEvent * e) void MainWindow::keyPressEvent (QKeyEvent * e)
{ {
if(SpecOp::FOX == m_config.special_op_id()) { if(SpecOp::FOX == m_specOp) {
switch (e->key()) { switch (e->key()) {
case Qt::Key_Return: case Qt::Key_Return:
doubleClickOnCall2(Qt::KeyboardModifier(Qt::ShiftModifier + Qt::ControlModifier + Qt::AltModifier)); doubleClickOnCall2(Qt::KeyboardModifier(Qt::ShiftModifier + Qt::ControlModifier + Qt::AltModifier));
@ -2077,7 +2078,7 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
QMainWindow::keyPressEvent (e); QMainWindow::keyPressEvent (e);
} }
if(SpecOp::HOUND == m_config.special_op_id()) { if(SpecOp::HOUND == m_specOp) {
switch (e->key()) { switch (e->key()) {
case Qt::Key_Return: case Qt::Key_Return:
auto_tx_mode(true); auto_tx_mode(true);
@ -2212,11 +2213,11 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
abortQSO(); abortQSO();
return; return;
case Qt::Key_E: case Qt::Key_E:
if((e->modifiers() & Qt::ShiftModifier) and SpecOp::FOX > m_config.special_op_id()) { if((e->modifiers() & Qt::ShiftModifier) and m_specOp!=SpecOp::FOX and m_specOp!=SpecOp::HOUND) {
ui->txFirstCheckBox->setChecked(false); ui->txFirstCheckBox->setChecked(false);
return; return;
} }
else if((e->modifiers() & Qt::ControlModifier) and SpecOp::FOX > m_config.special_op_id()) { else if((e->modifiers() & Qt::ControlModifier) and m_specOp!=SpecOp::FOX and m_specOp!=SpecOp::HOUND) {
ui->txFirstCheckBox->setChecked(true); ui->txFirstCheckBox->setChecked(true);
return; return;
} }
@ -3218,8 +3219,8 @@ void MainWindow::decode() //decode()
dec_data.params.nfa=m_wideGraph->nStartFreq(); dec_data.params.nfa=m_wideGraph->nStartFreq();
dec_data.params.nfSplit=m_wideGraph->Fmin(); dec_data.params.nfSplit=m_wideGraph->Fmin();
dec_data.params.nfb=m_wideGraph->Fmax(); dec_data.params.nfb=m_wideGraph->Fmax();
if(m_mode=="FT8" and SpecOp::HOUND == m_config.special_op_id() and !ui->cbRxAll->isChecked()) dec_data.params.nfb=1000; if(m_mode=="FT8" and SpecOp::HOUND == m_specOp and !ui->cbRxAll->isChecked()) dec_data.params.nfb=1000;
if(m_mode=="FT8" and SpecOp::FOX == m_config.special_op_id() ) dec_data.params.nfqso=200; if(m_mode=="FT8" and SpecOp::FOX == m_specOp ) dec_data.params.nfqso=200;
dec_data.params.ntol=ui->sbFtol->value (); dec_data.params.ntol=ui->sbFtol->value ();
if(!m_config.enable_VHF_features()) { if(!m_config.enable_VHF_features()) {
dec_data.params.ntol=20; dec_data.params.ntol=20;
@ -3272,7 +3273,7 @@ void MainWindow::decode() //decode()
dec_data.params.emedelay=0.0; dec_data.params.emedelay=0.0;
if(m_config.decode_at_52s()) dec_data.params.emedelay=2.5; if(m_config.decode_at_52s()) dec_data.params.emedelay=2.5;
dec_data.params.minSync=ui->syncSpinBox->isVisible () ? m_minSync : 0; dec_data.params.minSync=ui->syncSpinBox->isVisible () ? m_minSync : 0;
dec_data.params.nexp_decode = static_cast<int> (m_config.special_op_id()); dec_data.params.nexp_decode = static_cast<int> (m_specOp);
if(m_config.single_decode()) dec_data.params.nexp_decode += 32; if(m_config.single_decode()) dec_data.params.nexp_decode += 32;
if(m_config.enable_VHF_features()) dec_data.params.nexp_decode += 64; if(m_config.enable_VHF_features()) dec_data.params.nexp_decode += 64;
if(m_mode.startsWith("FST4")) dec_data.params.nexp_decode += 256*(ui->sbNB->value()+3); if(m_mode.startsWith("FST4")) dec_data.params.nexp_decode += 256*(ui->sbNB->value()+3);
@ -3435,7 +3436,7 @@ void MainWindow::decodeDone ()
ui->DecodeButton->setChecked (false); ui->DecodeButton->setChecked (false);
decodeBusy(false); decodeBusy(false);
m_RxLog=0; m_RxLog=0;
if(SpecOp::FOX == m_config.special_op_id()) houndCallers(); if(SpecOp::FOX == m_specOp) houndCallers();
to_jt9(m_ihsym,-1,1); //Tell jt9 we know it has finished to_jt9(m_ihsym,-1,1); //Tell jt9 we know it has finished
m_startAnother=m_loopall; m_startAnother=m_loopall;
@ -3628,7 +3629,7 @@ void MainWindow::readFromStdout() //readFromStdout
bool bDisplayPoints = false; bool bDisplayPoints = false;
if(m_ActiveStationsWidget!=NULL) { if(m_ActiveStationsWidget!=NULL) {
bDisplayPoints=(m_mode=="FT4" or m_mode=="FT8") and bDisplayPoints=(m_mode=="FT4" or m_mode=="FT8") and
(m_config.special_op_id()==SpecOp::ARRL_DIGI or m_ActiveStationsWidget->isVisible()); (m_specOp==SpecOp::ARRL_DIGI or m_ActiveStationsWidget->isVisible());
} }
while(proc_jt9.canReadLine()) { while(proc_jt9.canReadLine()) {
auto line_read = proc_jt9.readLine (); auto line_read = proc_jt9.readLine ();
@ -3710,7 +3711,7 @@ void MainWindow::readFromStdout() //readFromStdout
if (line_read.left(ntime) != m_tBlankLine) { if (line_read.left(ntime) != m_tBlankLine) {
ui->decodedTextBrowser->new_period (); ui->decodedTextBrowser->new_period ();
if (m_config.insert_blank () if (m_config.insert_blank ()
&& SpecOp::FOX != m_config.special_op_id()) { && SpecOp::FOX != m_specOp) {
QString band; QString band;
if(((QDateTime::currentMSecsSinceEpoch() / 1000 - m_secBandChanged) > 4*int(m_TRperiod)/4) if(((QDateTime::currentMSecsSinceEpoch() / 1000 - m_secBandChanged) > 4*int(m_TRperiod)/4)
or m_displayBand) { or m_displayBand) {
@ -3727,7 +3728,7 @@ void MainWindow::readFromStdout() //readFromStdout
DecodedText decodedtext0 {QString::fromUtf8(line_read.constData())}; DecodedText decodedtext0 {QString::fromUtf8(line_read.constData())};
DecodedText decodedtext {QString::fromUtf8(line_read.constData()).remove("TU; ")}; DecodedText decodedtext {QString::fromUtf8(line_read.constData()).remove("TU; ")};
if(m_mode=="FT8" and SpecOp::FOX == m_config.special_op_id() and if(m_mode=="FT8" and SpecOp::FOX == m_specOp and
(decodedtext.string().contains("R+") or decodedtext.string().contains("R-"))) { (decodedtext.string().contains("R+") or decodedtext.string().contains("R-"))) {
auto for_us = decodedtext.string().contains(" " + m_config.my_callsign() + " ") or auto for_us = decodedtext.string().contains(" " + m_config.my_callsign() + " ") or
decodedtext.string().contains(" "+m_baseCall) or decodedtext.string().contains(" "+m_baseCall) or
@ -3743,7 +3744,7 @@ void MainWindow::readFromStdout() //readFromStdout
//Left (Band activity) window //Left (Band activity) window
if(!bAvgMsg) { if(!bAvgMsg) {
if(m_mode=="FT8" and SpecOp::FOX == m_config.special_op_id()) { if(m_mode=="FT8" and SpecOp::FOX == m_specOp) {
if(!m_bDisplayedOnce) { if(!m_bDisplayedOnce) {
// This hack sets the font. Surely there's a better way! // This hack sets the font. Surely there's a better way!
DecodedText dt{"."}; DecodedText dt{"."};
@ -3827,7 +3828,7 @@ void MainWindow::readFromStdout() //readFromStdout
for_us = false; for_us = false;
} }
} }
if(m_bCallingCQ && !m_bAutoReply && for_us && SpecOp::FOX > m_config.special_op_id()) { if(m_bCallingCQ && !m_bAutoReply && for_us && m_specOp!=SpecOp::FOX && m_specOp!=SpecOp::HOUND) {
bool bProcessMsgNormally=ui->respondComboBox->currentText()=="CQ: First" or bool bProcessMsgNormally=ui->respondComboBox->currentText()=="CQ: First" or
(ui->respondComboBox->currentText()=="CQ: Max Dist" and m_ActiveStationsWidget==NULL) or (ui->respondComboBox->currentText()=="CQ: Max Dist" and m_ActiveStationsWidget==NULL) or
(m_ActiveStationsWidget!=NULL and !m_ActiveStationsWidget->isVisible()); (m_ActiveStationsWidget!=NULL and !m_ActiveStationsWidget->isVisible());
@ -3865,7 +3866,7 @@ void MainWindow::readFromStdout() //readFromStdout
m_bDoubleClicked=true; m_bDoubleClicked=true;
ui->dxCallEntry->setText(deCall); ui->dxCallEntry->setText(deCall);
int m_ntx=2; int m_ntx=2;
bool bContest=m_config.special_op_id()==SpecOp::NA_VHF or m_config.special_op_id()==SpecOp::ARRL_DIGI; bool bContest=m_specOp==SpecOp::NA_VHF or m_specOp==SpecOp::ARRL_DIGI;
if(bContest) m_ntx=3; if(bContest) m_ntx=3;
if(deGrid.contains(grid_regexp)) { if(deGrid.contains(grid_regexp)) {
m_deGrid=deGrid; m_deGrid=deGrid;
@ -3884,9 +3885,9 @@ void MainWindow::readFromStdout() //readFromStdout
} }
} }
if(SpecOp::FOX==m_config.special_op_id() and decodedtext.string().contains(" DE ")) for_us=true; //Hound with compound callsign if(SpecOp::FOX==m_specOp and decodedtext.string().contains(" DE ")) for_us=true; //Hound with compound callsign
if(SpecOp::FOX==m_config.special_op_id() and for_us and (audioFreq<1000)) bDisplayRight=true; if(SpecOp::FOX==m_specOp and for_us and (audioFreq<1000)) bDisplayRight=true;
if(SpecOp::FOX!=m_config.special_op_id() and (for_us or (abs(audioFreq - m_wideGraph->rxFreq()) <= 10))) bDisplayRight=true; if(SpecOp::FOX!=m_specOp and (for_us or (abs(audioFreq - m_wideGraph->rxFreq()) <= 10))) bDisplayRight=true;
} }
} else { } else {
if((abs(audioFreq - m_wideGraph->rxFreq()) <= 10) and if((abs(audioFreq - m_wideGraph->rxFreq()) <= 10) and
@ -3905,7 +3906,7 @@ void MainWindow::readFromStdout() //readFromStdout
postDecode (true, decodedtext.string ()); postDecode (true, decodedtext.string ());
if(m_mode=="FT8" and SpecOp::HOUND==m_config.special_op_id()) { if(m_mode=="FT8" and SpecOp::HOUND==m_specOp) {
if(decodedtext.string().contains(";")) { if(decodedtext.string().contains(";")) {
QStringList w=decodedtext.string().mid(24).split(" ",SkipEmptyParts); QStringList w=decodedtext.string().mid(24).split(" ",SkipEmptyParts);
QString foxCall=w.at(3); QString foxCall=w.at(3);
@ -3947,7 +3948,7 @@ void MainWindow::readFromStdout() //readFromStdout
} }
//### I think this is where we are preventing Hounds from spotting Fox ### //### I think this is where we are preventing Hounds from spotting Fox ###
if(m_mode!="FT8" or (SpecOp::HOUND != m_config.special_op_id())) { if(m_mode!="FT8" or (SpecOp::HOUND != m_specOp)) {
if(m_mode=="FT8" or m_mode=="FT4" or m_mode=="Q65" if(m_mode=="FT8" or m_mode=="FT4" or m_mode=="Q65"
or m_mode=="JT4" or m_mode=="JT65" or m_mode=="JT9" or m_mode=="FST4") { or m_mode=="JT4" or m_mode=="JT65" or m_mode=="JT9" or m_mode=="FST4") {
auto_sequence (decodedtext, 25, 50); auto_sequence (decodedtext, 25, 50);
@ -4071,7 +4072,7 @@ void MainWindow::auto_sequence (DecodedText const& message, unsigned start_toler
// look for type 2 compound call replies on our Tx and Rx offsets // look for type 2 compound call replies on our Tx and Rx offsets
&& ((within_tolerance && "DE" == message_words.at (2)) && ((within_tolerance && "DE" == message_words.at (2))
|| message_words.at (2).contains (m_baseCall))))) { || message_words.at (2).contains (m_baseCall))))) {
if(SpecOp::FOX != m_config.special_op_id()) processMessage (message); if(SpecOp::FOX != m_specOp) processMessage (message);
} }
} }
} }
@ -4239,7 +4240,7 @@ void MainWindow::guiUpdate()
} }
} }
if(m_mode=="FT8" and SpecOp::FOX==m_config.special_op_id()) { if(m_mode=="FT8" and SpecOp::FOX==m_specOp) {
// Don't allow Fox mode in any of the default FT8 sub-bands. // Don't allow Fox mode in any of the default FT8 sub-bands.
qint32 ft8Freq[]={1840,3573,7074,10136,14074,18100,21074,24915,28074,50313,70100}; qint32 ft8Freq[]={1840,3573,7074,10136,14074,18100,21074,24915,28074,50313,70100};
for(int i=0; i<11; i++) { for(int i=0; i<11; i++) {
@ -4281,12 +4282,12 @@ void MainWindow::guiUpdate()
g_iptt = 1; g_iptt = 1;
setRig (); setRig ();
if(m_mode=="FT8") { if(m_mode=="FT8") {
if (SpecOp::FOX == m_config.special_op_id()) { if (SpecOp::FOX == m_specOp) {
if (ui->TxFreqSpinBox->value() > 900) { if (ui->TxFreqSpinBox->value() > 900) {
ui->TxFreqSpinBox->setValue(300); ui->TxFreqSpinBox->setValue(300);
} }
} }
else if (SpecOp::HOUND == m_config.special_op_id()) { else if (SpecOp::HOUND == m_specOp) {
if(m_auto && !m_tune) { if(m_auto && !m_tune) {
if (ui->TxFreqSpinBox->value() < 999 && m_ntx != 3) { if (ui->TxFreqSpinBox->value() < 999 && m_ntx != 3) {
// Hound randomized range: 1000-3000 Hz // Hound randomized range: 1000-3000 Hz
@ -4312,7 +4313,7 @@ void MainWindow::guiUpdate()
// If HoldTxFreq is not checked, randomize Fox's Tx Freq // If HoldTxFreq is not checked, randomize Fox's Tx Freq
// NB: Maybe this should be done no more than once every 5 minutes or so ? // NB: Maybe this should be done no more than once every 5 minutes or so ?
if(m_mode=="FT8" and SpecOp::FOX==m_config.special_op_id() and !ui->cbHoldTxFreq->isChecked()) { if(m_mode=="FT8" and SpecOp::FOX==m_specOp and !ui->cbHoldTxFreq->isChecked()) {
#if QT_VERSION >= QT_VERSION_CHECK (5, 15, 0) #if QT_VERSION >= QT_VERSION_CHECK (5, 15, 0)
ui->TxFreqSpinBox->setValue (QRandomGenerator::global ()->bounded (300, 599)); ui->TxFreqSpinBox->setValue (QRandomGenerator::global ()->bounded (300, 599));
#else #else
@ -4354,7 +4355,7 @@ void MainWindow::guiUpdate()
if(m_mode=="WSPR") { if(m_mode=="WSPR") {
ba=WSPR_message().toLatin1(); ba=WSPR_message().toLatin1();
} else { } else {
if(SpecOp::HOUND == m_config.special_op_id() and m_ntx!=3) { //Hound transmits only Tx1 or Tx3 if(SpecOp::HOUND == m_specOp and m_ntx!=3) { //Hound transmits only Tx1 or Tx3
m_ntx=1; m_ntx=1;
ui->txrb1->setChecked(true); ui->txrb1->setChecked(true);
} }
@ -4408,7 +4409,7 @@ void MainWindow::guiUpdate()
} }
if(m_mode=="FT8") { if(m_mode=="FT8") {
if(SpecOp::FOX==m_config.special_op_id() and ui->tabWidget->currentIndex()==1) { if(SpecOp::FOX==m_specOp and ui->tabWidget->currentIndex()==1) {
foxTxSequencer(); foxTxSequencer();
} else { } else {
int i3=0; int i3=0;
@ -4425,7 +4426,7 @@ void MainWindow::guiUpdate()
int nwave=nsym*nsps; int nwave=nsym*nsps;
gen_ft8wave_(const_cast<int *>(itone),&nsym,&nsps,&bt,&fsample,&f0,foxcom_.wave, gen_ft8wave_(const_cast<int *>(itone),&nsym,&nsps,&bt,&fsample,&f0,foxcom_.wave,
foxcom_.wave,&icmplx,&nwave); foxcom_.wave,&icmplx,&nwave);
if(SpecOp::FOX == m_config.special_op_id()) { if(SpecOp::FOX == m_specOp) {
//Fox must generate the full Tx waveform, not just an itone[] array. //Fox must generate the full Tx waveform, not just an itone[] array.
QString fm = QString::fromStdString(message).trimmed(); QString fm = QString::fromStdString(message).trimmed();
foxGenWaveform(0,fm); foxGenWaveform(0,fm);
@ -4508,12 +4509,12 @@ void MainWindow::guiUpdate()
&fsample,&hmod,&f0,&icmplx,foxcom_.wave,foxcom_.wave); &fsample,&hmod,&f0,&icmplx,foxcom_.wave,foxcom_.wave);
} }
if(SpecOp::EU_VHF==m_config.special_op_id()) { if(SpecOp::EU_VHF==m_specOp) {
if(m_ntx==2) m_xSent=ui->tx2->text().right(13); if(m_ntx==2) m_xSent=ui->tx2->text().right(13);
if(m_ntx==3) m_xSent=ui->tx3->text().right(13); if(m_ntx==3) m_xSent=ui->tx3->text().right(13);
} }
if(SpecOp::FIELD_DAY==m_config.special_op_id() or SpecOp::RTTY==m_config.special_op_id()) { if(SpecOp::FIELD_DAY==m_specOp or SpecOp::RTTY==m_specOp) {
if(m_ntx==2 or m_ntx==3) { if(m_ntx==2 or m_ntx==3) {
QStringList t=ui->tx2->text().split(' ', SkipEmptyParts); QStringList t=ui->tx2->text().split(' ', SkipEmptyParts);
int n=t.size(); int n=t.size();
@ -4644,7 +4645,7 @@ void MainWindow::guiUpdate()
if (m_mode != "FST4W" && m_mode != "WSPR") if (m_mode != "FST4W" && m_mode != "WSPR")
{ {
if(!m_tune) write_all("Tx",m_currentMessage); if(!m_tune) write_all("Tx",m_currentMessage);
if (m_config.TX_messages () && !m_tune && SpecOp::FOX!=m_config.special_op_id()) if (m_config.TX_messages () && !m_tune && SpecOp::FOX!=m_specOp)
{ {
ui->decodedTextBrowser2->displayTransmittedText(current_message.trimmed(), ui->decodedTextBrowser2->displayTransmittedText(current_message.trimmed(),
m_mode,ui->TxFreqSpinBox->value(),m_bFastMode,m_TRperiod); m_mode,ui->TxFreqSpinBox->value(),m_bFastMode,m_TRperiod);
@ -4687,16 +4688,16 @@ void MainWindow::guiUpdate()
if(m_mode=="FT8" or m_mode=="MSK144" or m_mode=="FT4" || "Q65" == m_mode) { if(m_mode=="FT8" or m_mode=="MSK144" or m_mode=="FT4" || "Q65" == m_mode) {
if(ui->txrb1->isEnabled() and if(ui->txrb1->isEnabled() and
(SpecOp::NA_VHF==m_config.special_op_id() or (SpecOp::NA_VHF==m_specOp or
SpecOp::FIELD_DAY==m_config.special_op_id() or SpecOp::FIELD_DAY==m_specOp or
SpecOp::RTTY==m_config.special_op_id() or SpecOp::RTTY==m_specOp or
SpecOp::WW_DIGI==m_config.special_op_id() or SpecOp::WW_DIGI==m_specOp or
SpecOp::ARRL_DIGI==m_config.special_op_id()) ) { SpecOp::ARRL_DIGI==m_specOp) ) {
//We're in a contest-like mode other than EU_VHF: start QSO with Tx2. //We're in a contest-like mode other than EU_VHF: start QSO with Tx2.
ui->tx1->setEnabled(false); ui->tx1->setEnabled(false);
ui->txb1->setEnabled(false); ui->txb1->setEnabled(false);
} }
if(!ui->tx1->isEnabled() and SpecOp::EU_VHF==m_config.special_op_id()) { if(!ui->tx1->isEnabled() and SpecOp::EU_VHF==m_specOp) {
//We're in EU_VHF mode: start QSO with Tx1. //We're in EU_VHF mode: start QSO with Tx1.
ui->tx1->setEnabled(true); ui->tx1->setEnabled(true);
ui->txb1->setEnabled(true); ui->txb1->setEnabled(true);
@ -4705,11 +4706,11 @@ void MainWindow::guiUpdate()
//Once per second (onesec) //Once per second (onesec)
if(nsec != m_sec0) { if(nsec != m_sec0) {
// qDebug() << "AAA" << nsec << (int)m_config.special_op_id() << (int)SpecOp::FOX; // qDebug() << "AAA" << nsec;
if(m_mode=="FST4") chk_FST4_freq_range(); if(m_mode=="FST4") chk_FST4_freq_range();
m_currentBand=m_config.bands()->find(m_freqNominal); m_currentBand=m_config.bands()->find(m_freqNominal);
if( SpecOp::HOUND == m_config.special_op_id() ) { if( SpecOp::HOUND == m_specOp ) {
qint32 tHound=QDateTime::currentMSecsSinceEpoch()/1000 - m_tAutoOn; qint32 tHound=QDateTime::currentMSecsSinceEpoch()/1000 - m_tAutoOn;
//To keep calling Fox, Hound must reactivate Enable Tx at least once every 2 minutes //To keep calling Fox, Hound must reactivate Enable Tx at least once every 2 minutes
if(tHound >= 120 and m_ntx==1) auto_tx_mode(false); if(tHound >= 120 and m_ntx==1) auto_tx_mode(false);
@ -4742,7 +4743,7 @@ void MainWindow::guiUpdate()
if(m_transmitting) { if(m_transmitting) {
char s[42]; char s[42];
if(SpecOp::FOX==m_config.special_op_id() and ui->tabWidget->currentIndex()==1) { if(SpecOp::FOX==m_specOp and ui->tabWidget->currentIndex()==1) {
sprintf(s,"Tx: %d Slots",foxcom_.nslots); sprintf(s,"Tx: %d Slots",foxcom_.nslots);
} else { } else {
sprintf(s,"Tx: %s",msgsent); sprintf(s,"Tx: %s",msgsent);
@ -4764,7 +4765,7 @@ void MainWindow::guiUpdate()
} else { } else {
s[40]=0; s[40]=0;
QString t{QString::fromLatin1(s)}; QString t{QString::fromLatin1(s)};
if(SpecOp::FOX==m_config.special_op_id() and ui->tabWidget->currentIndex()==1 and foxcom_.nslots==1) { if(SpecOp::FOX==m_specOp and ui->tabWidget->currentIndex()==1 and foxcom_.nslots==1) {
t=m_fm1.trimmed(); t=m_fm1.trimmed();
} }
if(m_mode=="FT4") t="Tx: "+ m_currentMessage; if(m_mode=="FT4") t="Tx: "+ m_currentMessage;
@ -4943,7 +4944,7 @@ bool MainWindow::elide_tx1_not_allowed () const
{ {
auto const& my_callsign = m_config.my_callsign (); auto const& my_callsign = m_config.my_callsign ();
return return
(m_mode=="FT8" && SpecOp::HOUND == m_config.special_op_id()) (m_mode=="FT8" && SpecOp::HOUND == m_specOp)
|| ((m_mode.startsWith ("FT") || "MSK144" == m_mode || "Q65" == m_mode || "FST4" == m_mode) || ((m_mode.startsWith ("FT") || "MSK144" == m_mode || "Q65" == m_mode || "FST4" == m_mode)
&& Radio::is_77bit_nonstandard_callsign (my_callsign)) && Radio::is_77bit_nonstandard_callsign (my_callsign))
|| (my_callsign != m_baseCall && !shortList (my_callsign)); || (my_callsign != m_baseCall && !shortList (my_callsign));
@ -5117,7 +5118,7 @@ void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers)
cursor.setPosition(cursor.selectionStart()); cursor.setPosition(cursor.selectionStart());
} }
if(SpecOp::FOX==m_config.special_op_id() and m_decodedText2) { if(SpecOp::FOX==m_specOp and m_decodedText2) {
if(m_houndQueue.count()<10 and m_nSortedHounds>0) { if(m_houndQueue.count()<10 and m_nSortedHounds>0) {
QString t=cursor.block().text(); QString t=cursor.block().text();
selectHound(t); selectHound(t);
@ -5175,8 +5176,8 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
int nmod = fmod(double(message.timeInSeconds()),2.0*m_TRperiod); int nmod = fmod(double(message.timeInSeconds()),2.0*m_TRperiod);
m_txFirst=(nmod!=0); m_txFirst=(nmod!=0);
if( SpecOp::HOUND == m_config.special_op_id() ) m_txFirst=false; //Hound must not transmit first if( SpecOp::HOUND == m_specOp ) m_txFirst=false; //Hound must not transmit first
if( SpecOp::FOX == m_config.special_op_id() ) m_txFirst=true; //Fox must always transmit first if( SpecOp::FOX == m_specOp ) m_txFirst=true; //Fox must always transmit first
ui->txFirstCheckBox->setChecked(m_txFirst); ui->txFirstCheckBox->setChecked(m_txFirst);
auto const& message_words = message.messageWords (); auto const& message_words = message.messageWords ();
@ -5220,7 +5221,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
} }
// ignore calls by other hounds // ignore calls by other hounds
if (SpecOp::HOUND == m_config.special_op_id() if (SpecOp::HOUND == m_specOp
&& message.messageWords ().indexOf (QRegularExpression {R"(R\+-[0-9]+)"}) >= 1) && message.messageWords ().indexOf (QRegularExpression {R"(R\+-[0-9]+)"}) >= 1)
{ {
return; return;
@ -5235,7 +5236,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
&& firstcall != m_config.my_callsign () && firstcall != m_baseCall && firstcall != m_config.my_callsign () && firstcall != m_baseCall
&& firstcall != "DE") && firstcall != "DE")
|| "CQ" == firstcall || "QRZ" == firstcall || ctrl || shift) { || "CQ" == firstcall || "QRZ" == firstcall || ctrl || shift) {
if (((SpecOp::HOUND != m_config.special_op_id()) || m_mode != "FT8") if (((SpecOp::HOUND != m_specOp) || m_mode != "FT8")
&& (!ui->cbHoldTxFreq->isChecked () || shift || ctrl)) { && (!ui->cbHoldTxFreq->isChecked () || shift || ctrl)) {
ui->TxFreqSpinBox->setValue(frequency); ui->TxFreqSpinBox->setValue(frequency);
} }
@ -5272,7 +5273,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
} }
bool bRTTY = (nrpt>=529 and nrpt<=599); bool bRTTY = (nrpt>=529 and nrpt<=599);
bool bEU_VHF_w2=(nrpt>=520001 and nrpt<=594000); bool bEU_VHF_w2=(nrpt>=520001 and nrpt<=594000);
if(bEU_VHF_w2 and SpecOp::EU_VHF!=m_config.special_op_id()) { if(bEU_VHF_w2 and SpecOp::EU_VHF!=m_specOp) {
auto const& msg = tr("Should you switch to EU VHF Contest mode?\n\n" auto const& msg = tr("Should you switch to EU VHF Contest mode?\n\n"
"To do so, check 'Special operating activity' and\n" "To do so, check 'Special operating activity' and\n"
"'EU VHF Contest' on the Settings | Advanced tab."); "'EU VHF Contest' on the Settings | Advanced tab.");
@ -5290,17 +5291,17 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
m_xRcvd=t.at(n-2) + " " + t.at(n-1); m_xRcvd=t.at(n-2) + " " + t.at(n-1);
t0=t.at(n-3); t0=t.at(n-3);
} }
if(bFieldDay_msg and SpecOp::FIELD_DAY!=m_config.special_op_id()) { if(bFieldDay_msg and SpecOp::FIELD_DAY!=m_specOp) {
// ### Should be in ARRL Field Day mode ??? ### // ### Should be in ARRL Field Day mode ??? ###
MessageBox::information_message (this, tr ("Should you switch to ARRL Field Day mode?")); MessageBox::information_message (this, tr ("Should you switch to ARRL Field Day mode?"));
} }
if(bRTTY and SpecOp::RTTY != m_config.special_op_id()) { if(bRTTY and SpecOp::RTTY != m_specOp) {
// ### Should be in RTTY contest mode ??? ### // ### Should be in RTTY contest mode ??? ###
MessageBox::information_message (this, tr ("Should you switch to RTTY contest mode?")); MessageBox::information_message (this, tr ("Should you switch to RTTY contest mode?"));
} }
if(SpecOp::EU_VHF==m_config.special_op_id() and message_words.at(2).contains(m_baseCall) and if(SpecOp::EU_VHF==m_specOp and message_words.at(2).contains(m_baseCall) and
(!message_words.at(3).contains(qso_partner_base_call)) and (!m_bDoubleClicked)) { (!message_words.at(3).contains(qso_partner_base_call)) and (!m_bDoubleClicked)) {
return; return;
} }
@ -5310,9 +5311,9 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
&& (message_words.at(2).contains(m_baseCall) || "DE" == message_words.at(2)) && (message_words.at(2).contains(m_baseCall) || "DE" == message_words.at(2))
&& (message_words.at(3).contains(qso_partner_base_call) or m_bDoubleClicked && (message_words.at(3).contains(qso_partner_base_call) or m_bDoubleClicked
or bEU_VHF_w2 or (m_QSOProgress==CALLING))) { or bEU_VHF_w2 or (m_QSOProgress==CALLING))) {
if(message_words.at(4).contains(grid_regexp) and SpecOp::EU_VHF!=m_config.special_op_id()) { if(message_words.at(4).contains(grid_regexp) and SpecOp::EU_VHF!=m_specOp) {
if((SpecOp::NA_VHF==m_config.special_op_id() or SpecOp::WW_DIGI==m_config.special_op_id() or if((SpecOp::NA_VHF==m_specOp or SpecOp::WW_DIGI==m_specOp or
SpecOp::ARRL_DIGI==m_config.special_op_id() ) SpecOp::ARRL_DIGI==m_specOp )
and bContestOK) { and bContestOK) {
setTxMsg(3); setTxMsg(3);
m_QSOProgress=ROGER_REPORT; m_QSOProgress=ROGER_REPORT;
@ -5325,7 +5326,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
m_QSOProgress=REPORT; m_QSOProgress=REPORT;
} }
} }
} else if(w34.contains(grid_regexp) and SpecOp::EU_VHF==m_config.special_op_id()) { } else if(w34.contains(grid_regexp) and SpecOp::EU_VHF==m_specOp) {
if(nrpt==0) { if(nrpt==0) {
setTxMsg(2); setTxMsg(2);
@ -5339,7 +5340,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
m_QSOProgress=ROGER_REPORT; m_QSOProgress=ROGER_REPORT;
} }
} }
} else if(SpecOp::RTTY == m_config.special_op_id() and bRTTY) { } else if(SpecOp::RTTY == m_specOp and bRTTY) {
if(w2=="R") { if(w2=="R") {
setTxMsg(4); setTxMsg(4);
m_QSOProgress=ROGERS; m_QSOProgress=ROGERS;
@ -5348,7 +5349,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
m_QSOProgress=ROGER_REPORT; m_QSOProgress=ROGER_REPORT;
} }
m_xRcvd=t[n-2] + " " + t[n-1]; m_xRcvd=t[n-2] + " " + t[n-1];
} else if(SpecOp::FIELD_DAY==m_config.special_op_id() and bFieldDay_msg) { } else if(SpecOp::FIELD_DAY==m_specOp and bFieldDay_msg) {
if(t0=="R") { if(t0=="R") {
setTxMsg(4); setTxMsg(4);
m_QSOProgress=ROGERS; m_QSOProgress=ROGERS;
@ -5366,7 +5367,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
if(m_mode=="FT4" and "RR73" == word_3) m_dateTimeRcvdRR73=QDateTime::currentDateTimeUtc(); if(m_mode=="FT4" and "RR73" == word_3) m_dateTimeRcvdRR73=QDateTime::currentDateTimeUtc();
m_bTUmsg=false; m_bTUmsg=false;
m_nextCall=""; //### Temporary: disable use of "TU;" message m_nextCall=""; //### Temporary: disable use of "TU;" message
if(SpecOp::RTTY == m_config.special_op_id() and m_nextCall!="") { if(SpecOp::RTTY == m_specOp and m_nextCall!="") {
// We're in RTTY contest and have "nextCall" queued up: send a "TU; ..." message // We're in RTTY contest and have "nextCall" queued up: send a "TU; ..." message
if (m_config.prompt_to_log() || m_config.autoLog()) { if (m_config.prompt_to_log() || m_config.autoLog()) {
logQSOTimer.start(0); logQSOTimer.start(0);
@ -5380,12 +5381,6 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
ui->tx3->setText(t); ui->tx3->setText(t);
m_bTUmsg=true; m_bTUmsg=true;
} else { } else {
// The following test was to skip sending 73 after receiving RR73, in a contest mode.
// I'm disabling it so thet we always send 73 after receiving RR73.
// if (m_QSOProgress > CALLING && m_QSOProgress < SIGNOFF
// && SpecOp::NONE < m_config.special_op_id () && SpecOp::FOX > m_config.special_op_id ()
// && ("RR73" == word_3 || 73 == word_3_as_number))
if (false) // Always Send 73 after receiving RRR or RR73, even in contest mode. if (false) // Always Send 73 after receiving RRR or RR73, even in contest mode.
{ {
if (m_config.prompt_to_log() || m_config.autoLog()) { if (m_config.prompt_to_log() || m_config.autoLog()) {
@ -5444,7 +5439,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
&& word_3.startsWith ('R')) { && word_3.startsWith ('R')) {
m_ntx=4; m_ntx=4;
m_QSOProgress = ROGERS; m_QSOProgress = ROGERS;
if(SpecOp::RTTY == m_config.special_op_id()) { if(SpecOp::RTTY == m_specOp) {
int n=t.size(); int n=t.size();
int nRpt=t[n-2].toInt(); int nRpt=t[n-2].toInt();
if(nRpt>=529 and nRpt<=599) m_xRcvd=t[n-2] + " " + t[n-1]; if(nRpt>=529 and nRpt<=599) m_xRcvd=t[n-2] + " " + t[n-1];
@ -5455,9 +5450,9 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
if ((word_3_as_number >= -50 && word_3_as_number <= 49) if ((word_3_as_number >= -50 && word_3_as_number <= 49)
|| (word_3_as_number >= 529 && word_3_as_number <= 599)) || (word_3_as_number >= 529 && word_3_as_number <= 599))
{ {
if(SpecOp::EU_VHF==m_config.special_op_id() or if(SpecOp::EU_VHF==m_specOp or
SpecOp::FIELD_DAY==m_config.special_op_id() or SpecOp::FIELD_DAY==m_specOp or
SpecOp::RTTY==m_config.special_op_id()) SpecOp::RTTY==m_specOp)
{ {
setTxMsg(2); setTxMsg(2);
m_QSOProgress=REPORT; m_QSOProgress=REPORT;
@ -5682,16 +5677,16 @@ void MainWindow::genCQMsg ()
QString t=ui->tx6->text(); QString t=ui->tx6->text();
QStringList tlist=t.split(" "); QStringList tlist=t.split(" ");
if((m_mode=="FT4" or m_mode=="FT8" or m_mode=="MSK144" || "Q65" == m_mode) and if((m_mode=="FT4" or m_mode=="FT8" or m_mode=="MSK144" || "Q65" == m_mode) and
SpecOp::NONE != m_config.special_op_id() and SpecOp::NONE != m_specOp and
( tlist.at(1)==my_callsign or ( tlist.at(1)==my_callsign or
tlist.at(2)==my_callsign ) and tlist.at(2)==my_callsign ) and
stdCall(my_callsign)) { stdCall(my_callsign)) {
if(SpecOp::NA_VHF == m_config.special_op_id()) m_cqStr="TEST"; if(SpecOp::NA_VHF == m_specOp) m_cqStr="TEST";
if(SpecOp::EU_VHF == m_config.special_op_id()) m_cqStr="TEST"; if(SpecOp::EU_VHF == m_specOp) m_cqStr="TEST";
if(SpecOp::FIELD_DAY == m_config.special_op_id()) m_cqStr="FD"; if(SpecOp::FIELD_DAY == m_specOp) m_cqStr="FD";
if(SpecOp::RTTY == m_config.special_op_id()) m_cqStr="RU"; if(SpecOp::RTTY == m_specOp) m_cqStr="RU";
if(SpecOp::WW_DIGI == m_config.special_op_id()) m_cqStr="WW"; if(SpecOp::WW_DIGI == m_specOp) m_cqStr="WW";
if(SpecOp::ARRL_DIGI == m_config.special_op_id()) m_cqStr="TEST"; if(SpecOp::ARRL_DIGI == m_specOp) m_cqStr="TEST";
if( tlist.at(1)==my_callsign ) { if( tlist.at(1)==my_callsign ) {
t="CQ " + m_cqStr + " " + tlist.at(1) + " " + tlist.at(2); t="CQ " + m_cqStr + " " + tlist.at(1) + " " + tlist.at(2);
} else { } else {
@ -5799,11 +5794,11 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
t=t0a; t=t0a;
msgtype(t0a + my_grid, ui->tx1); msgtype(t0a + my_grid, ui->tx1);
} }
if(SpecOp::NA_VHF==m_config.special_op_id()) sent=my_grid; if(SpecOp::NA_VHF==m_specOp) sent=my_grid;
if(SpecOp::WW_DIGI==m_config.special_op_id()) sent=my_grid; if(SpecOp::WW_DIGI==m_specOp) sent=my_grid;
if(SpecOp::ARRL_DIGI==m_config.special_op_id()) sent=my_grid; if(SpecOp::ARRL_DIGI==m_specOp) sent=my_grid;
if(SpecOp::FIELD_DAY==m_config.special_op_id()) sent=m_config.Field_Day_Exchange(); if(SpecOp::FIELD_DAY==m_specOp) sent=m_config.Field_Day_Exchange();
if(SpecOp::RTTY==m_config.special_op_id()) { if(SpecOp::RTTY==m_specOp) {
sent=rst + m_config.RTTY_Exchange(); sent=rst + m_config.RTTY_Exchange();
QString t1=m_config.RTTY_Exchange(); QString t1=m_config.RTTY_Exchange();
if(t1=="DX" or t1=="#") { if(t1=="DX" or t1=="#") {
@ -5811,7 +5806,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
sent=rst + t1; sent=rst + t1;
} }
} }
if(SpecOp::EU_VHF==m_config.special_op_id()) { if(SpecOp::EU_VHF==m_specOp) {
QString a; QString a;
t="<" + t0s.split(" ").at(0) + "> <" + t0s.split(" ").at(1) + "> "; t="<" + t0s.split(" ").at(0) + "> <" + t0s.split(" ").at(1) + "> ";
a = a.asprintf("%4.4d ",ui->sbSerialNumber->value()); a = a.asprintf("%4.4d ",ui->sbSerialNumber->value());
@ -5820,7 +5815,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
msgtype(t + sent, ui->tx2); msgtype(t + sent, ui->tx2);
if(sent==rpt) msgtype(t + "R" + sent, ui->tx3); if(sent==rpt) msgtype(t + "R" + sent, ui->tx3);
if(sent!=rpt) msgtype(t + "R " + sent, ui->tx3); if(sent!=rpt) msgtype(t + "R " + sent, ui->tx3);
if(m_mode=="FT4" and SpecOp::RTTY==m_config.special_op_id()) { if(m_mode=="FT4" and SpecOp::RTTY==m_specOp) {
QDateTime now=QDateTime::currentDateTimeUtc(); QDateTime now=QDateTime::currentDateTimeUtc();
int sinceTx3 = m_dateTimeSentTx3.secsTo(now); int sinceTx3 = m_dateTimeSentTx3.secsTo(now);
int sinceRR73 = m_dateTimeRcvdRR73.secsTo(now); int sinceRR73 = m_dateTimeRcvdRR73.secsTo(now);
@ -5834,7 +5829,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
if(m_mode=="MSK144" and m_bShMsgs) { if(m_mode=="MSK144" and m_bShMsgs) {
int i=t0s.length()-1; int i=t0s.length()-1;
t0="<" + t0s.mid(0,i) + "> "; t0="<" + t0s.mid(0,i) + "> ";
if(SpecOp::NA_VHF != m_config.special_op_id()) { if(SpecOp::NA_VHF != m_specOp) {
if(n<=-2) n=-3; if(n<=-2) n=-3;
if(n>=-1 and n<=1) n=0; if(n>=-1 and n<=1) n=0;
if(n>=2 and n<=4) n=3; if(n>=2 and n<=4) n=3;
@ -5854,7 +5849,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
} }
if(m_mode=="MSK144" and m_bShMsgs) { if(m_mode=="MSK144" and m_bShMsgs) {
if(m_config.special_op_id()==SpecOp::NONE) { if(m_specOp==SpecOp::NONE) {
t=t0 + "R" + rpt; t=t0 + "R" + rpt;
msgtype(t, ui->tx3); msgtype(t, ui->tx3);
} }
@ -5899,7 +5894,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
case Configuration::type_2_msg_1_full: case Configuration::type_2_msg_1_full:
msgtype(t + my_grid, ui->tx1); msgtype(t + my_grid, ui->tx1);
if (!eme_short_codes) { if (!eme_short_codes) {
if(is77BitMode () && SpecOp::NA_VHF == m_config.special_op_id()) { if(is77BitMode () && SpecOp::NA_VHF == m_specOp) {
msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code
} else { } else {
msgtype(t + "R" + rpt, ui->tx3); msgtype(t + "R" + rpt, ui->tx3);
@ -5911,7 +5906,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
break; break;
case Configuration::type_2_msg_3_full: case Configuration::type_2_msg_3_full:
if (is77BitMode () && SpecOp::NA_VHF == m_config.special_op_id()) { if (is77BitMode () && SpecOp::NA_VHF == m_specOp) {
msgtype(t + "R " + my_grid, ui->tx3); msgtype(t + "R " + my_grid, ui->tx3);
msgtype(t + "RRR", ui->tx4); msgtype(t + "RRR", ui->tx4);
} else { } else {
@ -5926,7 +5921,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
case Configuration::type_2_msg_5_only: case Configuration::type_2_msg_5_only:
msgtype(t00 + my_grid, ui->tx1); msgtype(t00 + my_grid, ui->tx1);
if (!eme_short_codes) { if (!eme_short_codes) {
if (is77BitMode () && SpecOp::NA_VHF == m_config.special_op_id()) { if (is77BitMode () && SpecOp::NA_VHF == m_specOp) {
msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code
msgtype(t + "RRR", ui->tx4); msgtype(t + "RRR", ui->tx4);
} else { } else {
@ -5947,7 +5942,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
msgtype(t, ui->tx5->lineEdit ()); msgtype(t, ui->tx5->lineEdit ());
} }
} else { } else {
if (hisCall != hisBase and SpecOp::HOUND != m_config.special_op_id()) { if (hisCall != hisBase and SpecOp::HOUND != m_specOp) {
if (shortList(hisCall)) { if (shortList(hisCall)) {
// cfm we know his full call with a type 1 tx1 message // cfm we know his full call with a type 1 tx1 message
t = hisCall + " " + my_callsign; t = hisCall + " " + my_callsign;
@ -5961,7 +5956,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
} }
} }
m_rpt=rpt; m_rpt=rpt;
if(SpecOp::HOUND == m_config.special_op_id() and is_compound) ui->tx1->setText("DE " + my_callsign); if(SpecOp::HOUND == m_specOp and is_compound) ui->tx1->setText("DE " + my_callsign);
} }
void MainWindow::TxAgain() void MainWindow::TxAgain()
@ -5984,7 +5979,7 @@ void MainWindow::clearDX ()
m_qsoStop.clear (); m_qsoStop.clear ();
m_inQSOwith.clear(); m_inQSOwith.clear();
genStdMsgs (QString {}); genStdMsgs (QString {});
if (m_mode=="FT8" and SpecOp::HOUND == m_config.special_op_id()) { if (m_mode=="FT8" and SpecOp::HOUND == m_specOp) {
m_ntx=1; m_ntx=1;
ui->txrb1->setChecked(true); ui->txrb1->setChecked(true);
} else { } else {
@ -6148,7 +6143,7 @@ void MainWindow::msgtype(QString t, QLineEdit* tx) //msgtype()
if(itype==7 and m_config.enable_VHF_features() and m_mode=="JT65") shortMsg=true; if(itype==7 and m_config.enable_VHF_features() and m_mode=="JT65") shortMsg=true;
if(m_mode=="MSK144" and t.mid(0,1)=="<") text=false; if(m_mode=="MSK144" and t.mid(0,1)=="<") text=false;
if((m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4" || "Q65" == m_mode) and if((m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4" || "Q65" == m_mode) and
SpecOp::NA_VHF==m_config.special_op_id()) { SpecOp::NA_VHF==m_specOp) {
int i0=t.trimmed().length()-7; int i0=t.trimmed().length()-7;
if(t.mid(i0,3)==" R ") text=false; if(t.mid(i0,3)==" R ") text=false;
} }
@ -6286,7 +6281,7 @@ void MainWindow::on_genStdMsgsPushButton_clicked() //genStdMsgs button
void MainWindow::cease_auto_Tx_after_QSO () void MainWindow::cease_auto_Tx_after_QSO ()
{ {
if (SpecOp::FOX != m_config.special_op_id () if (SpecOp::FOX != m_specOp
&& ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isEnabled () && ui->cbAutoSeq->isChecked ()) && ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isEnabled () && ui->cbAutoSeq->isChecked ())
{ {
// ensure that auto Tx is disabled even if disable Tx // ensure that auto Tx is disabled even if disable Tx
@ -6312,7 +6307,7 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button
QString grid=m_hisGrid; QString grid=m_hisGrid;
if(grid=="....") grid=""; if(grid=="....") grid="";
switch( m_config.special_op_id() ) switch( m_specOp )
{ {
case SpecOp::NA_VHF: case SpecOp::NA_VHF:
m_xSent=m_config.my_grid().left(4); m_xSent=m_config.my_grid().left(4);
@ -6384,10 +6379,9 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call,
} }
} }
if(m_config.clear_DX () and SpecOp::HOUND != m_config.special_op_id()) clearDX (); if(m_config.clear_DX () and SpecOp::HOUND != m_specOp) clearDX ();
m_dateTimeQSOOn = QDateTime {}; m_dateTimeQSOOn = QDateTime {};
auto special_op = m_config.special_op_id (); if(m_specOp!=SpecOp::NONE and m_specOp!=SpecOp::FOX and m_specOp!=SpecOp::HOUND) {
if (SpecOp::NONE < special_op && special_op < SpecOp::FOX) {
ui->sbSerialNumber->setValue(ui->sbSerialNumber->value() + 1); ui->sbSerialNumber->setValue(ui->sbSerialNumber->value() + 1);
} }
@ -6499,11 +6493,11 @@ void MainWindow::displayWidgets(qint64 n)
ui->pbBestSP->setVisible(m_mode=="FT4"); ui->pbBestSP->setVisible(m_mode=="FT4");
b=false; b=false;
if(m_mode=="FT4" or m_mode=="FT8" || "Q65" == m_mode) { if(m_mode=="FT4" or m_mode=="FT8" || "Q65" == m_mode) {
b=SpecOp::EU_VHF==m_config.special_op_id() or b=SpecOp::EU_VHF==m_specOp or
( SpecOp::RTTY==m_config.special_op_id() and ( SpecOp::RTTY==m_specOp and
(m_config.RTTY_Exchange()=="DX" or m_config.RTTY_Exchange()=="#") ); (m_config.RTTY_Exchange()=="DX" or m_config.RTTY_Exchange()=="#") );
} }
if(m_mode=="MSK144") b=SpecOp::EU_VHF==m_config.special_op_id(); if(m_mode=="MSK144") b=SpecOp::EU_VHF==m_specOp;
ui->sbSerialNumber->setVisible(b); ui->sbSerialNumber->setVisible(b);
m_lastCallsign.clear (); // ensures Tx5 is updated for new modes m_lastCallsign.clear (); // ensures Tx5 is updated for new modes
b=m_mode.startsWith("FST4"); b=m_mode.startsWith("FST4");
@ -6666,7 +6660,7 @@ void MainWindow::on_actionFT8_triggered()
m_modulator->setTRPeriod(m_TRperiod); // TODO - not thread safe m_modulator->setTRPeriod(m_TRperiod); // TODO - not thread safe
m_detector->setTRPeriod(m_TRperiod); // TODO - not thread safe m_detector->setTRPeriod(m_TRperiod); // TODO - not thread safe
ui->rh_decodes_title_label->setText(tr ("Rx Frequency")); ui->rh_decodes_title_label->setText(tr ("Rx Frequency"));
if(SpecOp::FOX==m_config.special_op_id()) { if(SpecOp::FOX==m_specOp) {
ui->lh_decodes_title_label->setText(tr ("Stations calling DXpedition %1").arg (m_config.my_callsign())); ui->lh_decodes_title_label->setText(tr ("Stations calling DXpedition %1").arg (m_config.my_callsign()));
ui->lh_decodes_headings_label->setText( "Call Grid dB Freq Dist Age Continent"); ui->lh_decodes_headings_label->setText( "Call Grid dB Freq Dist Age Continent");
} else { } else {
@ -6685,7 +6679,7 @@ void MainWindow::on_actionFT8_triggered()
ui->txb6->setEnabled(true); ui->txb6->setEnabled(true);
ui->txFirstCheckBox->setEnabled(true); ui->txFirstCheckBox->setEnabled(true);
ui->cbAutoSeq->setEnabled(true); ui->cbAutoSeq->setEnabled(true);
if(SpecOp::FOX==m_config.special_op_id()) { if(SpecOp::FOX==m_specOp) {
ui->txFirstCheckBox->setChecked(true); ui->txFirstCheckBox->setChecked(true);
ui->txFirstCheckBox->setEnabled(false); ui->txFirstCheckBox->setEnabled(false);
ui->cbHoldTxFreq->setChecked(true); ui->cbHoldTxFreq->setChecked(true);
@ -6697,7 +6691,7 @@ void MainWindow::on_actionFT8_triggered()
ui->labDXped->setText(tr ("Fox")); ui->labDXped->setText(tr ("Fox"));
on_fox_log_action_triggered(); on_fox_log_action_triggered();
} }
if(SpecOp::HOUND == m_config.special_op_id()) { if(SpecOp::HOUND == m_specOp) {
ui->houndButton->setChecked(true); ui->houndButton->setChecked(true);
ui->houndButton->setStyleSheet("background-color: #ff0000;"); ui->houndButton->setStyleSheet("background-color: #ff0000;");
ui->txFirstCheckBox->setChecked(false); ui->txFirstCheckBox->setChecked(false);
@ -6721,19 +6715,19 @@ void MainWindow::on_actionFT8_triggered()
switch_mode (Modes::FT8); switch_mode (Modes::FT8);
} }
if(m_config.special_op_id() != SpecOp::HOUND) { if(m_specOp != SpecOp::HOUND) {
ui->houndButton->setChecked(false); ui->houndButton->setChecked(false);
ui->houndButton->setStyleSheet(""); ui->houndButton->setStyleSheet("");
} }
if (SpecOp::NONE < m_config.special_op_id () && SpecOp::FOX > m_config.special_op_id ()) { if(m_specOp!=SpecOp::NONE and m_specOp!=SpecOp::FOX and m_specOp!=SpecOp::HOUND) {
QString t0=""; QString t0="";
if(SpecOp::NA_VHF==m_config.special_op_id()) t0="NA VHF"; if(SpecOp::NA_VHF==m_specOp) t0="NA VHF";
if(SpecOp::EU_VHF==m_config.special_op_id()) t0="EU VHF"; if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0="Field Day"; if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
if(SpecOp::RTTY==m_config.special_op_id()) t0="RTTY"; if(SpecOp::RTTY==m_specOp) t0="FT RU";
if(SpecOp::WW_DIGI==m_config.special_op_id()) t0="WW_DIGI"; if(SpecOp::WW_DIGI==m_specOp) t0="WW_DIGI";
if(SpecOp::ARRL_DIGI==m_config.special_op_id()) t0="ARRL_DIGI"; if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL_DIGI";
if(t0=="") { if(t0=="") {
ui->labDXped->setVisible(false); ui->labDXped->setVisible(false);
} else { } else {
@ -6743,7 +6737,7 @@ void MainWindow::on_actionFT8_triggered()
on_contest_log_action_triggered(); on_contest_log_action_triggered();
} }
if((SpecOp::FOX==m_config.special_op_id() or SpecOp::HOUND==m_config.special_op_id()) and !m_config.split_mode() and !m_bWarnedSplit) { if((SpecOp::FOX==m_specOp or SpecOp::HOUND==m_specOp) and !m_config.split_mode() and !m_bWarnedSplit) {
QString errorMsg; QString errorMsg;
MessageBox::critical_message (this, MessageBox::critical_message (this,
"Operation in FT8 DXpedition mode normally requires\n" "Operation in FT8 DXpedition mode normally requires\n"
@ -6961,14 +6955,14 @@ void MainWindow::on_actionQ65_triggered()
ui->rh_decodes_headings_label->setText("UTC dB DT Freq " + tr ("Message")); ui->rh_decodes_headings_label->setText("UTC dB DT Freq " + tr ("Message"));
statusChanged(); statusChanged();
if (SpecOp::NONE < m_config.special_op_id () && SpecOp::FOX > m_config.special_op_id ()) { if(m_specOp!=SpecOp::NONE and m_specOp!=SpecOp::FOX and m_specOp!=SpecOp::HOUND) {
QString t0=""; QString t0="";
if(SpecOp::NA_VHF==m_config.special_op_id()) t0="NA VHF"; if(SpecOp::NA_VHF==m_specOp) t0="NA VHF";
if(SpecOp::EU_VHF==m_config.special_op_id()) t0="EU VHF"; if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0="Field Day"; if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
if(SpecOp::RTTY==m_config.special_op_id()) t0="RTTY"; if(SpecOp::RTTY==m_specOp) t0="FT RU";
if(SpecOp::WW_DIGI==m_config.special_op_id()) t0="WW_DIGI"; if(SpecOp::WW_DIGI==m_specOp) t0="WW_DIGI";
if(SpecOp::ARRL_DIGI==m_config.special_op_id()) t0="ARRL_DIGI"; if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL_DIGI";
if(t0=="") { if(t0=="") {
ui->labDXped->setVisible(false); ui->labDXped->setVisible(false);
} else { } else {
@ -6982,7 +6976,7 @@ void MainWindow::on_actionQ65_triggered()
void MainWindow::on_actionMSK144_triggered() void MainWindow::on_actionMSK144_triggered()
{ {
if(SpecOp::EU_VHF < m_config.special_op_id()) { if(SpecOp::EU_VHF < m_specOp) {
// We are rejecting the requested mode change, so re-check the old mode // We are rejecting the requested mode change, so re-check the old mode
if("FT8"==m_mode) ui->actionFT8->setChecked(true); if("FT8"==m_mode) ui->actionFT8->setChecked(true);
if("JT4"==m_mode) ui->actionJT4->setChecked(true); if("JT4"==m_mode) ui->actionJT4->setChecked(true);
@ -6997,7 +6991,7 @@ void MainWindow::on_actionMSK144_triggered()
// Make sure that MSK144 is not checked. // Make sure that MSK144 is not checked.
ui->actionMSK144->setChecked(false); ui->actionMSK144->setChecked(false);
MessageBox::warning_message (this, tr ("Improper mode"), MessageBox::warning_message (this, tr ("Improper mode"),
"MSK144 not available if Fox, Hound, Field Day, RTTY, or WW Digi contest is selected."); "MSK144 not available if Fox, Hound, Field Day, FT Roundup, WW Digi. or ARRL Digi contest is selected.");
return; return;
} }
m_mode="MSK144"; m_mode="MSK144";
@ -7044,8 +7038,8 @@ void MainWindow::on_actionMSK144_triggered()
statusChanged(); statusChanged();
QString t0=""; QString t0="";
if(SpecOp::NA_VHF==m_config.special_op_id()) t0="NA VHF"; if(SpecOp::NA_VHF==m_specOp) t0="NA VHF";
if(SpecOp::EU_VHF==m_config.special_op_id()) t0="EU VHF"; if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
if(t0=="") { if(t0=="") {
ui->labDXped->setVisible(false); ui->labDXped->setVisible(false);
} else { } else {
@ -7811,7 +7805,7 @@ void MainWindow::transmit (double snr)
true, false, snr, m_TRperiod); true, false, snr, m_TRperiod);
} }
if((m_mode=="FT4" or m_mode=="FT8") and m_maxPoints>0 and SpecOp::ARRL_DIGI==m_config.special_op_id()) { if((m_mode=="FT4" or m_mode=="FT8") and m_maxPoints>0 and SpecOp::ARRL_DIGI==m_specOp) {
ui->dxCallEntry->setText(m_deCall); ui->dxCallEntry->setText(m_deCall);
ui->dxGridEntry->setText(m_deGrid); ui->dxGridEntry->setText(m_deGrid);
genStdMsgs("-10"); genStdMsgs("-10");
@ -7822,7 +7816,7 @@ void MainWindow::transmit (double snr)
toneSpacing=-3; toneSpacing=-3;
if(m_config.x2ToneSpacing()) toneSpacing=2*12000.0/1920.0; if(m_config.x2ToneSpacing()) toneSpacing=2*12000.0/1920.0;
if(m_config.x4ToneSpacing()) toneSpacing=4*12000.0/1920.0; if(m_config.x4ToneSpacing()) toneSpacing=4*12000.0/1920.0;
if(SpecOp::FOX==m_config.special_op_id() and !m_tune) toneSpacing=-1; if(SpecOp::FOX==m_specOp and !m_tune) toneSpacing=-1;
Q_EMIT sendMessage (m_mode, NUM_FT8_SYMBOLS, Q_EMIT sendMessage (m_mode, NUM_FT8_SYMBOLS,
1920.0, ui->TxFreqSpinBox->value () - m_XIT, 1920.0, ui->TxFreqSpinBox->value () - m_XIT,
toneSpacing, m_soundOutput, m_config.audio_output_channel (), toneSpacing, m_soundOutput, m_config.audio_output_channel (),
@ -8095,7 +8089,7 @@ void::MainWindow::VHF_features_enabled(bool b)
ui->actionMessage_averaging->setEnabled(b && (m_mode=="JT4" or m_mode=="JT65")); ui->actionMessage_averaging->setEnabled(b && (m_mode=="JT4" or m_mode=="JT65"));
ui->actionEnable_AP_JT65->setVisible (b && m_mode=="JT65"); ui->actionEnable_AP_JT65->setVisible (b && m_mode=="JT65");
if(!b && m_msgAvgWidget and (SpecOp::FOX != m_config.special_op_id()) and !m_config.autoLog()) { if(!b && m_msgAvgWidget and (SpecOp::FOX != m_specOp) and !m_config.autoLog()) {
if(m_msgAvgWidget->isVisible() and m_mode!="JT4" and m_mode!="JT9" and m_mode!="JT65") { if(m_msgAvgWidget->isVisible() and m_mode!="JT4" and m_mode!="JT9" and m_mode!="JT65") {
m_msgAvgWidget->close(); m_msgAvgWidget->close();
} }
@ -8934,7 +8928,7 @@ void MainWindow::statusUpdate () const
m_config.my_callsign (), m_config.my_grid (), m_config.my_callsign (), m_config.my_grid (),
m_hisGrid, m_tx_watchdog, m_hisGrid, m_tx_watchdog,
submode != QChar::Null ? QString {submode} : QString {}, m_bFastMode, submode != QChar::Null ? QString {submode} : QString {}, m_bFastMode,
static_cast<quint8> (m_config.special_op_id ()), static_cast<quint8> (m_specOp),
ftol, tr_period, m_multi_settings->configuration_name (), ftol, tr_period, m_multi_settings->configuration_name (),
m_currentMessage); m_currentMessage);
} }
@ -9091,7 +9085,7 @@ void MainWindow::on_sbNlist_valueChanged(int n)
void MainWindow::on_sbNslots_valueChanged(int n) void MainWindow::on_sbNslots_valueChanged(int n)
{ {
m_Nslots=n; m_Nslots=n;
if(m_config.special_op_id()!=SpecOp::FOX) return; if(m_specOp!=SpecOp::FOX) return;
QString t; QString t;
t = t.asprintf(" NSlots %d",m_Nslots); t = t.asprintf(" NSlots %d",m_Nslots);
writeFoxQSO(t); writeFoxQSO(t);
@ -9100,7 +9094,7 @@ void MainWindow::on_sbNslots_valueChanged(int n)
void MainWindow::on_sbMax_dB_valueChanged(int n) void MainWindow::on_sbMax_dB_valueChanged(int n)
{ {
m_max_dB=n; m_max_dB=n;
if(m_config.special_op_id()!=SpecOp::FOX) return; if(m_specOp!=SpecOp::FOX) return;
QString t; QString t;
t = t.asprintf(" Max_dB %d",m_max_dB); t = t.asprintf(" Max_dB %d",m_max_dB);
writeFoxQSO(t); writeFoxQSO(t);
@ -9108,7 +9102,7 @@ void MainWindow::on_sbMax_dB_valueChanged(int n)
void MainWindow::on_pbFoxReset_clicked() void MainWindow::on_pbFoxReset_clicked()
{ {
if(m_config.special_op_id()!=SpecOp::FOX) return; if(m_specOp!=SpecOp::FOX) return;
auto button = MessageBox::query_message (this, tr ("Confirm Reset"), auto button = MessageBox::query_message (this, tr ("Confirm Reset"),
tr ("Are you sure you want to clear the QSO queues?")); tr ("Are you sure you want to clear the QSO queues?"));
if(button == MessageBox::Yes) { if(button == MessageBox::Yes) {
@ -9777,17 +9771,17 @@ void MainWindow::chkFT4()
ui->cbAutoSeq->setEnabled(true); ui->cbAutoSeq->setEnabled(true);
ui->respondComboBox->setVisible(true); ui->respondComboBox->setVisible(true);
ui->respondComboBox->setEnabled(true); ui->respondComboBox->setEnabled(true);
ui->labDXped->setVisible(m_config.special_op_id()!=SpecOp::NONE); ui->labDXped->setVisible(m_specOp!=SpecOp::NONE);
ui->respondComboBox->setVisible(ui->cbAutoSeq->isChecked()); ui->respondComboBox->setVisible(ui->cbAutoSeq->isChecked());
if (SpecOp::NONE < m_config.special_op_id () && SpecOp::FOX > m_config.special_op_id ()) { if(m_specOp!=SpecOp::NONE and m_specOp!=SpecOp::FOX and m_specOp!=SpecOp::HOUND) {
QString t0=""; QString t0="";
if(SpecOp::NA_VHF==m_config.special_op_id()) t0="NA VHF"; if(SpecOp::NA_VHF==m_specOp) t0="NA VHF";
if(SpecOp::EU_VHF==m_config.special_op_id()) t0="EU VHF"; if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0="Field Day"; if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
if(SpecOp::RTTY==m_config.special_op_id()) t0="RTTY"; if(SpecOp::RTTY==m_specOp) t0="FT RU";
if(SpecOp::WW_DIGI==m_config.special_op_id()) t0="WW_DIGI"; if(SpecOp::WW_DIGI==m_specOp) t0="WW_DIGI";
if(SpecOp::ARRL_DIGI==m_config.special_op_id()) t0="ARRL_DIGI"; if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL_DIGI";
if(t0=="") { if(t0=="") {
ui->labDXped->setVisible(false); ui->labDXped->setVisible(false);
} else { } else {
@ -9796,7 +9790,7 @@ void MainWindow::chkFT4()
} }
on_contest_log_action_triggered(); on_contest_log_action_triggered();
} }
if (SpecOp::HOUND == m_config.special_op_id() or SpecOp::FOX == m_config.special_op_id()) { if (SpecOp::HOUND == m_specOp or SpecOp::FOX == m_specOp) {
ui->labDXped->setVisible(false); ui->labDXped->setVisible(false);
} }
@ -9951,7 +9945,7 @@ void MainWindow::on_ft8Button_clicked()
{ {
ui->houndButton->setChecked(false); ui->houndButton->setChecked(false);
ui->houndButton->setStyleSheet(""); ui->houndButton->setStyleSheet("");
if(m_config.special_op_id()==SpecOp::HOUND) m_config.setSpecial_None(); if(m_specOp==SpecOp::HOUND) m_config.setSpecial_None();
on_actionFT8_triggered(); on_actionFT8_triggered();
} }
@ -9959,7 +9953,7 @@ void MainWindow::on_ft4Button_clicked()
{ {
ui->houndButton->setChecked(false); ui->houndButton->setChecked(false);
ui->houndButton->setStyleSheet(""); ui->houndButton->setStyleSheet("");
if(m_config.special_op_id()==SpecOp::HOUND) m_config.setSpecial_None(); if(m_specOp==SpecOp::HOUND) m_config.setSpecial_None();
on_actionFT4_triggered(); on_actionFT4_triggered();
} }
@ -9967,7 +9961,7 @@ void MainWindow::on_msk144Button_clicked()
{ {
ui->houndButton->setChecked(false); ui->houndButton->setChecked(false);
ui->houndButton->setStyleSheet(""); ui->houndButton->setStyleSheet("");
if(m_config.special_op_id()==SpecOp::HOUND) m_config.setSpecial_None(); if(m_specOp==SpecOp::HOUND) m_config.setSpecial_None();
on_actionMSK144_triggered(); on_actionMSK144_triggered();
} }
@ -9975,7 +9969,7 @@ void MainWindow::on_q65Button_clicked()
{ {
ui->houndButton->setChecked(false); ui->houndButton->setChecked(false);
ui->houndButton->setStyleSheet(""); ui->houndButton->setStyleSheet("");
if(m_config.special_op_id()==SpecOp::HOUND) m_config.setSpecial_None(); if(m_specOp==SpecOp::HOUND) m_config.setSpecial_None();
on_actionQ65_triggered(); on_actionQ65_triggered();
} }
@ -9983,6 +9977,6 @@ void MainWindow::on_jt65Button_clicked()
{ {
ui->houndButton->setChecked(false); ui->houndButton->setChecked(false);
ui->houndButton->setStyleSheet(""); ui->houndButton->setStyleSheet("");
if(m_config.special_op_id()==SpecOp::HOUND) m_config.setSpecial_None(); if(m_specOp==SpecOp::HOUND) m_config.setSpecial_None();
on_actionJT65_triggered(); on_actionJT65_triggered();
} }

View File

@ -105,6 +105,7 @@ public:
using Frequency = Radio::Frequency; using Frequency = Radio::Frequency;
using FrequencyDelta = Radio::FrequencyDelta; using FrequencyDelta = Radio::FrequencyDelta;
using Mode = Modes::Mode; using Mode = Modes::Mode;
using SpecOp = Configuration::SpecialOperatingActivity;
explicit MainWindow(QDir const& temp_directory, bool multiple, MultiSettings *, explicit MainWindow(QDir const& temp_directory, bool multiple, MultiSettings *,
QSharedMemory *shdmem, unsigned downSampleFactor, QSharedMemory *shdmem, unsigned downSampleFactor,
@ -562,6 +563,8 @@ private:
bool m_bOK_to_chk=false; bool m_bOK_to_chk=false;
bool m_bSentReport=false; bool m_bSentReport=false;
SpecOp m_specOp;
enum enum
{ {
CALLING, CALLING,