mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-09-04 14:17:52 -04:00
Finish connecting "New DXCC on Band", "New Grid", "New Grid on Band". Needs more testing!
This commit is contained in:
parent
68ec268fef
commit
ef3f084c5c
@ -178,6 +178,7 @@ QString DisplayText::appendWorkedB4(QString message, QString const& callsign, QS
|
|||||||
logBook.match(/*in*/call,grid,/*out*/countryName,callWorkedBefore,countryWorkedBefore,gridB4);
|
logBook.match(/*in*/call,grid,/*out*/countryName,callWorkedBefore,countryWorkedBefore,gridB4);
|
||||||
logBook.match(/*in*/call,grid,/*out*/countryName,callB4onBand,countryB4onBand,gridB4onBand,
|
logBook.match(/*in*/call,grid,/*out*/countryName,callB4onBand,countryB4onBand,gridB4onBand,
|
||||||
/*in*/ currentBand);
|
/*in*/ currentBand);
|
||||||
|
// if(gridB4) qDebug() << "aa" << grid << gridB4 << gridB4onBand;
|
||||||
|
|
||||||
message = message.trimmed ();
|
message = message.trimmed ();
|
||||||
QString appendage{""};
|
QString appendage{""};
|
||||||
@ -187,17 +188,29 @@ QString DisplayText::appendWorkedB4(QString message, QString const& callsign, QS
|
|||||||
appendage += "!";
|
appendage += "!";
|
||||||
*bg = m_color_DXCC;
|
*bg = m_color_DXCC;
|
||||||
} else {
|
} else {
|
||||||
if (!callWorkedBefore) {
|
if(!countryB4onBand) {
|
||||||
// but have worked the country
|
*bg = m_color_DXCCband;
|
||||||
appendage += "~";
|
|
||||||
*bg = m_color_NewCall;
|
|
||||||
} else {
|
} else {
|
||||||
if(!callB4onBand) {
|
if(!gridB4) {
|
||||||
appendage += "~";
|
*bg = m_color_NewGrid;
|
||||||
*bg = m_color_NewCallBand;
|
|
||||||
} else {
|
} else {
|
||||||
appendage += " "; // have worked this call before
|
if(!gridB4onBand) {
|
||||||
*bg = m_color_CQ;
|
*bg = m_color_NewGridBand;
|
||||||
|
} else {
|
||||||
|
if (!callWorkedBefore) {
|
||||||
|
// but have worked the country
|
||||||
|
appendage += "~";
|
||||||
|
*bg = m_color_NewCall;
|
||||||
|
} else {
|
||||||
|
if(!callB4onBand) {
|
||||||
|
appendage += "~";
|
||||||
|
*bg = m_color_NewCallBand;
|
||||||
|
} else {
|
||||||
|
appendage += " "; // have worked this call before
|
||||||
|
*bg = m_color_CQ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -269,8 +282,8 @@ void DisplayText::displayDecodedText(DecodedText const& decodedText, QString con
|
|||||||
QString dxCall;
|
QString dxCall;
|
||||||
QString dxGrid;
|
QString dxGrid;
|
||||||
decodedText.deCallAndGrid (/*out*/ dxCall, dxGrid);
|
decodedText.deCallAndGrid (/*out*/ dxCall, dxGrid);
|
||||||
QRegularExpression m_grid_regexp {"\\A(?![Rr]{2}73)[A-Ra-r]{2}[0-9]{2}([A-Xa-x]{2}){0,1}\\z"};
|
QRegularExpression grid_regexp {"\\A(?![Rr]{2}73)[A-Ra-r]{2}[0-9]{2}([A-Xa-x]{2}){0,1}\\z"};
|
||||||
if(!dxGrid.contains(m_grid_regexp)) dxGrid="";
|
if(!dxGrid.contains(grid_regexp)) dxGrid="";
|
||||||
message = message.left (message.indexOf (QChar::Nbsp)); // strip appended info
|
message = message.left (message.indexOf (QChar::Nbsp)); // strip appended info
|
||||||
if (displayDXCCEntity && CQcall)
|
if (displayDXCCEntity && CQcall)
|
||||||
// if enabled add the DXCC entity and B4 status to the end of the
|
// if enabled add the DXCC entity and B4 status to the end of the
|
||||||
|
@ -15,6 +15,7 @@ void ADIF::init(QString const& filename)
|
|||||||
{
|
{
|
||||||
_filename = filename;
|
_filename = filename;
|
||||||
_data.clear();
|
_data.clear();
|
||||||
|
_data2.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -54,7 +55,8 @@ QString ADIF::extractField(QString const& record, QString const& fieldName) cons
|
|||||||
|
|
||||||
void ADIF::load()
|
void ADIF::load()
|
||||||
{
|
{
|
||||||
_data.clear();
|
_data.clear();
|
||||||
|
_data2.clear();
|
||||||
QFile inputFile(_filename);
|
QFile inputFile(_filename);
|
||||||
if (inputFile.open(QIODevice::ReadOnly))
|
if (inputFile.open(QIODevice::ReadOnly))
|
||||||
{
|
{
|
||||||
@ -98,6 +100,7 @@ void ADIF::load()
|
|||||||
buffer.remove (0, next_record >=0 ? next_record : buffer.size ());
|
buffer.remove (0, next_record >=0 ? next_record : buffer.size ());
|
||||||
record = record.mid (record.indexOf (QChar {'<'}));
|
record = record.mid (record.indexOf (QChar {'<'}));
|
||||||
add (extractField (record, "CALL")
|
add (extractField (record, "CALL")
|
||||||
|
, extractField (record, "GRIDSQUARE")
|
||||||
, extractField (record, "BAND")
|
, extractField (record, "BAND")
|
||||||
, extractField (record, "MODE")
|
, extractField (record, "MODE")
|
||||||
, extractField (record, "QSO_DATE"));
|
, extractField (record, "QSO_DATE"));
|
||||||
@ -107,24 +110,33 @@ void ADIF::load()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ADIF::add(QString const& call, QString const& band, QString const& mode, QString const& date)
|
void ADIF::add(QString const& call, QString const& grid, QString const& band,
|
||||||
|
QString const& mode, QString const& date)
|
||||||
{
|
{
|
||||||
QSO q;
|
QSO q;
|
||||||
q.call = call;
|
q.call = call;
|
||||||
q.band = band;
|
q.grid = grid;
|
||||||
q.mode = mode;
|
q.band = band;
|
||||||
q.date = date;
|
q.mode = mode;
|
||||||
if (q.call.size ())
|
q.date = date;
|
||||||
{
|
if(q.call.size ()) {
|
||||||
_data.insert(q.call,q);
|
_data.insert(q.call,q);
|
||||||
// qDebug() << "Added as worked:" << call << band << mode << date;
|
_data2.insert(q.grid,q);
|
||||||
}
|
// qDebug() << "In the log:" << call << grid << band << mode << date;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// return true if in the log same band and mode (where JT65 == JT9 == FT8)
|
// return true if in the log same band and mode (where JT65 == JT9 == FT8)
|
||||||
bool ADIF::match(QString const& call, QString const& band, QString const& mode) const
|
bool ADIF::match(QString const& call, QString const& band, QString const& mode) const
|
||||||
{
|
{
|
||||||
QList<QSO> qsos = _data.values(call);
|
QList<QSO> qsos;
|
||||||
|
QRegularExpression grid_regexp {"\\A(?![Rr]{2}73)[A-Ra-r]{2}[0-9]{2}([A-Xa-x]{2}){0,1}\\z"};
|
||||||
|
if(!call.contains(grid_regexp)) {
|
||||||
|
qsos = _data.values(call);
|
||||||
|
} else {
|
||||||
|
qsos = _data2.values(call);
|
||||||
|
}
|
||||||
|
// qDebug() << "AA" << call << qsos.size();
|
||||||
if (qsos.size()>0) {
|
if (qsos.size()>0) {
|
||||||
QSO q;
|
QSO q;
|
||||||
foreach(q,qsos) {
|
foreach(q,qsos) {
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QMultiHash>
|
#include <QMultiHash>
|
||||||
|
#include <QRegularExpression>
|
||||||
#else
|
#else
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#endif
|
#endif
|
||||||
@ -23,7 +24,8 @@ class ADIF
|
|||||||
public:
|
public:
|
||||||
void init(QString const& filename);
|
void init(QString const& filename);
|
||||||
void load();
|
void load();
|
||||||
void add(QString const& call, QString const& band, QString const& mode, QString const& date);
|
void add(QString const& call, const QString &grid, QString const& band, QString const& mode,
|
||||||
|
QString const& date);
|
||||||
bool match(QString const& call, QString const& band, QString const& mode) const;
|
bool match(QString const& call, QString const& band, QString const& mode) const;
|
||||||
QList<QString> getCallList() const;
|
QList<QString> getCallList() const;
|
||||||
int getCount() const;
|
int getCount() const;
|
||||||
@ -37,19 +39,17 @@ class ADIF
|
|||||||
, QString const& strDialFreq, QString const& m_myCall, QString const& m_myGrid
|
, QString const& strDialFreq, QString const& m_myCall, QString const& m_myGrid
|
||||||
, QString const& m_txPower, QString const& operator_call);
|
, QString const& m_txPower, QString const& operator_call);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct QSO
|
struct QSO
|
||||||
{
|
{
|
||||||
QString call,band,mode,date;
|
QString call,grid,band,mode,date;
|
||||||
};
|
};
|
||||||
|
|
||||||
QMultiHash<QString, QSO> _data;
|
QMultiHash<QString, QSO> _data;
|
||||||
QString _filename;
|
QMultiHash<QString, QSO> _data2;
|
||||||
|
QString _filename;
|
||||||
QString extractField(QString const& line, QString const& fieldName) const;
|
QString extractField(QString const& line, QString const& fieldName) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -71,13 +71,14 @@ void LogBook::match(/*in*/const QString call,QString grid,
|
|||||||
bool &gridWorkedBefore,
|
bool &gridWorkedBefore,
|
||||||
QString currentBand) const
|
QString currentBand) const
|
||||||
{
|
{
|
||||||
if(currentBand=="") qDebug() << "aa" << grid;
|
// if(currentBand=="") qDebug() << "aa" << grid;
|
||||||
if(currentBand!="") qDebug() << "bb" << grid << currentBand;
|
// if(currentBand!="") qDebug() << "bb" << grid << currentBand;
|
||||||
|
|
||||||
if (call.length() > 0) {
|
if (call.length() > 0) {
|
||||||
QString currentMode = "JT9"; // JT65 == JT9 == FT8 in ADIF::match()
|
QString currentMode = "JT9"; // JT65 == JT9 == FT8 in ADIF::match()
|
||||||
// QString currentBand = ""; // match any band
|
// QString currentBand = ""; // match any band
|
||||||
callWorkedBefore = _log.match(call,currentBand,currentMode);
|
callWorkedBefore = _log.match(call,currentBand,currentMode);
|
||||||
|
gridWorkedBefore = _log.match(grid,currentBand,currentMode);
|
||||||
countryName = _countries.find(call);
|
countryName = _countries.find(call);
|
||||||
|
|
||||||
if (countryName.length() > 0) { // country was found
|
if (countryName.length() > 0) { // country was found
|
||||||
@ -90,10 +91,11 @@ void LogBook::match(/*in*/const QString call,QString grid,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogBook::addAsWorked(const QString call, const QString band, const QString mode, const QString date)
|
void LogBook::addAsWorked(const QString call, const QString grid, const QString band,
|
||||||
|
const QString mode, const QString date)
|
||||||
{
|
{
|
||||||
//qDebug() << "adding " << call << " as worked";
|
//qDebug() << "adding " << call << " as worked";
|
||||||
_log.add(call,band,mode,date);
|
_log.add(call,grid,band,mode,date);
|
||||||
QString countryName = _countries.find(call);
|
QString countryName = _countries.find(call);
|
||||||
if (countryName.length() > 0)
|
if (countryName.length() > 0)
|
||||||
_worked.setAsWorked(countryName);
|
_worked.setAsWorked(countryName);
|
||||||
|
@ -23,7 +23,8 @@ public:
|
|||||||
void match(/*in*/ const QString call, QString grid,
|
void match(/*in*/ const QString call, QString grid,
|
||||||
/*out*/ QString &countryName, bool &callWorkedBefore, bool &countryWorkedBefore,
|
/*out*/ QString &countryName, bool &callWorkedBefore, bool &countryWorkedBefore,
|
||||||
bool &gridWorkedBefore, QString currentBand="") const;
|
bool &gridWorkedBefore, QString currentBand="") const;
|
||||||
void addAsWorked(const QString call, const QString band, const QString mode, const QString date);
|
void addAsWorked(const QString call, const QString grid, const QString band,
|
||||||
|
const QString mode, const QString date);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CountryDat _countries;
|
CountryDat _countries;
|
||||||
|
@ -5184,7 +5184,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call,
|
|||||||
, QString const& my_call, QString const& my_grid, QByteArray const& ADIF)
|
, QString const& my_call, QString const& my_grid, QByteArray const& ADIF)
|
||||||
{
|
{
|
||||||
QString date = QSO_date_on.toString("yyyyMMdd");
|
QString date = QSO_date_on.toString("yyyyMMdd");
|
||||||
m_logBook.addAsWorked (m_hisCall, m_config.bands ()->find (m_freqNominal), m_modeTx, date);
|
m_logBook.addAsWorked (m_hisCall,grid,m_config.bands()->find(m_freqNominal),m_modeTx,date);
|
||||||
|
|
||||||
m_messageClient->qso_logged (QSO_date_off, call, grid, dial_freq, mode, rpt_sent, rpt_received, tx_power, comments, name, QSO_date_on, operator_call, my_call, my_grid);
|
m_messageClient->qso_logged (QSO_date_off, call, grid, dial_freq, mode, rpt_sent, rpt_received, tx_power, comments, name, QSO_date_on, operator_call, my_call, my_grid);
|
||||||
m_messageClient->logged_ADIF (ADIF);
|
m_messageClient->logged_ADIF (ADIF);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user