diff --git a/Configuration.cpp b/Configuration.cpp index c1f5137..3cba864 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -631,6 +631,7 @@ private: qint32 RxBandwidth_; double degrade_; double txDelay_; + bool write_logs_; bool reset_activity_; bool check_for_updates_; bool id_after_73_; @@ -778,6 +779,7 @@ qint32 Configuration::aggressive() const {return m_->aggressive_;} double Configuration::degrade() const {return m_->degrade_;} double Configuration::txDelay() const {return m_->txDelay_;} qint32 Configuration::RxBandwidth() const {return m_->RxBandwidth_;} +bool Configuration::write_logs() const { return m_->write_logs_;} bool Configuration::reset_activity() const { return m_->reset_activity_;} bool Configuration::check_for_updates() const { return m_->check_for_updates_; } bool Configuration::id_after_73 () const {return m_->id_after_73_;} @@ -1498,6 +1500,7 @@ void Configuration::impl::initialize_models () ui_->PTT_method_button_group->button (rig_params_.ptt_type)->setChecked (true); ui_->save_path_display_label->setText (save_directory_.absolutePath ()); ui_->azel_path_display_label->setText (azel_directory_.absolutePath ()); + ui_->write_logs_check_box->setChecked (write_logs_); ui_->reset_activity_check_box->setChecked (reset_activity_); ui_->checkForUpdates_checkBox->setChecked (check_for_updates_); ui_->CW_id_after_73_check_box->setChecked (id_after_73_); @@ -1928,6 +1931,7 @@ void Configuration::impl::read_settings () monitor_off_at_startup_ = settings_->value ("MonitorOFF", false).toBool (); monitor_last_used_ = settings_->value ("MonitorLastUsed", false).toBool (); spot_to_reporting_networks_ = settings_->value ("PSKReporter", true).toBool (); + write_logs_ = settings_->value("WriteLogs", true).toBool(); reset_activity_ = settings_->value("ResetActivity", false).toBool(); check_for_updates_ = settings_->value("CheckForUpdates", true).toBool(); id_after_73_ = settings_->value ("After73", false).toBool (); @@ -2139,6 +2143,7 @@ void Configuration::impl::write_settings () settings_->setValue ("MonitorOFF", monitor_off_at_startup_); settings_->setValue ("MonitorLastUsed", monitor_last_used_); settings_->setValue ("PSKReporter", spot_to_reporting_networks_); + settings_->setValue ("WriteLogs", write_logs_); settings_->setValue ("ResetActivity", reset_activity_); settings_->setValue ("CheckForUpdates", check_for_updates_); settings_->setValue ("After73", id_after_73_); @@ -2751,6 +2756,7 @@ void Configuration::impl::accept () aggressive_ = ui_->sbAggressive->value (); degrade_ = ui_->sbDegrade->value (); RxBandwidth_ = ui_->sbBandwidth->value (); + write_logs_ = ui_->write_logs_check_box->isChecked(); reset_activity_ = ui_->reset_activity_check_box->isChecked(); check_for_updates_ = ui_->checkForUpdates_checkBox->isChecked(); id_after_73_ = ui_->CW_id_after_73_check_box->isChecked (); diff --git a/Configuration.hpp b/Configuration.hpp index edb7926..eac37eb 100644 --- a/Configuration.hpp +++ b/Configuration.hpp @@ -129,6 +129,7 @@ public: qint32 RxBandwidth() const; double degrade() const; double txDelay() const; + bool write_logs() const; bool reset_activity() const; bool check_for_updates() const; bool id_after_73 () const; diff --git a/Configuration.ui b/Configuration.ui index c240891..8fd5962 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -39,7 +39,7 @@ - 0 + 1 @@ -281,8 +281,8 @@ 0 0 - 615 - 508 + 724 + 537 @@ -383,6 +383,13 @@ + + + + Write log files (ALL.TXT, DIRECTED.TXT, etc) of decoded text + + + @@ -796,8 +803,8 @@ text message. 0 0 - 616 - 331 + 738 + 461 diff --git a/mainwindow.cpp b/mainwindow.cpp index ee959ac..1ee804b 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -4657,53 +4657,6 @@ void MainWindow::decodeCheckHangingDecoder(){ initDecoderSubprocess(); } -void MainWindow::writeAllTxt(QString message, int bits) -{ - // Write decoded text to file "ALL.TXT". - QFile f {m_config.writeable_data_dir ().absoluteFilePath ("ALL.TXT")}; - if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { - QTextStream out(&f); - if(m_RxLog==1) { - out << DriftingDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hh:mm:ss") - << " " << qSetRealNumberPrecision (12) << (m_freqNominal / 1.e6) << " MHz " - << "JS8" << endl; - m_RxLog=0; - } - auto dt = DecodedText(message, bits, m_nSubMode); - out << dt.message() << endl; - f.close(); - } else { - MessageBox::warning_message (this, tr ("File Open Error") - , tr ("Cannot open \"%1\" for append: %2") - .arg (f.fileName ()).arg (f.errorString ())); - } -} - -void MainWindow::writeMsgTxt(QString message, int snr) -{ - // Write decoded text to file "DIRECTED.TXT". - QFile f {m_config.writeable_data_dir ().absoluteFilePath ("DIRECTED.TXT")}; - if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { - QTextStream out(&f); - - QStringList output = { - DriftingDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hh:mm:ss"), - Radio::frequency_MHz_string(m_freqNominal), - QString::number(currentFreqOffset()), - Varicode::formatSNR(snr), - message - }; - - out << output.join("\t") << endl; - - f.close(); - } else { - MessageBox::warning_message (this, tr ("File Open Error") - , tr ("Cannot open \"%1\" for append: %2") - .arg (f.fileName ()).arg (f.errorString ())); - } -} - QDateTime MainWindow::nextTransmitCycle(){ auto timestamp = DriftingDateTime::currentDateTimeUtc(); @@ -9498,19 +9451,7 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const& } if(s.frequency () < 30000000u && !m_mode.startsWith ("WSPR")) { - // Write freq changes to ALL.TXT only below 30 MHz. - QFile f2 {m_config.writeable_data_dir ().absoluteFilePath ("ALL.TXT")}; - if (f2.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { - QTextStream out(&f2); - out << DriftingDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hh:mm:ss") - << " " << qSetRealNumberPrecision (12) << (m_freqNominal / 1.e6) << " MHz " - << "JS8" << endl; - f2.close(); - } else { - MessageBox::warning_message (this, tr ("File Error") - ,tr ("Cannot open \"%1\" for append: %2") - .arg (f2.fileName ()).arg (f2.errorString ())); - } + write_frequency_entry("ALL.TXT"); } if (m_config.spot_to_reporting_networks ()) { @@ -13173,8 +13114,38 @@ void MainWindow::on_measure_check_box_stateChanged (int state) m_config.enable_calibration (Qt::Checked != state); } +void MainWindow::write_frequency_entry (QString const& file_name){ + if(!m_config.write_logs()){ + return; + } + + // Write freq changes to ALL.TXT only below 30 MHz. + QFile f2 {m_config.writeable_data_dir ().absoluteFilePath (file_name)}; + if (f2.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { + QTextStream out(&f2); + out << DriftingDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hh:mm:ss") + << " " << qSetRealNumberPrecision (12) << (m_freqNominal / 1.e6) << " MHz " + << "JS8" << endl; + f2.close(); + } else { + auto const& message = tr ("Cannot open \"%1\" for append: %2") + .arg (f2.fileName ()).arg (f2.errorString ()); +#if QT_VERSION >= 0x050400 + QTimer::singleShot (0, [=] { // don't block guiUpdate + MessageBox::warning_message (this, tr ("Log File Error"), message); + }); +#else + MessageBox::warning_message (this, tr ("Log File Error"), message); +#endif + } +} + void MainWindow::write_transmit_entry (QString const& file_name) { + if(!m_config.write_logs()){ + return; + } + QFile f {m_config.writeable_data_dir ().absoluteFilePath (file_name)}; if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { @@ -13201,3 +13172,59 @@ void MainWindow::write_transmit_entry (QString const& file_name) #endif } } + + +void MainWindow::writeAllTxt(QString message, int bits) +{ + if(!m_config.write_logs()){ + return; + } + + // Write decoded text to file "ALL.TXT". + QFile f {m_config.writeable_data_dir ().absoluteFilePath ("ALL.TXT")}; + if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { + QTextStream out(&f); + if(m_RxLog==1) { + out << DriftingDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hh:mm:ss") + << " " << qSetRealNumberPrecision (12) << (m_freqNominal / 1.e6) << " MHz " + << "JS8" << endl; + m_RxLog=0; + } + auto dt = DecodedText(message, bits, m_nSubMode); + out << dt.message() << endl; + f.close(); + } else { + MessageBox::warning_message (this, tr ("File Open Error") + , tr ("Cannot open \"%1\" for append: %2") + .arg (f.fileName ()).arg (f.errorString ())); + } +} + +void MainWindow::writeMsgTxt(QString message, int snr) +{ + if(!m_config.write_logs()){ + return; + } + + // Write decoded text to file "DIRECTED.TXT". + QFile f {m_config.writeable_data_dir ().absoluteFilePath ("DIRECTED.TXT")}; + if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { + QTextStream out(&f); + + QStringList output = { + DriftingDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hh:mm:ss"), + Radio::frequency_MHz_string(m_freqNominal), + QString::number(currentFreqOffset()), + Varicode::formatSNR(snr), + message + }; + + out << output.join("\t") << endl; + + f.close(); + } else { + MessageBox::warning_message (this, tr ("File Open Error") + , tr ("Cannot open \"%1\" for append: %2") + .arg (f.fileName ()).arg (f.errorString ())); + } +} diff --git a/mainwindow.h b/mainwindow.h index e77f26e..3744761 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -1046,6 +1046,7 @@ private: void vhfWarning(); QChar current_submode () const; // returns QChar {0} if sub mode is // not appropriate + void write_frequency_entry (QString const& file_name); void write_transmit_entry (QString const& file_name); };