From 6cbc91b653564b142d3430b8ac88dae03c330e38 Mon Sep 17 00:00:00 2001 From: phl0 Date: Thu, 25 Jun 2020 19:58:47 +0200 Subject: [PATCH 1/3] Include prop mode in ADIF and UDP messages --- Network/MessageClient.cpp | 6 +- Network/MessageClient.hpp | 3 +- logbook/logbook.cpp | 3 +- logbook/logbook.h | 2 +- widgets/logqso.cpp | 172 +++++++++++++++++++++++++++++++++++++- widgets/logqso.h | 3 +- widgets/logqso.ui | 123 ++++++++++++++++++++++++++- widgets/mainwindow.cpp | 4 +- widgets/mainwindow.h | 2 +- 9 files changed, 304 insertions(+), 14 deletions(-) diff --git a/Network/MessageClient.cpp b/Network/MessageClient.cpp index dae238b23..a71beee6e 100644 --- a/Network/MessageClient.cpp +++ b/Network/MessageClient.cpp @@ -568,7 +568,7 @@ void MessageClient::qso_logged (QDateTime time_off, QString const& dx_call, QStr , QString const& comments, QString const& name, QDateTime time_on , QString const& operator_call, QString const& my_call , QString const& my_grid, QString const& exchange_sent - , QString const& exchange_rcvd) + , QString const& exchange_rcvd, QString const& propmode) { if (m_->server_port_ && !m_->server_string_.isEmpty ()) { @@ -577,8 +577,8 @@ void MessageClient::qso_logged (QDateTime time_off, QString const& dx_call, QStr out << time_off << dx_call.toUtf8 () << dx_grid.toUtf8 () << dial_frequency << mode.toUtf8 () << report_sent.toUtf8 () << report_received.toUtf8 () << tx_power.toUtf8 () << comments.toUtf8 () << name.toUtf8 () << time_on << operator_call.toUtf8 () << my_call.toUtf8 () << my_grid.toUtf8 () - << exchange_sent.toUtf8 () << exchange_rcvd.toUtf8 (); - TRACE_UDP ("time off:" << time_off << "DX:" << dx_call << "DX grid:" << dx_grid << "dial:" << dial_frequency << "mode:" << mode << "sent:" << report_sent << "rcvd:" << report_received << "pwr:" << tx_power << "comments:" << comments << "name:" << name << "time on:" << time_on << "op:" << operator_call << "DE:" << my_call << "DE grid:" << my_grid << "exch sent:" << exchange_sent << "exch rcvd:" << exchange_rcvd); + << exchange_sent.toUtf8 () << exchange_rcvd.toUtf8 () << propmode.toUtf8 (); + TRACE_UDP ("time off:" << time_off << "DX:" << dx_call << "DX grid:" << dx_grid << "dial:" << dial_frequency << "mode:" << mode << "sent:" << report_sent << "rcvd:" << report_received << "pwr:" << tx_power << "comments:" << comments << "name:" << name << "time on:" << time_on << "op:" << operator_call << "DE:" << my_call << "DE grid:" << my_grid << "exch sent:" << exchange_sent << "exch rcvd:" << exchange_rcvd << "prop_mode:" << propmode); m_->send_message (out, message); } } diff --git a/Network/MessageClient.hpp b/Network/MessageClient.hpp index 20f39b019..797149fc6 100644 --- a/Network/MessageClient.hpp +++ b/Network/MessageClient.hpp @@ -69,7 +69,8 @@ public: , QString const& report_received, QString const& tx_power, QString const& comments , QString const& name, QDateTime time_on, QString const& operator_call , QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd); + , QString const& exchange_sent, QString const& exchange_rcvd + , QString const& propmode); // ADIF_record argument should be valid ADIF excluding any end // of record marker diff --git a/logbook/logbook.cpp b/logbook/logbook.cpp index 316901f9d..327585110 100644 --- a/logbook/logbook.cpp +++ b/logbook/logbook.cpp @@ -74,7 +74,7 @@ QByteArray LogBook::QSOToADIF (QString const& hisCall, QString const& hisGrid, Q QDateTime const& dateTimeOff, QString const& band, QString const& comments, QString const& name, QString const& strDialFreq, QString const& myCall, QString const& myGrid, QString const& txPower, QString const& operator_call, - QString const& xSent, QString const& xRcvd) + QString const& xSent, QString const& xRcvd, QString const& propmode) { QString t; t = "" + hisCall; @@ -101,6 +101,7 @@ QByteArray LogBook::QSOToADIF (QString const& hisCall, QString const& hisGrid, Q if(comments!="") t += " " + comments; if(name!="") t += " " + name; if(operator_call!="") t+=" " + operator_call; + if(propmode!="") t += " " + propmode; if (xSent.size ()) { auto words = xSent.split (' ' diff --git a/logbook/logbook.h b/logbook/logbook.h index 858bb64d8..de7ffae10 100644 --- a/logbook/logbook.h +++ b/logbook/logbook.h @@ -44,7 +44,7 @@ public: QDateTime const& dateTimeOff, QString const& band, QString const& comments, QString const& name, QString const& strDialFreq, QString const& myCall, QString const& m_myGrid, QString const& m_txPower, QString const& operator_call, - QString const& xSent, QString const& xRcvd); + QString const& xSent, QString const& xRcvd, QString const& propmode); Q_SIGNAL void finished_loading (int worked_before_record_count, QString const& error) const; diff --git a/widgets/logqso.cpp b/widgets/logqso.cpp index 187d2618c..58dcd04f4 100644 --- a/widgets/logqso.cpp +++ b/widgets/logqso.cpp @@ -39,8 +39,10 @@ void LogQSO::loadSettings () restoreGeometry (m_settings->value ("geometry", saveGeometry ()).toByteArray ()); ui->cbTxPower->setChecked (m_settings->value ("SaveTxPower", false).toBool ()); ui->cbComments->setChecked (m_settings->value ("SaveComments", false).toBool ()); + ui->cbPropMode->setChecked (m_settings->value ("SavePropMode", false).toBool ()); m_txPower = m_settings->value ("TxPower", "").toString (); m_comments = m_settings->value ("LogComments", "").toString(); + m_propmode = m_settings->value ("PropMode", "").toString(); m_settings->endGroup (); } @@ -50,8 +52,68 @@ void LogQSO::storeSettings () const m_settings->setValue ("geometry", saveGeometry ()); m_settings->setValue ("SaveTxPower", ui->cbTxPower->isChecked ()); m_settings->setValue ("SaveComments", ui->cbComments->isChecked ()); + m_settings->setValue ("SavePropMode", ui->cbPropMode->isChecked ()); m_settings->setValue ("TxPower", m_txPower); m_settings->setValue ("LogComments", m_comments); + switch (ui->comboBoxPropMode->currentIndex()) { + case 0: + m_settings->setValue ("PropMode", ""); + break; + case 1: + m_settings->setValue ("PropMode", "AS"); + break; + case 2: + m_settings->setValue ("PropMode", "AUE"); + break; + case 3: + m_settings->setValue ("PropMode", "AUR"); + break; + case 4: + m_settings->setValue ("PropMode", "BS"); + break; + case 5: + m_settings->setValue ("PropMode", "ECH"); + break; + case 6: + m_settings->setValue ("PropMode", "EME"); + break; + case 7: + m_settings->setValue ("PropMode", "ES"); + break; + case 8: + m_settings->setValue ("PropMode", "F2"); + break; + case 9: + m_settings->setValue ("PropMode", "FAI"); + break; + case 10: + m_settings->setValue ("PropMode", "INTERNET"); + break; + case 11: + m_settings->setValue ("PropMode", "ION"); + break; + case 12: + m_settings->setValue ("PropMode", "IRL"); + break; + case 13: + m_settings->setValue ("PropMode", "MS"); + break; + case 14: + m_settings->setValue ("PropMode", "RPT"); + break; + case 15: + m_settings->setValue ("PropMode", "RS"); + break; + case 16: + m_settings->setValue ("PropMode", "SAT"); + break; + case 17: + m_settings->setValue ("PropMode", "TEP"); + break; + case 18: + m_settings->setValue ("PropMode", "TR"); + break; + } m_settings->endGroup (); } @@ -80,6 +142,51 @@ void LogQSO::initLogQSO(QString const& hisCall, QString const& hisGrid, QString { ui->comments->clear (); } + if (ui->cbPropMode->isChecked ()) + { + if (m_propmode == "") + ui->comboBoxPropMode->setCurrentIndex(0); + if (m_propmode == "AS") + ui->comboBoxPropMode->setCurrentIndex(1); + if (m_propmode == "AUE") + ui->comboBoxPropMode->setCurrentIndex(2); + if (m_propmode == "AUR") + ui->comboBoxPropMode->setCurrentIndex(3); + if (m_propmode == "BS") + ui->comboBoxPropMode->setCurrentIndex(4); + if (m_propmode == "ECH") + ui->comboBoxPropMode->setCurrentIndex(5); + if (m_propmode == "EME") + ui->comboBoxPropMode->setCurrentIndex(6); + if (m_propmode == "ES") + ui->comboBoxPropMode->setCurrentIndex(7); + if (m_propmode == "F2") + ui->comboBoxPropMode->setCurrentIndex(8); + if (m_propmode == "FAI") + ui->comboBoxPropMode->setCurrentIndex(9); + if (m_propmode == "INTERNET") + ui->comboBoxPropMode->setCurrentIndex(10); + if (m_propmode == "ION") + ui->comboBoxPropMode->setCurrentIndex(11); + if (m_propmode == "IRL") + ui->comboBoxPropMode->setCurrentIndex(12); + if (m_propmode == "MS") + ui->comboBoxPropMode->setCurrentIndex(13); + if (m_propmode == "RPT") + ui->comboBoxPropMode->setCurrentIndex(14); + if (m_propmode == "RS") + ui->comboBoxPropMode->setCurrentIndex(15); + if (m_propmode == "SAT") + ui->comboBoxPropMode->setCurrentIndex(16); + if (m_propmode == "TEP") + ui->comboBoxPropMode->setCurrentIndex(17); + if (m_propmode == "TR") + ui->comboBoxPropMode->setCurrentIndex(18); + } + else + { + ui->comboBoxPropMode->setCurrentIndex(0); + } if (m_config->report_in_comments()) { auto t=mode; if(rptSent!="") t+=" Sent: " + rptSent; @@ -133,6 +240,65 @@ void LogQSO::accept() auto operator_call = ui->loggedOperator->text (); auto xsent = ui->exchSent->text (); auto xrcvd = ui->exchRcvd->text (); + switch (ui->comboBoxPropMode->currentIndex()) { + case 0: + m_propmode = ""; + break; + case 1: + m_propmode = "AS"; + break; + case 2: + m_propmode = "AUE"; + break; + case 3: + m_propmode = "AUR"; + break; + case 4: + m_propmode = "BS"; + break; + case 5: + m_propmode = "ECH"; + break; + case 6: + m_propmode = "EME"; + break; + case 7: + m_propmode = "ES"; + break; + case 8: + m_propmode = "F2"; + break; + case 9: + m_propmode = "FAI"; + break; + case 10: + m_propmode = "INTERNET"; + break; + case 11: + m_propmode = "ION"; + break; + case 12: + m_propmode = "IRL"; + break; + case 13: + m_propmode = "MS"; + break; + case 14: + m_propmode = "RPT"; + break; + case 15: + m_propmode = "RS"; + break; + case 16: + m_propmode = "SAT"; + break; + case 17: + m_propmode = "TEP"; + break; + case 18: + m_propmode = "TR"; + break; + } using SpOp = Configuration::SpecialOperatingActivity; auto special_op = m_config->special_op_id (); @@ -191,7 +357,7 @@ void LogQSO::accept() dateTimeOff.time().toString("hh:mm:ss,") + hisCall + "," + hisGrid + "," + strDialFreq + "," + mode + "," + rptSent + "," + rptRcvd + "," + m_txPower + - "," + m_comments + "," + name; + "," + m_comments + "," + name + "," + m_propmode; QTextStream out(&f); out << logEntry << #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) @@ -220,6 +386,7 @@ void LogQSO::accept() , m_myGrid , xsent , xrcvd + , m_propmode , m_log->QSOToADIF (hisCall , hisGrid , mode @@ -236,7 +403,8 @@ void LogQSO::accept() , m_txPower , operator_call , xsent - , xrcvd)); + , xrcvd + , m_propmode)); QDialog::accept(); } diff --git a/widgets/logqso.h b/widgets/logqso.h index 739a601f7..70674bad8 100644 --- a/widgets/logqso.h +++ b/widgets/logqso.h @@ -42,7 +42,7 @@ signals: , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call , QString const& my_call, QString const& my_grid , QString const& exchange_sent, QString const& exchange_rcvd - , QByteArray const& ADIF); + , QString const& propmode, QByteArray const& ADIF); protected: void hideEvent (QHideEvent *); @@ -57,6 +57,7 @@ private: LogBook * m_log; QString m_txPower; QString m_comments; + QString m_propmode; Radio::Frequency m_dialFreq; QString m_myCall; QString m_myGrid; diff --git a/widgets/logqso.ui b/widgets/logqso.ui index a03a3028a..f1b198cec 100644 --- a/widgets/logqso.ui +++ b/widgets/logqso.ui @@ -6,8 +6,8 @@ 0 0 - 377 - 287 + 437 + 351 @@ -447,6 +447,123 @@ + + + + + + Prop Mode + + + + + + + + + + + + + AS | Aircraft scatter + + + + + AUE | Aurora-E + + + + + AUR | Aurora + + + + + BS | Back scatter + + + + + ECH | Echolink + + + + + EME | Earth-moon-earth + + + + + ES | Sporadic E + + + + + F2 | F2 Reflection + + + + + FAI | Field aligned irregularities + + + + + INTERNET | Internet-assisted + + + + + ION | Ionoscatter + + + + + IRL | IRLP + + + + + MS | Meteor scatter + + + + + RPT | Terrestrial or atmospheric repeater or transponder + + + + + RS | Rain scatter + + + + + SAT | Satellite + + + + + TEP | Trans-equatorial + + + + + TR | Troposheric ducting + + + + + + + + Retain + + + + + @@ -486,6 +603,8 @@ cbTxPower comments cbComments + cbPropMode + comboBoxPropMode diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 0ed391faa..3ac19c349 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -5700,7 +5700,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call , QString const& my_call, QString const& my_grid , QString const& exchange_sent, QString const& exchange_rcvd - , QByteArray const& ADIF) + , QString const& propmode, QByteArray const& ADIF) { QString date = QSO_date_on.toString("yyyyMMdd"); if (!m_logBook.add (call, grid, m_config.bands()->find(dial_freq), mode, ADIF)) @@ -5711,7 +5711,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, 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 - , exchange_sent, exchange_rcvd); + , exchange_sent, exchange_rcvd, propmode); m_messageClient->logged_ADIF (ADIF); // Log to N1MM Logger diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 6da871b37..f9897e32e 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -240,7 +240,7 @@ private slots: , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call , QString const& my_call, QString const& my_grid , QString const& exchange_sent, QString const& exchange_rcvd - , QByteArray const& ADIF); + , QString const& propmode, QByteArray const& ADIF); void on_bandComboBox_currentIndexChanged (int index); void on_bandComboBox_activated (int index); void on_readFreq_clicked(); From 2a31d12d39679e1c5facde338e2f73afb8c2dccd Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 27 Jun 2020 00:17:03 +0200 Subject: [PATCH 2/3] Adapt brach to changes proposed by G4WJS --- UDPExamples/MessageAggregatorMainWindow.cpp | 9 +- UDPExamples/MessageAggregatorMainWindow.hpp | 2 +- UDPExamples/MessageServer.cpp | 5 +- UDPExamples/MessageServer.hpp | 2 +- UDPExamples/UDPDaemon.cpp | 9 +- widgets/logqso.cpp | 217 +++++--------------- widgets/logqso.h | 1 - widgets/logqso.ui | 152 +++++--------- 8 files changed, 118 insertions(+), 279 deletions(-) diff --git a/UDPExamples/MessageAggregatorMainWindow.cpp b/UDPExamples/MessageAggregatorMainWindow.cpp index 6245918a9..ba034b0e2 100644 --- a/UDPExamples/MessageAggregatorMainWindow.cpp +++ b/UDPExamples/MessageAggregatorMainWindow.cpp @@ -25,8 +25,9 @@ namespace QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Operator"), QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "My Call"), QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "My Grid"), - QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Exchange Sent"), - QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Exchange Rcvd"), + QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Exch Sent"), + QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Exch Rcvd"), + QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Prop"), QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Comments"), }; } @@ -212,7 +213,8 @@ void MessageAggregatorMainWindow::log_qso (QString const& /*id*/, QDateTime time , QString const& tx_power, QString const& comments , QString const& name, QDateTime time_on, QString const& operator_call , QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd) + , QString const& exchange_sent, QString const& exchange_rcvd + , QString const& prop_mode) { QList row; row << new QStandardItem {time_on.toString ("dd-MMM-yyyy hh:mm:ss")} @@ -230,6 +232,7 @@ void MessageAggregatorMainWindow::log_qso (QString const& /*id*/, QDateTime time << new QStandardItem {my_grid} << new QStandardItem {exchange_sent} << new QStandardItem {exchange_rcvd} + << new QStandardItem {prop_mode} << new QStandardItem {comments}; log_->appendRow (row); log_table_view_->resizeColumnsToContents (); diff --git a/UDPExamples/MessageAggregatorMainWindow.hpp b/UDPExamples/MessageAggregatorMainWindow.hpp index 29f762d3d..045f4e945 100644 --- a/UDPExamples/MessageAggregatorMainWindow.hpp +++ b/UDPExamples/MessageAggregatorMainWindow.hpp @@ -33,7 +33,7 @@ public: , QString const& report_received, QString const& tx_power, QString const& comments , QString const& name, QDateTime time_on, QString const& operator_call , QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd); + , QString const& exchange_sent, QString const& exchange_rcvd, QString const& prop_mode); private: void add_client (QString const& id, QString const& version, QString const& revision); diff --git a/UDPExamples/MessageServer.cpp b/UDPExamples/MessageServer.cpp index 59907d521..42a9689ef 100644 --- a/UDPExamples/MessageServer.cpp +++ b/UDPExamples/MessageServer.cpp @@ -345,9 +345,10 @@ void MessageServer::impl::parse_message (QHostAddress const& sender, port_type s QByteArray my_grid; QByteArray exchange_sent; QByteArray exchange_rcvd; + QByteArray prop_mode; in >> time_off >> dx_call >> dx_grid >> dial_frequency >> mode >> report_sent >> report_received >> tx_power >> comments >> name >> time_on >> operator_call >> my_call >> my_grid - >> exchange_sent >> exchange_rcvd; + >> exchange_sent >> exchange_rcvd >> prop_mode; if (check_status (in) != Fail) { Q_EMIT self_->qso_logged (id, time_off, QString::fromUtf8 (dx_call), QString::fromUtf8 (dx_grid) @@ -356,7 +357,7 @@ void MessageServer::impl::parse_message (QHostAddress const& sender, port_type s , QString::fromUtf8 (comments), QString::fromUtf8 (name), time_on , QString::fromUtf8 (operator_call), QString::fromUtf8 (my_call) , QString::fromUtf8 (my_grid), QString::fromUtf8 (exchange_sent) - , QString::fromUtf8 (exchange_rcvd)); + , QString::fromUtf8 (exchange_rcvd), QString::fromUtf8 (prop_mode)); } } break; diff --git a/UDPExamples/MessageServer.hpp b/UDPExamples/MessageServer.hpp index f59c21fe0..184410117 100644 --- a/UDPExamples/MessageServer.hpp +++ b/UDPExamples/MessageServer.hpp @@ -106,7 +106,7 @@ public: , QString const& report_received, QString const& tx_power, QString const& comments , QString const& name, QDateTime time_on, QString const& operator_call , QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd); + , QString const& exchange_sent, QString const& exchange_rcvd, QString const& prop_mode); Q_SIGNAL void decodes_cleared (QString const& id); Q_SIGNAL void logged_ADIF (QString const& id, QByteArray const& ADIF); diff --git a/UDPExamples/UDPDaemon.cpp b/UDPExamples/UDPDaemon.cpp index dea2c68c9..be1b5edeb 100644 --- a/UDPExamples/UDPDaemon.cpp +++ b/UDPExamples/UDPDaemon.cpp @@ -102,7 +102,7 @@ public: , QString const& report_received, QString const& tx_power , QString const& comments, QString const& name, QDateTime time_on , QString const& operator_call, QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd) + , QString const& exchange_sent, QString const& exchange_rcvd, QString const& prop_mode) { if (client_id == id_) { @@ -111,12 +111,13 @@ public: << "rpt_rcvd:" << report_received << "Tx_pwr:" << tx_power << "comments:" << comments << "name:" << name << "operator_call:" << operator_call << "my_call:" << my_call << "my_grid:" << my_grid << "exchange_sent:" << exchange_sent - << "exchange_rcvd:" << exchange_rcvd; + << "exchange_rcvd:" << exchange_rcvd << "prop_mode:" << prop_mode; std::cout << QByteArray {80, '-'}.data () << '\n'; - std::cout << tr ("%1: Logged %2 grid: %3 power: %4 sent: %5 recd: %6 freq: %7 time_off: %8 op: %9 my_call: %10 my_grid: %11") + std::cout << tr ("%1: Logged %2 grid: %3 power: %4 sent: %5 recd: %6 freq: %7 time_off: %8 op: %9 my_call: %10 my_grid: %11 exchange_sent: %12 exchange_rcvd: %13 comments: %14 prop_mode: %15") .arg (id_).arg (dx_call).arg (dx_grid).arg (tx_power).arg (report_sent).arg (report_received) .arg (dial_frequency).arg (time_off.toString("yyyy-MM-dd hh:mm:ss.z")).arg (operator_call) - .arg (my_call).arg (my_grid).toStdString () + .arg (my_call).arg (my_grid).arg (exchange_sent).arg (exchange_rcvd) + .arg (comments).arg (prop_mode).toStdString () << std::endl; } } diff --git a/widgets/logqso.cpp b/widgets/logqso.cpp index 58dcd04f4..7a74b86cf 100644 --- a/widgets/logqso.cpp +++ b/widgets/logqso.cpp @@ -15,6 +15,37 @@ #include "ui_logqso.h" #include "moc_logqso.cpp" +namespace +{ + struct PropMode + { + char const * id_; + char const * name_; + }; + constexpr PropMode prop_modes[] = + { + {"", ""} + , {"AS", QT_TRANSLATE_NOOP ("LogQSO", "Aircraft scatter")} + , {"AUE", QT_TRANSLATE_NOOP ("LogQSO", "Aurora-E")} + , {"AUR", QT_TRANSLATE_NOOP ("LogQSO", "Aurora")} + , {"BS", QT_TRANSLATE_NOOP ("LogQSO", "Back scatter")} + , {"ECH", QT_TRANSLATE_NOOP ("LogQSO", "Echolink")} + , {"EME", QT_TRANSLATE_NOOP ("LogQSO", "Earth-moon-earth")} + , {"ES", QT_TRANSLATE_NOOP ("LogQSO", "Sporadic E")} + , {"F2", QT_TRANSLATE_NOOP ("LogQSO", "F2 Reflection")} + , {"FAI", QT_TRANSLATE_NOOP ("LogQSO", "Field aligned irregularities")} + , {"INTERNET", QT_TRANSLATE_NOOP ("LogQSO", "Internet-assisted")} + , {"ION", QT_TRANSLATE_NOOP ("LogQSO", "Ionoscatter")} + , {"IRL", QT_TRANSLATE_NOOP ("LogQSO", "IRLP")} + , {"MS", QT_TRANSLATE_NOOP ("LogQSO", "Meteor scatter")} + , {"RPT", QT_TRANSLATE_NOOP ("LogQSO", "Non-satellite repeater or transponder")} + , {"RS", QT_TRANSLATE_NOOP ("LogQSO", "Rain scatter")} + , {"SAT", QT_TRANSLATE_NOOP ("LogQSO", "Satellite")} + , {"TEP", QT_TRANSLATE_NOOP ("LogQSO", "Trans-equatorial")} + , {"TR", QT_TRANSLATE_NOOP ("LogQSO", "Troposheric ducting")} + }; +} + LogQSO::LogQSO(QString const& programTitle, QSettings * settings , Configuration const * config, LogBook * log, QWidget *parent) : QDialog {parent, Qt::WindowStaysOnTopHint | Qt::WindowTitleHint | Qt::WindowSystemMenuHint} @@ -25,6 +56,10 @@ LogQSO::LogQSO(QString const& programTitle, QSettings * settings { ui->setupUi(this); setWindowTitle(programTitle + " - Log QSO"); + for (auto const& prop_mode : prop_modes) + { + ui->comboBoxPropMode->addItem (prop_mode.name_, prop_mode.id_); + } loadSettings (); ui->grid->setValidator (new MaidenheadLocatorValidator {this}); } @@ -42,7 +77,12 @@ void LogQSO::loadSettings () ui->cbPropMode->setChecked (m_settings->value ("SavePropMode", false).toBool ()); m_txPower = m_settings->value ("TxPower", "").toString (); m_comments = m_settings->value ("LogComments", "").toString(); - m_propmode = m_settings->value ("PropMode", "").toString(); + int prop_index {0}; + if (ui->cbPropMode->isChecked ()) + { + prop_index = ui->comboBoxPropMode->findData (m_settings->value ("PropMode", "").toString()); + } + ui->comboBoxPropMode->setCurrentIndex (prop_index); m_settings->endGroup (); } @@ -55,65 +95,7 @@ void LogQSO::storeSettings () const m_settings->setValue ("SavePropMode", ui->cbPropMode->isChecked ()); m_settings->setValue ("TxPower", m_txPower); m_settings->setValue ("LogComments", m_comments); - switch (ui->comboBoxPropMode->currentIndex()) { - case 0: - m_settings->setValue ("PropMode", ""); - break; - case 1: - m_settings->setValue ("PropMode", "AS"); - break; - case 2: - m_settings->setValue ("PropMode", "AUE"); - break; - case 3: - m_settings->setValue ("PropMode", "AUR"); - break; - case 4: - m_settings->setValue ("PropMode", "BS"); - break; - case 5: - m_settings->setValue ("PropMode", "ECH"); - break; - case 6: - m_settings->setValue ("PropMode", "EME"); - break; - case 7: - m_settings->setValue ("PropMode", "ES"); - break; - case 8: - m_settings->setValue ("PropMode", "F2"); - break; - case 9: - m_settings->setValue ("PropMode", "FAI"); - break; - case 10: - m_settings->setValue ("PropMode", "INTERNET"); - break; - case 11: - m_settings->setValue ("PropMode", "ION"); - break; - case 12: - m_settings->setValue ("PropMode", "IRL"); - break; - case 13: - m_settings->setValue ("PropMode", "MS"); - break; - case 14: - m_settings->setValue ("PropMode", "RPT"); - break; - case 15: - m_settings->setValue ("PropMode", "RS"); - break; - case 16: - m_settings->setValue ("PropMode", "SAT"); - break; - case 17: - m_settings->setValue ("PropMode", "TEP"); - break; - case 18: - m_settings->setValue ("PropMode", "TR"); - break; - } + m_settings->setValue ("PropMode", ui->comboBoxPropMode->currentData ()); m_settings->endGroup (); } @@ -142,51 +124,6 @@ void LogQSO::initLogQSO(QString const& hisCall, QString const& hisGrid, QString { ui->comments->clear (); } - if (ui->cbPropMode->isChecked ()) - { - if (m_propmode == "") - ui->comboBoxPropMode->setCurrentIndex(0); - if (m_propmode == "AS") - ui->comboBoxPropMode->setCurrentIndex(1); - if (m_propmode == "AUE") - ui->comboBoxPropMode->setCurrentIndex(2); - if (m_propmode == "AUR") - ui->comboBoxPropMode->setCurrentIndex(3); - if (m_propmode == "BS") - ui->comboBoxPropMode->setCurrentIndex(4); - if (m_propmode == "ECH") - ui->comboBoxPropMode->setCurrentIndex(5); - if (m_propmode == "EME") - ui->comboBoxPropMode->setCurrentIndex(6); - if (m_propmode == "ES") - ui->comboBoxPropMode->setCurrentIndex(7); - if (m_propmode == "F2") - ui->comboBoxPropMode->setCurrentIndex(8); - if (m_propmode == "FAI") - ui->comboBoxPropMode->setCurrentIndex(9); - if (m_propmode == "INTERNET") - ui->comboBoxPropMode->setCurrentIndex(10); - if (m_propmode == "ION") - ui->comboBoxPropMode->setCurrentIndex(11); - if (m_propmode == "IRL") - ui->comboBoxPropMode->setCurrentIndex(12); - if (m_propmode == "MS") - ui->comboBoxPropMode->setCurrentIndex(13); - if (m_propmode == "RPT") - ui->comboBoxPropMode->setCurrentIndex(14); - if (m_propmode == "RS") - ui->comboBoxPropMode->setCurrentIndex(15); - if (m_propmode == "SAT") - ui->comboBoxPropMode->setCurrentIndex(16); - if (m_propmode == "TEP") - ui->comboBoxPropMode->setCurrentIndex(17); - if (m_propmode == "TR") - ui->comboBoxPropMode->setCurrentIndex(18); - } - else - { - ui->comboBoxPropMode->setCurrentIndex(0); - } if (m_config->report_in_comments()) { auto t=mode; if(rptSent!="") t+=" Sent: " + rptSent; @@ -207,6 +144,10 @@ void LogQSO::initLogQSO(QString const& hisCall, QString const& hisGrid, QString ui->loggedOperator->setText(m_config->opCall()); ui->exchSent->setText (xSent); ui->exchRcvd->setText (xRcvd); + if (!ui->cbPropMode->isChecked ()) + { + ui->comboBoxPropMode->setCurrentIndex (-1); + } using SpOp = Configuration::SpecialOperatingActivity; auto special_op = m_config->special_op_id (); @@ -240,65 +181,6 @@ void LogQSO::accept() auto operator_call = ui->loggedOperator->text (); auto xsent = ui->exchSent->text (); auto xrcvd = ui->exchRcvd->text (); - switch (ui->comboBoxPropMode->currentIndex()) { - case 0: - m_propmode = ""; - break; - case 1: - m_propmode = "AS"; - break; - case 2: - m_propmode = "AUE"; - break; - case 3: - m_propmode = "AUR"; - break; - case 4: - m_propmode = "BS"; - break; - case 5: - m_propmode = "ECH"; - break; - case 6: - m_propmode = "EME"; - break; - case 7: - m_propmode = "ES"; - break; - case 8: - m_propmode = "F2"; - break; - case 9: - m_propmode = "FAI"; - break; - case 10: - m_propmode = "INTERNET"; - break; - case 11: - m_propmode = "ION"; - break; - case 12: - m_propmode = "IRL"; - break; - case 13: - m_propmode = "MS"; - break; - case 14: - m_propmode = "RPT"; - break; - case 15: - m_propmode = "RS"; - break; - case 16: - m_propmode = "SAT"; - break; - case 17: - m_propmode = "TEP"; - break; - case 18: - m_propmode = "TR"; - break; - } using SpOp = Configuration::SpecialOperatingActivity; auto special_op = m_config->special_op_id (); @@ -344,6 +226,7 @@ void LogQSO::accept() } } + auto const& prop_mode = ui->comboBoxPropMode->currentData ().toString (); //Log this QSO to file "wsjtx.log" static QFile f {QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("wsjtx.log")}; if(!f.open(QIODevice::Text | QIODevice::Append)) { @@ -357,7 +240,7 @@ void LogQSO::accept() dateTimeOff.time().toString("hh:mm:ss,") + hisCall + "," + hisGrid + "," + strDialFreq + "," + mode + "," + rptSent + "," + rptRcvd + "," + m_txPower + - "," + m_comments + "," + name + "," + m_propmode; + "," + m_comments + "," + name + "," + prop_mode; QTextStream out(&f); out << logEntry << #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) @@ -386,7 +269,7 @@ void LogQSO::accept() , m_myGrid , xsent , xrcvd - , m_propmode + , prop_mode , m_log->QSOToADIF (hisCall , hisGrid , mode @@ -404,7 +287,7 @@ void LogQSO::accept() , operator_call , xsent , xrcvd - , m_propmode)); + , prop_mode)); QDialog::accept(); } diff --git a/widgets/logqso.h b/widgets/logqso.h index 70674bad8..f6e8d4fed 100644 --- a/widgets/logqso.h +++ b/widgets/logqso.h @@ -57,7 +57,6 @@ private: LogBook * m_log; QString m_txPower; QString m_comments; - QString m_propmode; Radio::Frequency m_dialFreq; QString m_myCall; QString m_myGrid; diff --git a/widgets/logqso.ui b/widgets/logqso.ui index f1b198cec..7b885cd01 100644 --- a/widgets/logqso.ui +++ b/widgets/logqso.ui @@ -6,8 +6,8 @@ 0 0 - 437 - 351 + 440 + 322 @@ -46,6 +46,9 @@ Qt::AlignCenter + + call + @@ -68,6 +71,9 @@ Qt::AlignCenter + + start_date_time + @@ -103,6 +109,9 @@ Qt::AlignCenter + + end_date_time + @@ -142,6 +151,9 @@ Qt::AlignCenter + + mode + @@ -171,6 +183,9 @@ Qt::AlignCenter + + band + @@ -200,6 +215,9 @@ Qt::AlignCenter + + sent + @@ -229,6 +247,9 @@ Qt::AlignCenter + + rcvd + @@ -258,6 +279,9 @@ Qt::AlignCenter + + grid + @@ -290,6 +314,9 @@ Qt::AlignCenter + + name + @@ -310,6 +337,9 @@ Tx power + + txPower + @@ -339,6 +369,9 @@ Comments + + comments + @@ -369,6 +402,9 @@ Operator + + loggedOperator + @@ -403,6 +439,9 @@ Exch sent + + exchSent + @@ -433,6 +472,9 @@ Rcvd + + exchRcvd + @@ -454,106 +496,13 @@ Prop Mode + + comboBoxPropMode + - - - - - - - - - AS | Aircraft scatter - - - - - AUE | Aurora-E - - - - - AUR | Aurora - - - - - BS | Back scatter - - - - - ECH | Echolink - - - - - EME | Earth-moon-earth - - - - - ES | Sporadic E - - - - - F2 | F2 Reflection - - - - - FAI | Field aligned irregularities - - - - - INTERNET | Internet-assisted - - - - - ION | Ionoscatter - - - - - IRL | IRLP - - - - - MS | Meteor scatter - - - - - RPT | Terrestrial or atmospheric repeater or transponder - - - - - RS | Rain scatter - - - - - SAT | Satellite - - - - - TEP | Trans-equatorial - - - - - TR | Troposheric ducting - - - + @@ -603,8 +552,11 @@ cbTxPower comments cbComments - cbPropMode + loggedOperator + exchSent + exchRcvd comboBoxPropMode + cbPropMode From 37ab6eecd1f2910836adf7fdded07ddf23140509 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sat, 27 Jun 2020 00:23:34 +0100 Subject: [PATCH 3/3] Update contributors, and UDP Message Protocol documentation --- Network/NetworkMessage.hpp | 1 + widgets/about.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Network/NetworkMessage.hpp b/Network/NetworkMessage.hpp index 3c5c9268f..c484efb23 100644 --- a/Network/NetworkMessage.hpp +++ b/Network/NetworkMessage.hpp @@ -308,6 +308,7 @@ * My grid utf8 * Exchange sent utf8 * Exchange received utf8 + * ADIF Propagation mode utf8 * * The QSO logged message is sent to the server(s) when the * WSJT-X user accepts the "Log QSO" dialog by clicking the "OK" diff --git a/widgets/about.cpp b/widgets/about.cpp index b1af01807..cc7f8a337 100644 --- a/widgets/about.cpp +++ b/widgets/about.cpp @@ -20,10 +20,10 @@ CAboutDlg::CAboutDlg(QWidget *parent) : "weak-signal Amateur Radio communication.

" "© 2001-2020 by Joe Taylor, K1JT, Bill Somerville, G4WJS,
" "and Steve Franke, K9AN.

" - "We gratefully acknowledge contributions from AC6SL, AE4JY, DJ0OT,
" - "G3WDG, G4KLA, IV3NWV, IW3RAB, K3WYC, KA6MAL, KA9Q, KB1ZMX,
" - "KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR, VE1SKY, VK3ACF, VK4BDJ,
" - "VK7MO, W4TI, W4TV, and W9MDB.

" + "We gratefully acknowledge contributions from AC6SL, AE4JY,
" + "DF2ET, DJ0OT, G3WDG, G4KLA, IV3NWV, IW3RAB, K3WYC, KA6MAL,
" + "KA9Q, KB1ZMX, KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR, VE1SKY,
" + "VK3ACF, VK4BDJ, VK7MO, W4TI, W4TV, and W9MDB.

" "WSJT-X is licensed under the terms of Version 3
" "of the GNU General Public License (GPL)

" ""