From d1bd82af26db97109d235367478c1ab1cd540505 Mon Sep 17 00:00:00 2001 From: Jordan Sherer Date: Thu, 13 Jun 2019 09:35:53 -0400 Subject: [PATCH] Update to Call Activity to pull grid from log if the station has not transmitted their grid yet --- logbook/adif.cpp | 4 +++- logbook/adif.h | 4 ++-- logbook/logbook.cpp | 6 ++++-- logbook/logbook.h | 6 +++--- mainwindow.cpp | 13 ++++++++++--- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/logbook/adif.cpp b/logbook/adif.cpp index 1054c96..824d072 100644 --- a/logbook/adif.cpp +++ b/logbook/adif.cpp @@ -258,6 +258,7 @@ void ADIF::load() , extractField (record, "BAND") , extractField (record, "MODE") , extractField (record, "SUBMODE") + , extractField (record, "GRIDSQUARE") , extractField (record, "QSO_DATE") , extractField (record, "NAME") , extractField (record, "COMMENT") @@ -268,13 +269,14 @@ void ADIF::load() } -void ADIF::add(QString const& call, QString const& band, QString const& mode, QString const& submode, QString const& date, QString const& name, QString const& comment) +void ADIF::add(QString const& call, QString const& band, QString const& mode, QString const& submode, QString const &grid, QString const& date, QString const& name, QString const& comment) { QSO q; q.call = call; q.band = band; q.mode = mode; q.submode = submode; + q.grid = grid; q.date = date; q.name = name; q.comment = comment; diff --git a/logbook/adif.h b/logbook/adif.h index 64a5a3a..04137fe 100644 --- a/logbook/adif.h +++ b/logbook/adif.h @@ -30,7 +30,7 @@ class ADIF void init(QString const& filename); void load(); - void add(QString const& call, QString const& band, QString const& mode, const QString &submode, QString const& date, const QString &name, const QString &comment); + void add(QString const& call, QString const& band, QString const& mode, const QString &submode, QString const& grid, QString const& date, const QString &name, const QString &comment); bool match(QString const& call, QString const& band) const; QList find(QString const& call) const; QList getCallList() const; @@ -48,7 +48,7 @@ class ADIF struct QSO { - QString call,band,mode,submode,date,name,comment; + QString call,band,mode,submode,grid,date,name,comment; }; private: diff --git a/logbook/logbook.cpp b/logbook/logbook.cpp index f65842d..3d4c572 100644 --- a/logbook/logbook.cpp +++ b/logbook/logbook.cpp @@ -79,6 +79,7 @@ bool LogBook::findCallDetails( /*in*/ const QString call, /*out*/ + QString &grid, QString &date, QString &name, QString &comment) const @@ -93,6 +94,7 @@ bool LogBook::findCallDetails( } foreach(auto qso, qsos){ + if(grid.isEmpty() && !qso.grid.isEmpty()) grid = qso.grid; if(date.isEmpty() && !qso.date.isEmpty()) date = qso.date; if(name.isEmpty() && !qso.name.isEmpty()) name = qso.name; if(comment.isEmpty() && !qso.comment.isEmpty()) comment = qso.comment; @@ -101,9 +103,9 @@ bool LogBook::findCallDetails( return true; } -void LogBook::addAsWorked(const QString call, const QString band, const QString mode, const QString submode, const QString date, const QString name, const QString comment) +void LogBook::addAsWorked(const QString call, const QString band, const QString mode, const QString submode, const QString grid, const QString date, const QString name, const QString comment) { - _log.add(call,band,mode,submode,date,name,comment); + _log.add(call,band,mode,submode,grid,date,name,comment); QString countryName = _countries.find(call); if (countryName.length() > 0) _worked.setAsWorked(countryName); diff --git a/logbook/logbook.h b/logbook/logbook.h index 02ba14c..be3b586 100644 --- a/logbook/logbook.h +++ b/logbook/logbook.h @@ -26,14 +26,14 @@ public: /*out*/ QString &countryName, bool &callWorkedBefore, bool &countryWorkedBefore) const; - bool findCallDetails( - /*in*/ + bool findCallDetails(/*in*/ const QString call, /*out*/ + QString &grid, QString &date, QString &name, QString &comment) const; - void addAsWorked(const QString call, const QString band, const QString mode, const QString submode, const QString date, const QString name, const QString comment); + void addAsWorked(const QString call, const QString band, const QString mode, const QString submode, const QString grid, const QString date, const QString name, const QString comment); private: CountryDat _countries; diff --git a/mainwindow.cpp b/mainwindow.cpp index a9fed69..7c732a3 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -6715,7 +6715,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, , QString const& my_call, QString const& my_grid, QByteArray const& ADIF, QMap const &additionalFields) { QString date = QSO_date_on.toString("yyyyMMdd"); - m_logBook.addAsWorked (m_hisCall, m_config.bands ()->find (m_freqNominal), mode, submode, date, name, comments); + m_logBook.addAsWorked (m_hisCall, m_config.bands ()->find (m_freqNominal), mode, submode, grid, date, name, comments); // Log to JS8Call API if(m_config.udpEnabled()){ @@ -11811,12 +11811,19 @@ void MainWindow::displayCallActivity() { workedBeforeItem->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); ui->tableWidgetCalls->setItem(row, col++, workedBeforeItem); + QString logDetailGrid; QString logDetailDate; QString logDetailName; QString logDetailComment; - if(showColumn("call", "log") || showColumn("call", "logName") || showColumn("call", "logComment")){ - m_logBook.findCallDetails(d.call, logDetailDate, logDetailName, logDetailComment); + if(showColumn("call", "grid") || showColumn("call", "log") || showColumn("call", "logName") || showColumn("call", "logComment")){ + m_logBook.findCallDetails(d.call, logDetailGrid, logDetailDate, logDetailName, logDetailComment); + } + + if(gridItem->text().isEmpty() || !logDetailGrid.isEmpty()){ + gridItem->setText(logDetailGrid.trimmed().left(4)); + gridItem->setToolTip(logDetailGrid.trimmed()); + distanceItem->setText(calculateDistance(logDetailGrid.trimmed())); } if(!logDetailDate.isEmpty()){