diff --git a/widgets/ExportCabrillo.cpp b/widgets/ExportCabrillo.cpp index d87c530fa..928a60dc9 100644 --- a/widgets/ExportCabrillo.cpp +++ b/widgets/ExportCabrillo.cpp @@ -1,126 +1,110 @@ #include "ExportCabrillo.h" -#include "SettingsGroup.hpp" -#include "MessageBox.hpp" #include -#include #include +#include +#include + +#include "SettingsGroup.hpp" +#include "Configuration.hpp" +#include "MessageBox.hpp" +#include "models/CabrilloLog.hpp" #include "ui_ExportCabrillo.h" -#include "moc_ExportCabrillo.cpp" -ExportCabrillo::ExportCabrillo(QSettings *settings, QWidget *parent) : - QDialog(parent), - settings_ {settings}, - ui(new Ui::ExportCabrillo) +ExportCabrillo::ExportCabrillo (QSettings * settings, Configuration const * configuration + , CabrilloLog const * log, QWidget * parent) + : QDialog {parent}, + settings_ {settings}, + configuration_ {configuration}, + log_ {log}, + ui {new Ui::ExportCabrillo} { - ui->setupUi(this); - read_settings(); - setWindowTitle(QApplication::applicationName() + " - Export Cabrillo"); + ui->setupUi (this); + read_settings (); + setWindowTitle (QApplication::applicationName() + " - Export Cabrillo"); + connect (ui->buttonBox, &QDialogButtonBox::accepted, this, &ExportCabrillo::save_log); } -ExportCabrillo::~ExportCabrillo() +ExportCabrillo::~ExportCabrillo () { - if(isVisible()) write_settings(); - delete ui; + write_settings (); } -void ExportCabrillo::closeEvent (QCloseEvent * e) -{ - write_settings(); - QWidget::closeEvent(e); -} - - void ExportCabrillo::read_settings () { SettingsGroup group {settings_, "ExportCabrillo"}; restoreGeometry (settings_->value("window/geometry").toByteArray()); - ui->lineEdit_1->setText(settings_->value("Location").toString()); - ui->lineEdit_2->setText(settings_->value("Contest").toString()); - ui->lineEdit_3->setText(settings_->value("Callsign").toString()); - ui->lineEdit_4->setText(settings_->value("Category-Operator").toString()); - ui->lineEdit_5->setText(settings_->value("Category-Transmitter").toString()); - ui->lineEdit_6->setText(settings_->value("Category-Power").toString()); - ui->lineEdit_7->setText(settings_->value("Category-Assisted").toString()); - ui->lineEdit_8->setText(settings_->value("Category-Band").toString()); - ui->lineEdit_9->setText(settings_->value("Claimed-Score").toString()); - ui->lineEdit_10->setText(settings_->value("Operators").toString()); - ui->lineEdit_11->setText(settings_->value("Club").toString()); - ui->lineEdit_12->setText(settings_->value("Name").toString()); - ui->lineEdit_13->setText(settings_->value("Address1").toString()); - ui->lineEdit_14->setText(settings_->value("Address2").toString()); + ui->location_line_edit->setText(settings_->value("Location").toString()); + ui->contest_line_edit->setText(settings_->value("Contest").toString()); + ui->call_line_edit->setText(settings_->value("Callsign").toString()); + ui->category_op_line_edit->setText(settings_->value("Category-Operator").toString()); + ui->category_xmtr_line_edit->setText(settings_->value("Category-Transmitter").toString()); + ui->category_pwr_line_edit->setText(settings_->value("Category-Power").toString()); + ui->category_assisted_line_edit->setText(settings_->value("Category-Assisted").toString()); + ui->category_band_line_edit->setText(settings_->value("Category-Band").toString()); + ui->claimed_line_edit->setText(settings_->value("Claimed-Score").toString()); + ui->operators_line_edit->setText(settings_->value("Operators").toString()); + ui->club_line_edit->setText(settings_->value("Club").toString()); + ui->name_line_edit->setText(settings_->value("Name").toString()); + ui->addr_1_line_edit->setText(settings_->value("Address1").toString()); + ui->addr_2_line_edit->setText(settings_->value("Address2").toString()); } void ExportCabrillo::write_settings () { SettingsGroup group {settings_, "ExportCabrillo"}; settings_->setValue ("window/geometry", saveGeometry ()); - settings_->setValue("Location",ui->lineEdit_1->text()); - settings_->setValue("Contest",ui->lineEdit_2->text()); - settings_->setValue("Callsign",ui->lineEdit_3->text()); - settings_->setValue("Category-Operator",ui->lineEdit_4->text()); - settings_->setValue("Category-Transmitter",ui->lineEdit_5->text()); - settings_->setValue("Category-Power",ui->lineEdit_6->text()); - settings_->setValue("Category-Assisted",ui->lineEdit_7->text()); - settings_->setValue("Category-Band",ui->lineEdit_8->text()); - settings_->setValue("Claimed-Score",ui->lineEdit_9->text()); - settings_->setValue("Operators",ui->lineEdit_10->text()); - settings_->setValue("Club",ui->lineEdit_11->text()); - settings_->setValue("Name",ui->lineEdit_12->text()); - settings_->setValue("Address1",ui->lineEdit_13->text()); - settings_->setValue("Address2",ui->lineEdit_14->text()); + settings_->setValue("Location",ui->location_line_edit->text()); + settings_->setValue("Contest",ui->contest_line_edit->text()); + settings_->setValue("Callsign",ui->call_line_edit->text()); + settings_->setValue("Category-Operator",ui->category_op_line_edit->text()); + settings_->setValue("Category-Transmitter",ui->category_xmtr_line_edit->text()); + settings_->setValue("Category-Power",ui->category_pwr_line_edit->text()); + settings_->setValue("Category-Assisted",ui->category_assisted_line_edit->text()); + settings_->setValue("Category-Band",ui->category_band_line_edit->text()); + settings_->setValue("Claimed-Score",ui->claimed_line_edit->text()); + settings_->setValue("Operators",ui->operators_line_edit->text()); + settings_->setValue("Club",ui->club_line_edit->text()); + settings_->setValue("Name",ui->name_line_edit->text()); + settings_->setValue("Address1",ui->addr_1_line_edit->text()); + settings_->setValue("Address2",ui->addr_2_line_edit->text()); } -void ExportCabrillo::setFile(QString t) +void ExportCabrillo::save_log () { - m_CabLog=t; -} - - -void ExportCabrillo::on_pbSaveAs_clicked() -{ - QString fname; - QFileDialog saveAs(this); - saveAs.setFileMode(QFileDialog::AnyFile); - fname=saveAs.getSaveFileName(this, "Save File", "","Cabrillo Log (*.log)"); - QFile f {fname}; - if (f.open(QIODevice::WriteOnly | QIODevice::Text)) { - QTextStream out(&f); - out << "START-OF-LOG:3.0" << endl - << "LOCATION: " << ui->lineEdit_1->text() << endl - << "CONTEST: " << ui->lineEdit_2->text() << endl - << "CALLSIGN: " << ui->lineEdit_3->text() << endl - << "CATEGORY-OPERATOR: " << ui->lineEdit_4->text() << endl - << "CATEGORY-TRANSMITTER: " << ui->lineEdit_5->text() << endl - << "CATEGORY-POWER: " << ui->lineEdit_6->text() << endl - << "CATEGORY-ASSISTED: " << ui->lineEdit_7->text() << endl - << "CATEGORY-BAND: " << ui->lineEdit_8->text() << endl - << "CLAIMED-SCORE: " << ui->lineEdit_9->text() << endl - << "OPERATORS: " << ui->lineEdit_10->text() << endl - << "CLUB: " << ui->lineEdit_11->text() << endl - << "NAME: " << ui->lineEdit_12->text() << endl - << "ADDRESS: " << ui->lineEdit_13->text() << endl - << "ADDRESS: " << ui->lineEdit_14->text() << endl; - - QFile f2(m_CabLog); - if(f2.open(QIODevice::ReadOnly | QIODevice::Text)) { - QTextStream s(&f2); - QString t=s.readAll(); - out << t << "END-OF-LOG:" << endl; - f2.close(); + auto fname = QFileDialog::getSaveFileName (this + , tr ("Save Log File") + , configuration_->writeable_data_dir ().absolutePath () + , tr ("Cabrillo Log (*.log)")); + if (fname.size ()) + { + QFile f {fname}; + if (f.open (QIODevice::WriteOnly | QIODevice::Text)) { + QTextStream out {&f}; + out << "START-OF-LOG:3.0\n" + << "LOCATION: " << ui->location_line_edit->text() << '\n' + << "CONTEST: " << ui->contest_line_edit->text() << '\n' + << "CALLSIGN: " << ui->call_line_edit->text() << '\n' + << "CATEGORY-OPERATOR: " << ui->category_op_line_edit->text() << '\n' + << "CATEGORY-TRANSMITTER: " << ui->category_xmtr_line_edit->text() << '\n' + << "CATEGORY-POWER: " << ui->category_pwr_line_edit->text() << '\n' + << "CATEGORY-ASSISTED: " << ui->category_assisted_line_edit->text() << '\n' + << "CATEGORY-BAND: " << ui->category_band_line_edit->text() << '\n' + << "CLAIMED-SCORE: " << ui->claimed_line_edit->text() << '\n' + << "OPERATORS: " << ui->operators_line_edit->text() << '\n' + << "CLUB: " << ui->club_line_edit->text() << '\n' + << "NAME: " << ui->name_line_edit->text() << '\n' + << "ADDRESS: " << ui->addr_1_line_edit->text() << '\n' + << "ADDRESS: " << ui->addr_2_line_edit->text() << '\n'; + if (log_) log_->export_qsos (out); + out << "END-OF-LOG:" << endl; + return; + } else { + auto const& message = tr ("Cannot open \"%1\" for writing: %2") + .arg (f.fileName ()).arg (f.errorString ()); + MessageBox::warning_message (this, tr ("Export Cabrillo File Error"), message); + } } - f.close(); - } else { - auto const& message = tr ("Cannot open \"%1\" for writing: %2") - .arg (f.fileName ()).arg (f.errorString ()); - MessageBox::warning_message (this, tr ("Export Cabrillo File Error"), message); - } - write_settings(); -} - -void ExportCabrillo::accept() -{ - write_settings(); - QDialog::accept(); + setResult (Rejected); } diff --git a/widgets/ExportCabrillo.h b/widgets/ExportCabrillo.h index 80b30a3eb..fbc9294cd 100644 --- a/widgets/ExportCabrillo.h +++ b/widgets/ExportCabrillo.h @@ -1,37 +1,34 @@ +// -*- Mode: C++ -*- #ifndef EXPORTCABRILLO_H #define EXPORTCABRILLO_H #include -#include +#include +class QSettings; +class Configuration; +class CabrilloLog; namespace Ui { -class ExportCabrillo; + class ExportCabrillo; } -class ExportCabrillo : public QDialog +class ExportCabrillo final + : public QDialog { - Q_OBJECT - public: - explicit ExportCabrillo(QSettings *settings, QWidget *parent = 0); - void setFile(QString t); - ~ExportCabrillo(); - -public slots: - void accept(); - -protected: - void closeEvent (QCloseEvent *) override; - -private slots: - void on_pbSaveAs_clicked(); - + explicit ExportCabrillo (QSettings *, Configuration const * + , CabrilloLog const *, QWidget * parent = nullptr); + ~ExportCabrillo (); + private: - QSettings * settings_; - QString m_CabLog; void read_settings(); void write_settings(); - Ui::ExportCabrillo *ui; + void save_log (); + + QSettings * settings_; + Configuration const * configuration_; + CabrilloLog const * log_; + QScopedPointer ui; }; -#endif // EXPORTCABRILLO_H +#endif diff --git a/widgets/ExportCabrillo.ui b/widgets/ExportCabrillo.ui index 932fd7f26..eddbab9c4 100644 --- a/widgets/ExportCabrillo.ui +++ b/widgets/ExportCabrillo.ui @@ -2,29 +2,24 @@ ExportCabrillo - - - 0 - 0 - 330 - 407 - - Dialog - - - + + + - + Location: + + location_line_edit + - + SNJ @@ -34,14 +29,17 @@ - + Contest: + + contest_line_edit + - + ARRL-RTTY @@ -51,14 +49,17 @@ - + Callsign: + + call_line_edit + - + @@ -68,14 +69,17 @@ - + Category-Operator: + + category_op_line_edit + - + SINGLE-OP @@ -85,14 +89,17 @@ - + Category-Transmitter: + + category_xmtr_line_edit + - + ONE @@ -102,14 +109,17 @@ - + Category-Power: + + category_pwr_line_edit + - + LOW @@ -119,14 +129,17 @@ - + Category-Assisted: + + category_assisted_line_edit + - + NON-ASSISTED @@ -136,14 +149,17 @@ - + Category-Band: + + category_band_line_edit + - + ALL @@ -153,14 +169,17 @@ - + Claimed-Score: + + claimed_line_edit + - + @@ -170,14 +189,17 @@ - + Operators: + + operators_line_edit + - + @@ -187,28 +209,34 @@ - + Club: + + club_line_edit + - + Qt::AlignCenter - + Name: + + name_line_edit + - + @@ -218,28 +246,34 @@ - + Address: + + addr_1_line_edit + - + Qt::AlignCenter - + Address: + + addr_2_line_edit + - + Qt::AlignCenter @@ -247,20 +281,13 @@ - + Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - Save As + QDialogButtonBox::Cancel|QDialogButtonBox::Save diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 3633644c7..287ed6133 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -64,8 +64,10 @@ #include "LotWUsers.hpp" #include "logbook/AD1CCty.hpp" #include "models/FoxLog.hpp" +#include "models/CabrilloLog.hpp" #include "FoxLogWindow.hpp" - +#include "CabrilloLogWindow.hpp" +#include "ExportCabrillo.h" #include "ui_mainwindow.h" #include "moc_mainwindow.cpp" @@ -1036,6 +1038,7 @@ void MainWindow::writeSettings() m_settings->setValue ("AstroDisplayed", m_astroWidget && m_astroWidget->isVisible()); m_settings->setValue ("MsgAvgDisplayed", m_msgAvgWidget && m_msgAvgWidget->isVisible ()); m_settings->setValue ("FoxLogDisplayed", m_foxLogWindow && m_foxLogWindow->isVisible ()); + m_settings->setValue ("ContestLogDisplayed", m_contestLogWindow && m_contestLogWindow->isVisible ()); m_settings->setValue ("FreeText", ui->freeTextMsg->currentText ()); m_settings->setValue("ShowMenus",ui->cbMenus->isChecked()); m_settings->setValue("CallFirst",ui->cbFirst->isChecked()); @@ -1112,6 +1115,7 @@ void MainWindow::readSettings() auto displayAstro = m_settings->value ("AstroDisplayed", false).toBool (); auto displayMsgAvg = m_settings->value ("MsgAvgDisplayed", false).toBool (); auto displayFoxLog = m_settings->value ("FoxLogDisplayed", false).toBool (); + auto displayContestLog = m_settings->value ("ContestLogDisplayed", false).toBool (); if (m_settings->contains ("FreeText")) ui->freeTextMsg->setCurrentText ( m_settings->value ("FreeText").toString ()); ui->cbMenus->setChecked(m_settings->value("ShowMenus",true).toBool()); @@ -1202,7 +1206,8 @@ void MainWindow::readSettings() checkMSK144ContestType(); if(displayMsgAvg) on_actionMessage_averaging_triggered(); - if (displayFoxLog) on_actionFox_Log_triggered (); + if (displayFoxLog) on_fox_log_action_triggered (); + if (displayContestLog) on_contest_log_action_triggered (); } void MainWindow::checkMSK144ContestType() @@ -1246,6 +1251,9 @@ void MainWindow::setDecodedTextFont (QFont const& font) if (m_foxLogWindow) { m_foxLogWindow->change_font (font); } + if (m_contestLogWindow) { + m_contestLogWindow->change_font (font); + } updateGeometry (); } @@ -2424,12 +2432,9 @@ void MainWindow::on_actionAstronomical_data_toggled (bool checked) } } -void MainWindow::on_actionFox_Log_triggered() +void MainWindow::on_fox_log_action_triggered() { - if (!m_foxLog) - { - m_foxLog.reset (new FoxLog); - } + if (!m_foxLog) m_foxLog.reset (new FoxLog); if (!m_foxLogWindow) { m_foxLogWindow.reset (new FoxLogWindow {m_settings, &m_config, m_foxLog->model ()}); @@ -2442,6 +2447,21 @@ void MainWindow::on_actionFox_Log_triggered() m_foxLogWindow->activateWindow (); } +void MainWindow::on_contest_log_action_triggered() +{ + if (!m_cabrilloLog) m_cabrilloLog.reset (new CabrilloLog {&m_config}); + if (!m_contestLogWindow) + { + m_contestLogWindow.reset (new CabrilloLogWindow {m_settings, &m_config, m_cabrilloLog->model ()}); + + // Connect signals from contest log window + connect (this, &MainWindow::finished, m_contestLogWindow.data (), &CabrilloLogWindow::close); + } + m_contestLogWindow->showNormal (); + m_contestLogWindow->raise (); + m_contestLogWindow->activateWindow (); +} + void MainWindow::on_actionColors_triggered() { if (!m_colorHighlighting) @@ -3791,10 +3811,6 @@ void MainWindow::guiUpdate() if(nsec != m_sec0) { // if((!m_msgAvgWidget or (m_msgAvgWidget and !m_msgAvgWidget->isVisible())) // and (SpecOp::NONE < m_config.special_op_id()) and (SpecOp::HOUND > m_config.special_op_id())) on_actionFox_Log_triggered(); - if (SpecOp::FOX == m_config.special_op_id() && (!m_foxLogWindow || !m_foxLogWindow->isVisible ())) - { - on_actionFox_Log_triggered(); - } if(m_freqNominal!=0 and m_freqNominal<50000000 and m_config.enable_VHF_features()) { if(!m_bVHFwarned) vhfWarning(); } else { @@ -5336,41 +5352,6 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button m_logDlg->initLogQSO (m_hisCall, grid, m_modeTx, m_rptSent, m_rptRcvd, m_dateTimeQSOOn, dateTimeQSOOff, m_freqNominal + ui->TxFreqSpinBox->value(), m_noSuffix, m_xSent, m_xRcvd); - - if(SpecOp::NONE < m_config.special_op_id() and SpecOp::FOX > m_config.special_op_id()) { - int n=ui->sbSerialNumber->value(); - ui->sbSerialNumber->setValue(n+1); - cabLog(); //Call the Cabrillo contest logger - } -} - -void MainWindow::cabLog() -{ - QFile f {m_config.writeable_data_dir ().absoluteFilePath ("cabrillo.log")}; - if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { - int nfreq=m_freqNominal/1000; - if(m_freqNominal>50000000) nfreq=m_freqNominal/1000000; - QString t; - t.sprintf("QSO: %5d DG ",nfreq); - t=t + QDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hhmm ") + - m_config.my_callsign().leftJustified(13,' ') + m_xSent.leftJustified(14,' ') + - m_hisCall.leftJustified(13,' ') + m_xRcvd; - QTextStream out(&f); - out << t << endl; - f.close(); - if(m_msgAvgWidget != NULL and m_msgAvgWidget->isVisible()) { - QString band; - band.sprintf(" %5d ",nfreq); - t=QDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hhmm ") + band + - m_hisCall.leftJustified(13,' ') + m_xSent.leftJustified(14,' ') + m_xRcvd; - m_msgAvgWidget->contestAddLog((qint32) m_config.special_op_id(),t); - } - m_xSent=""; - m_xRcvd=""; - } else { - MessageBox::warning_message (this, tr("File Open Error"), - tr("Cannot open \"%1\" for append: %2").arg(f.fileName()).arg(f.errorString())); - } } void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, QString const& grid @@ -5387,6 +5368,15 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, tr ("Cannot open \"%1\"").arg (m_logBook.path ())); } + + if (SpecOp::NONE < m_config.special_op_id() && SpecOp::FOX > m_config.special_op_id()) { + if (!m_cabrilloLog) m_cabrilloLog.reset (new CabrilloLog {&m_config}); + m_cabrilloLog->add_QSO (m_freqNominal, QDateTime::currentDateTimeUtc (), m_hisCall, m_xSent, m_xRcvd); + m_xSent=""; + m_xRcvd=""; + ui->sbSerialNumber->setValue (ui->sbSerialNumber->value () + 1); + } + 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); @@ -5532,7 +5522,7 @@ void MainWindow::on_actionFT8_triggered() ui->TxFreqSpinBox->setValue(300); displayWidgets(nWidgets("111010000100111000010000000000100")); ui->labDXped->setText("Fox"); - on_actionFox_Log_triggered(); + on_fox_log_action_triggered(); } if(SpecOp::HOUND == m_config.special_op_id()) { ui->txFirstCheckBox->setChecked(false); @@ -5565,6 +5555,7 @@ void MainWindow::on_actionFT8_triggered() ui->labDXped->setVisible(true); ui->labDXped->setText(t0); } + on_contest_log_action_triggered(); } if((SpecOp::FOX==m_config.special_op_id() or SpecOp::HOUND==m_config.special_op_id()) and !m_config.split_mode() and !m_bWarnedSplit) { @@ -6138,35 +6129,38 @@ void MainWindow::on_actionErase_ALL_TXT_triggered() //Erase ALL.TXT } } -void MainWindow::on_actionErase_FoxQSO_txt_triggered() +void MainWindow::on_reset_fox_log_action_triggered () { - int ret = MessageBox::query_message(this, tr("Confirm Erase"), - tr("Are you sure you want to erase file FoxQSO.txt?")); + int ret = MessageBox::query_message(this, tr("Confirm Reset"), + tr("Are you sure you want to erase file FoxQSO.txt and start a new Fox log?")); if(ret==MessageBox::Yes) { QFile f{m_config.writeable_data_dir().absoluteFilePath("FoxQSO.txt")}; f.remove(); - ui->sbSerialNumber->setValue(1); + if (!m_foxLog) m_foxLog.reset (new FoxLog); + m_foxLog->reset (); } } -void MainWindow::on_actionErase_cabrillo_log_triggered() +void MainWindow::on_reset_cabrillo_log_action_triggered () { - int ret = MessageBox::query_message(this, tr("Confirm Erase"), - tr("Are you sure you want to erase file cabrillo.log?")); - if(ret==MessageBox::Yes) { - QFile f{m_config.writeable_data_dir().absoluteFilePath("cabrillo.log")}; - f.remove(); - } + if (MessageBox::Yes == MessageBox::query_message(this, tr("Confirm Erase"), + tr("Are you sure you want to erase file cabrillo.log" + " and start a new Cabrillo log?"))) + { + QFile {m_config.writeable_data_dir ().absoluteFilePath ("cabrillo.log")}.remove (); + ui->sbSerialNumber->setValue (1); + if (!m_cabrilloLog) m_cabrilloLog.reset (new CabrilloLog {&m_config}); + m_cabrilloLog->reset (); + } } void MainWindow::on_actionExport_Cabrillo_log_triggered() { - if(!m_exportCabrillo) { - m_exportCabrillo.reset(new ExportCabrillo{m_settings}); - } - QString CabLog=m_config.writeable_data_dir ().absoluteFilePath ("cabrillo.log"); - m_exportCabrillo->setFile(CabLog); - m_exportCabrillo->exec(); + if (!m_cabrilloLog) m_cabrilloLog.reset (new CabrilloLog {&m_config}); + if (QDialog::Accepted == ExportCabrillo {m_settings, &m_config, m_cabrilloLog.data ()}.exec()) + { + MessageBox::information_message (this, tr ("Cabrillo Log saved")); + } } @@ -8061,10 +8055,7 @@ void MainWindow::houndCallers() m_nHoundsCalling++; // Number of accepted Hounds to be sorted } } - if(m_foxLogWindow && m_foxLogWindow->isVisible ()) - { - m_foxLogWindow->callers (nTotal); - } + if(m_foxLogWindow) m_foxLogWindow->callers (nTotal); // Sort and display accumulated list of Hound callers if(t.length()>30) { @@ -8225,10 +8216,8 @@ list2Done: m_hisGrid=m_foxQSO[hc1].grid; m_rptSent=m_foxQSO[hc1].sent; m_rptRcvd=m_foxQSO[hc1].rcvd; - if (!m_foxLogWindow) - { - on_actionFox_Log_triggered (); - } + if (!m_foxLog) m_foxLog.reset (new FoxLog); + if (!m_foxLogWindow) on_fox_log_action_triggered (); if (m_foxLog->add_QSO (QSO_time, m_hisCall, m_hisGrid, m_rptSent, m_rptRcvd, m_lastBand)) { writeFoxQSO (QString {" Log: %1 %2 %3 %4 %5"}.arg (m_hisCall).arg (m_hisGrid) @@ -8292,7 +8281,7 @@ Transmit: if(age < 3600) break; m_foxRateQueue.dequeue(); } - if (m_foxLogWindow && m_foxLogWindow->isVisible ()) + if (m_foxLogWindow) { m_foxLogWindow->rate (m_foxRateQueue.size ()); m_foxLogWindow->queued (m_foxQSOinProgress.count ()); diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 9ae612848..2ef380e74 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -36,7 +36,6 @@ #include "astro.h" #include "MessageBox.hpp" #include "NetworkAccessManager.hpp" -#include "ExportCabrillo.h" #define NUM_JT4_SYMBOLS 206 //(72+31)*2, embedded sync #define NUM_JT65_SYMBOLS 126 //63 data + 63 sync @@ -69,8 +68,10 @@ class WideGraph; class LogQSO; class Transceiver; class MessageAveraging; -class FoxLogWindow; class FoxLog; +class FoxLogWindow; +class CabrilloLog; +class CabrilloLogWindow; class ColorHighlighting; class MessageClient; class QTime; @@ -203,8 +204,8 @@ private slots: void on_actionDeepestDecode_toggled (bool); void bumpFqso(int n); void on_actionErase_ALL_TXT_triggered(); - void on_actionErase_FoxQSO_txt_triggered(); - void on_actionErase_cabrillo_log_triggered(); + void on_reset_fox_log_action_triggered (); + void on_reset_cabrillo_log_action_triggered (); void on_actionErase_wsjtx_log_adi_triggered(); void on_actionExport_Cabrillo_log_triggered(); void startTx2(); @@ -248,7 +249,8 @@ private slots: void stopTuneATU(); void auto_tx_mode(bool); void on_actionMessage_averaging_triggered(); - void on_actionFox_Log_triggered(); + void on_contest_log_action_triggered (); + void on_fox_log_action_triggered (); void on_actionColors_triggered(); void on_actionInclude_averaging_toggled (bool); void on_actionInclude_correlation_toggled (bool); @@ -364,8 +366,9 @@ private: QScopedPointer m_msgAvgWidget; QScopedPointer m_foxLog; QScopedPointer m_foxLogWindow; + QScopedPointer m_cabrilloLog; + QScopedPointer m_contestLogWindow; QScopedPointer m_colorHighlighting; - QScopedPointer m_exportCabrillo; Transceiver::TransceiverState m_rigState; Frequency m_lastDialFreq; QString m_lastBand; @@ -696,7 +699,6 @@ private: QString WSPR_hhmm(int n); void fast_config(bool b); void CQTxFreq(); - void cabLog(); void useNextCall(); void abortQSO(); void mouseTimerTick(); diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index 10560cffa..fe9aa30bc 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -1035,8 +1035,8 @@ QLabel[oob="true"] { Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - + + Tx# 1 @@ -2646,9 +2646,9 @@ QPushButton[state="ok"] { - + - + @@ -2666,7 +2666,8 @@ QPushButton[state="ok"] { - + + @@ -3304,20 +3305,20 @@ QPushButton[state="ok"] { Shift+F1 - + + + false + - Fox or Contest Log - - - Fox or Contest Log - - - Fox or Contest Log + Fox log - + - Erase FoxQSO.txt + Reset Fox log ... + + + <html><head/><body><p>Ths will erase the file FoxQSO.txt and delete the Fox log file which is used for dupe detection.</p></body></html> @@ -3325,9 +3326,9 @@ QPushButton[state="ok"] { FT8 DXpedition Mode User Guide - + - Erase cabrillo.log + Reset Cabrillo log ... @@ -3342,7 +3343,7 @@ QPushButton[state="ok"] { - Export Cabrillo log + Export Cabrillo log ... @@ -3350,6 +3351,11 @@ QPushButton[state="ok"] { Quick-Start Guide to WSJT-X 2.0 + + + Contest log + +