From f1f618bbcdbe06851e620e0a672ae9b7ac2f95a6 Mon Sep 17 00:00:00 2001 From: Jordan Sherer Date: Tue, 30 Oct 2018 20:50:31 -0400 Subject: [PATCH] Added worked before status --- logbook/adif.cpp | 2 ++ logbook/logbook.cpp | 23 +++++------------------ logbook/logbook.h | 1 + mainwindow.cpp | 42 +++++++++++++++++++++++++----------------- mainwindow.ui | 8 ++++++++ 5 files changed, 41 insertions(+), 35 deletions(-) diff --git a/logbook/adif.cpp b/logbook/adif.cpp index a1be7de..0912d5f 100644 --- a/logbook/adif.cpp +++ b/logbook/adif.cpp @@ -138,10 +138,12 @@ bool ADIF::match(QString const& call, QString const& band, QString const& mode) ( ((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) diff --git a/logbook/logbook.cpp b/logbook/logbook.cpp index f505a60..036542d 100644 --- a/logbook/logbook.cpp +++ b/logbook/logbook.cpp @@ -33,19 +33,6 @@ void LogBook::init() _log.load(); _setAlreadyWorkedFromLog(); - - /* - int QSOcount = _log.getCount(); - int count = _worked.getWorkedCount(); - qDebug() << QSOcount << "QSOs and" << count << "countries worked in file" << logFilename; - */ - - // QString call = "ok1ct"; - // QString countryName; - // bool callWorkedBefore,countryWorkedBefore; - // match(/*in*/call, /*out*/ countryName,callWorkedBefore,countryWorkedBefore); - // qDebug() << countryName; - } @@ -59,11 +46,14 @@ void LogBook::_setAlreadyWorkedFromLog() if (countryName.length() > 0) { _worked.setAsWorked(countryName); - //qDebug() << countryName << " worked " << c; } } } +bool LogBook::hasWorkedBefore(const QString &call, const QString &band, const QString &mode){ + return _log.match(call, band, mode); +} + void LogBook::match(/*in*/const QString call, /*out*/ QString &countryName, bool &callWorkedBefore, @@ -71,11 +61,10 @@ void LogBook::match(/*in*/const QString call, { if (call.length() > 0) { - QString currentMode = "JT9"; // JT65 == JT9 in ADIF::match() + QString currentMode = ""; // match any mode QString currentBand = ""; // match any band callWorkedBefore = _log.match(call,currentBand,currentMode); countryName = _countries.find(call); -// qDebug() << "B" << countryName; if (countryName.length() > 0) // country was found countryWorkedBefore = _worked.getHasWorked(countryName); @@ -85,12 +74,10 @@ void LogBook::match(/*in*/const QString call, countryWorkedBefore = false; } } - //qDebug() << "Logbook:" << call << ":" << countryName << "Cty B4:" << countryWorkedBefore << "call B4:" << callWorkedBefore; } void LogBook::addAsWorked(const QString call, const QString band, const QString mode, const QString date) { - //qDebug() << "adding " << call << " as worked"; _log.add(call,band,mode,date); QString countryName = _countries.find(call); if (countryName.length() > 0) diff --git a/logbook/logbook.h b/logbook/logbook.h index 4b80974..4e4293c 100644 --- a/logbook/logbook.h +++ b/logbook/logbook.h @@ -20,6 +20,7 @@ class LogBook { public: void init(); + bool hasWorkedBefore(const QString &call, const QString &band, const QString &mode); void match(/*in*/ const QString call, /*out*/ QString &countryName, bool &callWorkedBefore, diff --git a/mainwindow.cpp b/mainwindow.cpp index 0334876..6e3107e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -5686,7 +5686,7 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button if(m_callActivity.contains(call)){ grid = m_callActivity[call].grid; } - m_logDlg->initLogQSO (call, grid, m_modeTx == "FT8" ? "JS8" : m_modeTx, m_rptSent, m_rptRcvd, + m_logDlg->initLogQSO (call.trimmed(), grid.trimmed(), m_modeTx == "FT8" ? "JS8" : m_modeTx, m_rptSent, m_rptRcvd, m_dateTimeQSOOn, dateTimeQSOOff, m_freqNominal + ui->TxFreqSpinBox->value(), m_config.my_callsign(), m_config.my_grid(), m_config.log_as_DATA(), m_config.report_in_comments(), @@ -5701,7 +5701,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& 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, date); + m_logBook.addAsWorked (m_hisCall, m_config.bands ()->find (m_freqNominal), m_modeTx == "FT8" ? "JS8" : m_modeTx, 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); @@ -6119,16 +6119,9 @@ void MainWindow::vhfWarning() m_bVHFwarned=true; } -void MainWindow::enable_DXCC_entity (bool on) +void MainWindow::enable_DXCC_entity (bool /*on*/) { - if (on and !m_mode.startsWith ("WSPR") and m_mode!="Echo") { - m_logBook.init(); // re-read the log and cty.dat files -// ui->gridLayout->setColumnStretch(0,55); // adjust proportions of text displays -// ui->gridLayout->setColumnStretch(1,45); - } else { -// ui->gridLayout->setColumnStretch(0,0); -// ui->gridLayout->setColumnStretch(1,0); - } + m_logBook.init(); // re-read the log and cty.dat files updateGeometry (); } @@ -6345,6 +6338,7 @@ void MainWindow::buildShowColumnsMenu(QMenu *menu, QString tableKey){ }; if(tableKey == "call"){ + columnKeys.prepend({"Worked Before Flag", "flag"}); columnKeys.prepend({"Callsign", "callsign"}); columnKeys.append({ {"Grid Locator", "grid"}, @@ -9509,11 +9503,23 @@ void MainWindow::displayCallActivity() { #if SHOW_THROUGH_CALLS QString displayCall = d.through.isEmpty() ? d.call : QString("%1>%2").arg(d.through).arg(d.call); #else + // unicode star QString displayCall = d.ackTimestamp.isValid() ? QString("\u2605 %1").arg(d.call) : d.call; #endif + + QString flag; + if(m_logBook.hasWorkedBefore(d.call, "", m_modeTx == "FT8" ? "JS8" : m_modeTx)){ + // unicode checkmark + flag = "\u2713"; + } + auto displayItem = new QTableWidgetItem(displayCall); displayItem->setData(Qt::UserRole, QVariant((d.call))); ui->tableWidgetCalls->setItem(row, col++, displayItem); + + auto flagItem = new QTableWidgetItem(flag); + flagItem->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); + ui->tableWidgetCalls->setItem(row, col++, flagItem); ui->tableWidgetCalls->setItem(row, col++, new QTableWidgetItem(QString("(%1)").arg(since(d.utcTimestamp)))); ui->tableWidgetCalls->setItem(row, col++, new QTableWidgetItem(QString("%1").arg(Varicode::formatSNR(d.snr)))); ui->tableWidgetCalls->setItem(row, col++, new QTableWidgetItem(QString("%1").arg(d.freq))); @@ -9556,12 +9562,13 @@ void MainWindow::displayCallActivity() { // Hide columns ui->tableWidgetCalls->setColumnHidden(0, !showColumn("call", "callsign")); - ui->tableWidgetCalls->setColumnHidden(1, !showColumn("call", "timestamp")); - ui->tableWidgetCalls->setColumnHidden(2, !showColumn("call", "offset")); - ui->tableWidgetCalls->setColumnHidden(3, !showColumn("call", "snr")); - ui->tableWidgetCalls->setColumnHidden(4, !showColumn("call", "tdrift")); - ui->tableWidgetCalls->setColumnHidden(5, !showColumn("call", "grid")); - ui->tableWidgetCalls->setColumnHidden(6, !showColumn("call", "distance")); + ui->tableWidgetCalls->setColumnHidden(1, !showColumn("call", "flag")); + ui->tableWidgetCalls->setColumnHidden(2, !showColumn("call", "timestamp")); + ui->tableWidgetCalls->setColumnHidden(3, !showColumn("call", "offset")); + ui->tableWidgetCalls->setColumnHidden(4, !showColumn("call", "snr")); + ui->tableWidgetCalls->setColumnHidden(5, !showColumn("call", "tdrift")); + ui->tableWidgetCalls->setColumnHidden(6, !showColumn("call", "grid")); + ui->tableWidgetCalls->setColumnHidden(7, !showColumn("call", "distance")); // Resize the table columns ui->tableWidgetCalls->resizeColumnToContents(0); @@ -9570,6 +9577,7 @@ void MainWindow::displayCallActivity() { ui->tableWidgetCalls->resizeColumnToContents(3); ui->tableWidgetCalls->resizeColumnToContents(4); ui->tableWidgetCalls->resizeColumnToContents(5); + ui->tableWidgetCalls->resizeColumnToContents(6); // Reset the scroll position ui->tableWidgetCalls->verticalScrollBar()->setValue(currentScrollPos); diff --git a/mainwindow.ui b/mainwindow.ui index 7bdf851..d4a3e53 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -1420,6 +1420,14 @@ QTextEdit[transmitting="true"] { Callsign + + + + + + AlignCenter + + Age