mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-21 19:55:20 -05:00
Ensure appended AP information does not affect QSO sequencing
This commit is contained in:
parent
2e1ed58129
commit
a555236b9e
@ -16,11 +16,15 @@ namespace
|
|||||||
|
|
||||||
DecodedText::DecodedText (QString const& the_string)
|
DecodedText::DecodedText (QString const& the_string)
|
||||||
: string_ {the_string.left (the_string.indexOf (QChar::Nbsp))} // discard appended info
|
: string_ {the_string.left (the_string.indexOf (QChar::Nbsp))} // discard appended info
|
||||||
|
, clean_string_ {string_}
|
||||||
, padding_ {string_.indexOf (" ") > 4 ? 2 : 0} // allow for
|
, padding_ {string_.indexOf (" ") > 4 ? 2 : 0} // allow for
|
||||||
// seconds
|
// seconds
|
||||||
, message_ {string_.mid (column_qsoText + padding_).trimmed ()}
|
, message_ {string_.mid (column_qsoText + padding_).trimmed ()}
|
||||||
, is_standard_ {false}
|
, is_standard_ {false}
|
||||||
{
|
{
|
||||||
|
// discard appended AP info
|
||||||
|
clean_string_.replace (QRegularExpression {R"(^(.*)(?:(?:\?\s)?a[0-9].*)$)"}, "\\1");
|
||||||
|
|
||||||
// qDebug () << "DecodedText: the_string:" << the_string << "Nbsp pos:" << the_string.indexOf (QChar::Nbsp);
|
// qDebug () << "DecodedText: the_string:" << the_string << "Nbsp pos:" << the_string.indexOf (QChar::Nbsp);
|
||||||
if (message_.length() >= 1)
|
if (message_.length() >= 1)
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,7 @@ public:
|
|||||||
explicit DecodedText (QString const& message);
|
explicit DecodedText (QString const& message);
|
||||||
|
|
||||||
QString string() const { return string_; };
|
QString string() const { return string_; };
|
||||||
|
QString clean_string() const { return clean_string_; };
|
||||||
QStringList messageWords () const;
|
QStringList messageWords () const;
|
||||||
int indexOf(QString s) const { return string_.indexOf(s); };
|
int indexOf(QString s) const { return string_.indexOf(s); };
|
||||||
int indexOf(QString s, int i) const { return string_.indexOf(s,i); };
|
int indexOf(QString s, int i) const { return string_.indexOf(s,i); };
|
||||||
@ -76,6 +77,7 @@ private:
|
|||||||
column_qsoText = 22 };
|
column_qsoText = 22 };
|
||||||
|
|
||||||
QString string_;
|
QString string_;
|
||||||
|
QString clean_string_;
|
||||||
int padding_;
|
int padding_;
|
||||||
QString message_;
|
QString message_;
|
||||||
QString message0_;
|
QString message0_;
|
||||||
|
@ -3621,7 +3621,7 @@ void MainWindow::auto_sequence (DecodedText const& message, unsigned start_toler
|
|||||||
auto const& message_words = message.messageWords ();
|
auto const& message_words = message.messageWords ();
|
||||||
auto is_73 = message_words.filter (QRegularExpression {"^(73|RR73)$"}).size();
|
auto is_73 = message_words.filter (QRegularExpression {"^(73|RR73)$"}).size();
|
||||||
bool is_OK=false;
|
bool is_OK=false;
|
||||||
if(m_mode=="MSK144" and message.string().indexOf(ui->dxCallEntry->text()+" R ")>0) is_OK=true;
|
if(m_mode=="MSK144" and message.clean_string ().indexOf(ui->dxCallEntry->text()+" R ")>0) is_OK=true;
|
||||||
if (message_words.size () > 2 && (message.isStandardMessage() || (is_73 or is_OK))) {
|
if (message_words.size () > 2 && (message.isStandardMessage() || (is_73 or is_OK))) {
|
||||||
auto df = message.frequencyOffset ();
|
auto df = message.frequencyOffset ();
|
||||||
auto within_tolerance = (qAbs (ui->RxFreqSpinBox->value () - df) <= int (start_tolerance)
|
auto within_tolerance = (qAbs (ui->RxFreqSpinBox->value () - df) <= int (start_tolerance)
|
||||||
@ -3636,7 +3636,7 @@ void MainWindow::auto_sequence (DecodedText const& message, unsigned start_toler
|
|||||||
|| message_words.contains ("DE")))
|
|| message_words.contains ("DE")))
|
||||||
|| !message.isStandardMessage ()); // free text 73/RR73
|
|| !message.isStandardMessage ()); // free text 73/RR73
|
||||||
|
|
||||||
QStringList w=message.string().mid(22).remove("<").remove(">").split(" ",SkipEmptyParts);
|
QStringList w=message.clean_string ().mid(22).remove("<").remove(">").split(" ",SkipEmptyParts);
|
||||||
QString w2;
|
QString w2;
|
||||||
int nrpt=0;
|
int nrpt=0;
|
||||||
if (w.size () > 2)
|
if (w.size () > 2)
|
||||||
@ -3648,8 +3648,8 @@ void MainWindow::auto_sequence (DecodedText const& message, unsigned start_toler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool bEU_VHF=(nrpt>=520001 and nrpt<=594000);
|
bool bEU_VHF=(nrpt>=520001 and nrpt<=594000);
|
||||||
if(bEU_VHF and message.string().contains("<"+m_config.my_callsign() + "> ")) {
|
if(bEU_VHF and message.clean_string ().contains("<"+m_config.my_callsign() + "> ")) {
|
||||||
m_xRcvd=message.string().trimmed().right(13);
|
m_xRcvd=message.clean_string ().trimmed().right(13);
|
||||||
}
|
}
|
||||||
if (m_auto
|
if (m_auto
|
||||||
&& (m_QSOProgress==REPLYING or (!ui->tx1->isEnabled () and m_QSOProgress==REPORT))
|
&& (m_QSOProgress==REPLYING or (!ui->tx1->isEnabled () and m_QSOProgress==REPORT))
|
||||||
@ -4751,7 +4751,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
auto ctrl = modifiers.testFlag (Qt::ControlModifier);
|
auto ctrl = modifiers.testFlag (Qt::ControlModifier);
|
||||||
// auto alt = modifiers.testFlag (Qt::AltModifier);
|
// auto alt = modifiers.testFlag (Qt::AltModifier);
|
||||||
// basic mode sanity checks
|
// basic mode sanity checks
|
||||||
auto const& parts = message.string ().split (' ', SkipEmptyParts);
|
auto const& parts = message.clean_string ().split (' ', SkipEmptyParts);
|
||||||
if (parts.size () < 5) return;
|
if (parts.size () < 5) return;
|
||||||
auto const& mode = parts.at (4).left (1);
|
auto const& mode = parts.at (4).left (1);
|
||||||
if (("JT9+JT65" == m_mode && !("@" == mode || "#" == mode))
|
if (("JT9+JT65" == m_mode && !("@" == mode || "#" == mode))
|
||||||
@ -4801,16 +4801,16 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
QString hisgrid;
|
QString hisgrid;
|
||||||
message.deCallAndGrid(/*out*/hiscall,hisgrid);
|
message.deCallAndGrid(/*out*/hiscall,hisgrid);
|
||||||
|
|
||||||
if(message.string().contains(hiscall+"/R")) {
|
if(message.clean_string ().contains(hiscall+"/R")) {
|
||||||
hiscall+="/R";
|
hiscall+="/R";
|
||||||
ui->dxCallEntry->setText(hiscall);
|
ui->dxCallEntry->setText(hiscall);
|
||||||
}
|
}
|
||||||
if(message.string().contains(hiscall+"/P")) {
|
if(message.clean_string ().contains(hiscall+"/P")) {
|
||||||
hiscall+="/P";
|
hiscall+="/P";
|
||||||
ui->dxCallEntry->setText(hiscall);
|
ui->dxCallEntry->setText(hiscall);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList w=message.string().mid(22).remove("<").remove(">").split(" ",SkipEmptyParts);
|
QStringList w=message.clean_string ().mid(22).remove("<").remove(">").split(" ",SkipEmptyParts);
|
||||||
int nw=w.size();
|
int nw=w.size();
|
||||||
if(nw>=4) {
|
if(nw>=4) {
|
||||||
if(message_words.size()<3) return;
|
if(message_words.size()<3) return;
|
||||||
@ -4822,9 +4822,9 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool is_73 = message_words.filter (QRegularExpression {"^(73|RR73)$"}).size ();
|
bool is_73 = message_words.filter (QRegularExpression {"^(73|RR73)$"}).size ();
|
||||||
if (!is_73 and !message.isStandardMessage() and !message.string().contains("<")) {
|
if (!is_73 and !message.isStandardMessage() and !message.clean_string ().contains("<")) {
|
||||||
qDebug () << "Not processing message - hiscall:" << hiscall << "hisgrid:" << hisgrid
|
qDebug () << "Not processing message - hiscall:" << hiscall << "hisgrid:" << hisgrid
|
||||||
<< message.string() << message.isStandardMessage();
|
<< message.clean_string () << message.isStandardMessage();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4878,7 +4878,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
auto base_call = Radio::base_callsign (hiscall);
|
auto base_call = Radio::base_callsign (hiscall);
|
||||||
|
|
||||||
// Determine appropriate response to received message
|
// Determine appropriate response to received message
|
||||||
auto dtext = " " + message.string () + " ";
|
auto dtext = " " + message.clean_string () + " ";
|
||||||
dtext=dtext.remove("<").remove(">");
|
dtext=dtext.remove("<").remove(">");
|
||||||
if(dtext.contains (" " + m_baseCall + " ")
|
if(dtext.contains (" " + m_baseCall + " ")
|
||||||
|| dtext.contains ("<" + m_baseCall + "> ")
|
|| dtext.contains ("<" + m_baseCall + "> ")
|
||||||
@ -4906,7 +4906,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
MessageBox::information_message (this, msg);
|
MessageBox::information_message (this, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList t=message.string().split(' ', SkipEmptyParts);
|
QStringList t=message.clean_string ().split(' ', SkipEmptyParts);
|
||||||
int n=t.size();
|
int n=t.size();
|
||||||
QString t0=t.at(n-2);
|
QString t0=t.at(n-2);
|
||||||
QString t1=t0.right(1);
|
QString t1=t0.right(1);
|
||||||
@ -5154,7 +5154,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString s1 = m_QSOText.trimmed ();
|
QString s1 = m_QSOText.trimmed ();
|
||||||
QString s2 = message.string ().trimmed();
|
QString s2 = message.clean_string ().trimmed();
|
||||||
if (s1!=s2 and !message.isTX()) {
|
if (s1!=s2 and !message.isTX()) {
|
||||||
if (!s2.contains(m_baseCall) or m_mode=="MSK144") { // Taken care of elsewhere if for_us and slow mode
|
if (!s2.contains(m_baseCall) or m_mode=="MSK144") { // Taken care of elsewhere if for_us and slow mode
|
||||||
ui->decodedTextBrowser2->displayDecodedText(message, m_baseCall,m_mode,m_config.DXCC(),
|
ui->decodedTextBrowser2->displayDecodedText(message, m_baseCall,m_mode,m_config.DXCC(),
|
||||||
|
Loading…
Reference in New Issue
Block a user