diff --git a/logbook/adif.cpp b/logbook/adif.cpp index 0912d5f..6a646b0 100644 --- a/logbook/adif.cpp +++ b/logbook/adif.cpp @@ -100,6 +100,7 @@ void ADIF::load() add (extractField (record, "CALL") , extractField (record, "BAND") , extractField (record, "MODE") + , extractField (record, "SUBMODE") , extractField (record, "QSO_DATE")); } inputFile.close (); @@ -107,12 +108,13 @@ 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& band, QString const& mode, QString const& submode, QString const& date) { QSO q; q.call = call; q.band = band; q.mode = mode; + q.submode = submode; q.date = date; if (q.call.size ()) { @@ -121,8 +123,8 @@ void ADIF::add(QString const& call, QString const& band, QString const& mode, QS } } -// return true if in the log same band and mode (where JT65 == JT9) -bool ADIF::match(QString const& call, QString const& band, QString const& mode) const +// return true if in the log same band +bool ADIF::match(QString const& call, QString const& band) const { QList qsos = _data.values(call); if (qsos.size()>0) @@ -134,22 +136,6 @@ bool ADIF::match(QString const& call, QString const& band, QString const& mode) || (band=="") || (q.band=="")) { - if ( - ( - ((mode.compare("JT65",Qt::CaseInsensitive)==0) || - (mode.compare("JT9",Qt::CaseInsensitive)==0) || - (mode.compare("JS8",Qt::CaseInsensitive)==0) || - (mode.compare("FT8",Qt::CaseInsensitive)==0)) - && - ((q.mode.compare("JT65",Qt::CaseInsensitive)==0) || - (q.mode.compare("JT9",Qt::CaseInsensitive)==0) || - (q.mode.compare("JS8",Qt::CaseInsensitive)==0) || - (q.mode.compare("FT8",Qt::CaseInsensitive)==0)) - ) - || (mode.compare(q.mode,Qt::CaseInsensitive)==0) - || (mode=="") - || (q.mode=="") - ) return true; } } @@ -176,7 +162,7 @@ int ADIF::getCount() const return _data.size(); } -QByteArray ADIF::QSOToADIF(QString const& hisCall, QString const& hisGrid, QString const& mode +QByteArray ADIF::QSOToADIF(QString const& hisCall, QString const& hisGrid, QString const& mode, QString const& submode , QString const& rptSent, QString const& rptRcvd, QDateTime const& dateTimeOn , QDateTime const& dateTimeOff, QString const& band, QString const& comments , QString const& name, QString const& strDialFreq, QString const& m_myCall @@ -186,6 +172,9 @@ QByteArray ADIF::QSOToADIF(QString const& hisCall, QString const& hisGrid, QStri t = "" + hisCall; t += " " + hisGrid; t += " " + mode; + if(!submode.isEmpty()){ + t += " " + submode; + } t += " " + rptSent; t += " " + rptRcvd; t += " " + dateTimeOn.date().toString("yyyyMMdd"); diff --git a/logbook/adif.h b/logbook/adif.h index 727ca99..ff45c1d 100644 --- a/logbook/adif.h +++ b/logbook/adif.h @@ -23,15 +23,15 @@ class ADIF public: void init(QString const& filename); void load(); - void add(QString const& call, QString const& band, QString const& mode, QString const& date); - bool match(QString const& call, QString const& band, QString const& mode) const; + void add(QString const& call, QString const& band, QString const& mode, const QString &submode, QString const& date); + bool match(QString const& call, QString const& band) const; QList getCallList() const; int getCount() const; // open ADIF file and append the QSO details. Return true on success bool addQSOToFile(QByteArray const& ADIF_record); - QByteArray QSOToADIF(QString const& hisCall, QString const& hisGrid, QString const& mode, QString const& rptSent + QByteArray QSOToADIF(QString const& hisCall, QString const& hisGrid, QString const& mode, QString const& submode, QString const& rptSent , QString const& rptRcvd, QDateTime const& dateTimeOn, QDateTime const& dateTimeOff , QString const& band, QString const& comments, QString const& name , QString const& strDialFreq, QString const& m_myCall, QString const& m_myGrid @@ -41,7 +41,7 @@ class ADIF private: struct QSO { - QString call,band,mode,date; + QString call,band,mode,submode,date; }; QMultiHash _data; diff --git a/logbook/logbook.cpp b/logbook/logbook.cpp index 036542d..ad62f4f 100644 --- a/logbook/logbook.cpp +++ b/logbook/logbook.cpp @@ -50,8 +50,8 @@ void LogBook::_setAlreadyWorkedFromLog() } } -bool LogBook::hasWorkedBefore(const QString &call, const QString &band, const QString &mode){ - return _log.match(call, band, mode); +bool LogBook::hasWorkedBefore(const QString &call, const QString &band){ + return _log.match(call, band); } void LogBook::match(/*in*/const QString call, @@ -61,9 +61,8 @@ void LogBook::match(/*in*/const QString call, { if (call.length() > 0) { - QString currentMode = ""; // match any mode QString currentBand = ""; // match any band - callWorkedBefore = _log.match(call,currentBand,currentMode); + callWorkedBefore = _log.match(call,currentBand); countryName = _countries.find(call); if (countryName.length() > 0) // country was found @@ -76,9 +75,9 @@ void LogBook::match(/*in*/const QString call, } } -void LogBook::addAsWorked(const QString call, const QString band, const QString mode, const QString date) +void LogBook::addAsWorked(const QString call, const QString band, const QString mode, const QString submode, const QString date) { - _log.add(call,band,mode,date); + _log.add(call,band,mode,submode,date); QString countryName = _countries.find(call); if (countryName.length() > 0) _worked.setAsWorked(countryName); diff --git a/logbook/logbook.h b/logbook/logbook.h index 4e4293c..ce85eba 100644 --- a/logbook/logbook.h +++ b/logbook/logbook.h @@ -20,12 +20,12 @@ class LogBook { public: void init(); - bool hasWorkedBefore(const QString &call, const QString &band, const QString &mode); + bool hasWorkedBefore(const QString &call, const QString &band); void match(/*in*/ const QString call, /*out*/ QString &countryName, bool &callWorkedBefore, bool &countryWorkedBefore) const; - void addAsWorked(const QString call, const QString band, const QString mode, const QString date); + void addAsWorked(const QString call, const QString band, const QString mode, const QString submode, const QString date); private: CountryDat _countries; diff --git a/logqso.cpp b/logqso.cpp index a3d207f..1b7361e 100644 --- a/logqso.cpp +++ b/logqso.cpp @@ -95,12 +95,16 @@ void LogQSO::initLogQSO(QString const& hisCall, QString const& hisGrid, QString void LogQSO::accept() { - QString hisCall,hisGrid,mode,rptSent,rptRcvd,dateOn,dateOff,timeOn,timeOff,band,operator_call; + QString hisCall,hisGrid,mode,submode,rptSent,rptRcvd,dateOn,dateOff,timeOn,timeOff,band,operator_call; QString comments,name; hisCall=ui->call->text().toUpper(); hisGrid=ui->grid->text().toUpper(); - mode=ui->mode->text().toUpper(); + mode = ui->mode->text().toUpper(); + if(mode == "JS8"){ + mode="MFSK"; + submode="JS8"; + } rptSent=ui->sent->text(); rptRcvd=ui->rcvd->text(); m_dateTimeOn = ui->start_date_time->dateTime (); @@ -115,10 +119,10 @@ void LogQSO::accept() //Log this QSO to ADIF file "js8call_log.adi" QString filename = "js8call_log.adi"; // TODO allow user to set ADIF adifile; - auto adifilePath = QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("js8call_log.adi"); + auto adifilePath = QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath (filename); adifile.init(adifilePath); - QByteArray ADIF {adifile.QSOToADIF (hisCall, hisGrid, mode, rptSent, rptRcvd, m_dateTimeOn, m_dateTimeOff, band + QByteArray ADIF {adifile.QSOToADIF (hisCall, hisGrid, mode, submode, rptSent, rptRcvd, m_dateTimeOn, m_dateTimeOff, band , comments, name, strDialFreq, m_myCall, m_myGrid, m_txPower, operator_call)}; if (!adifile.addQSOToFile (ADIF)) { @@ -148,7 +152,7 @@ void LogQSO::accept() m_dateTimeOn.time().toString("hh:mm:ss,") + m_dateTimeOff.date().toString("yyyy-MM-dd,") + m_dateTimeOff.time().toString("hh:mm:ss,") + hisCall + "," + - hisGrid + "," + strDialFreq + "," + mode + + hisGrid + "," + strDialFreq + "," + (mode == "MFSK" ? "JS8" : mode) + "," + rptSent + "," + rptRcvd + "," + m_txPower + "," + comments + "," + name; QTextStream out(&f); @@ -157,7 +161,7 @@ void LogQSO::accept() } //Clean up and finish logging - Q_EMIT acceptQSO (m_dateTimeOff, hisCall, hisGrid, m_dialFreq, mode, rptSent, rptRcvd, m_txPower, comments, name,m_dateTimeOn, operator_call, m_myCall, m_myGrid, ADIF); + Q_EMIT acceptQSO (m_dateTimeOff, hisCall, hisGrid, m_dialFreq, mode, submode, rptSent, rptRcvd, m_txPower, comments, name,m_dateTimeOn, operator_call, m_myCall, m_myGrid, ADIF); QDialog::accept(); } diff --git a/logqso.h b/logqso.h index c9811c5..cfda3d4 100644 --- a/logqso.h +++ b/logqso.h @@ -40,7 +40,7 @@ public slots: signals: void acceptQSO (QDateTime const& QSO_date_off, QString const& call, QString const& grid - , Radio::Frequency dial_freq, QString const& mode + , Radio::Frequency dial_freq, QString const& mode, QString const& submode , QString const& rpt_sent, QString const& rpt_received , QString const& tx_power, QString const& comments , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call diff --git a/logqso.ui b/logqso.ui index 97791ed..0a1dae4 100644 --- a/logqso.ui +++ b/logqso.ui @@ -152,6 +152,9 @@ 16777215 + + true + diff --git a/mainwindow.cpp b/mainwindow.cpp index 7d03694..d69219c 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -6032,14 +6032,14 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button } void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, QString const& grid - , Frequency dial_freq, QString const& mode + , Frequency dial_freq, QString const& mode, QString const &submode , QString const& rpt_sent, QString const& rpt_received , QString const& tx_power, QString const& comments , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call , QString const& my_call, QString const& my_grid, QByteArray const& ADIF) { QString date = QSO_date_on.toString("yyyyMMdd"); - m_logBook.addAsWorked (m_hisCall, m_config.bands ()->find (m_freqNominal), m_modeTx == "FT8" ? "JS8" : m_modeTx, date); + m_logBook.addAsWorked (m_hisCall, m_config.bands ()->find (m_freqNominal), mode, submode, date); #if 0 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); @@ -6053,6 +6053,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, {"GRID", QVariant(grid)}, {"FREQ", QVariant(dial_freq)}, {"MODE", QVariant(mode)}, + {"SUBMODE", QVariant(submode)}, {"RPT.SENT", QVariant(rpt_sent)}, {"RPT.RECV", QVariant(rpt_received)}, {"NAME", QVariant(name)}, @@ -10080,7 +10081,7 @@ void MainWindow::displayCallActivity() { #endif QString flag; - if(m_logBook.hasWorkedBefore(d.call, "", m_modeTx == "FT8" ? "JS8" : m_modeTx)){ + if(m_logBook.hasWorkedBefore(d.call, "")){ // unicode checkmark flag = "\u2713"; } diff --git a/mainwindow.h b/mainwindow.h index db927e2..cf05288 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -332,7 +332,7 @@ private slots: void on_pbR2T_clicked(); void on_pbT2R_clicked(); void acceptQSO (QDateTime const&, QString const& call, QString const& grid - , Frequency dial_freq, QString const& mode + , Frequency dial_freq, QString const& mode, QString const& submode , QString const& rpt_sent, QString const& rpt_received , QString const& tx_power, QString const& comments , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call