Added an option to configuration for persistent band/call/rx activity

This commit is contained in:
Jordan Sherer 2019-06-12 23:54:02 -04:00
parent 63627b8b92
commit d91f96da42
5 changed files with 87 additions and 70 deletions

View File

@ -629,6 +629,7 @@ private:
qint32 RxBandwidth_;
double degrade_;
double txDelay_;
bool reset_activity_;
bool check_for_updates_;
bool id_after_73_;
bool tx_qsy_allowed_;
@ -753,6 +754,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::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_;}
bool Configuration::tx_qsy_allowed () const {return m_->tx_qsy_allowed_;}
@ -1432,6 +1434,7 @@ void Configuration::impl::initialize_models ()
ui_->sound_cq_path_display_label->setText(sound_cq_path_);
ui_->sound_dm_path_display_label->setText(sound_dm_path_);
ui_->sound_am_path_display_label->setText(sound_am_path_);
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_);
ui_->tx_qsy_check_box->setChecked (tx_qsy_allowed_);
@ -1716,6 +1719,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 ();
reset_activity_ = settings_->value("ResetActivity", false).toBool();
check_for_updates_ = settings_->value("CheckForUpdates", true).toBool();
id_after_73_ = settings_->value ("After73", false).toBool ();
tx_qsy_allowed_ = settings_->value ("TxQSYAllowed", false).toBool ();
@ -1895,6 +1899,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 ("ResetActivity", reset_activity_);
settings_->setValue ("CheckForUpdates", check_for_updates_);
settings_->setValue ("After73", id_after_73_);
settings_->setValue ("TxQSYAllowed", tx_qsy_allowed_);
@ -2439,6 +2444,7 @@ void Configuration::impl::accept ()
aggressive_ = ui_->sbAggressive->value ();
degrade_ = ui_->sbDegrade->value ();
RxBandwidth_ = ui_->sbBandwidth->value ();
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 ();
tx_qsy_allowed_ = ui_->tx_qsy_check_box->isChecked ();

View File

@ -119,6 +119,7 @@ public:
qint32 RxBandwidth() const;
double degrade() const;
double txDelay() const;
bool reset_activity() const;
bool check_for_updates() const;
bool id_after_73 () const;
bool tx_qsy_allowed () const;

View File

@ -36,7 +36,7 @@
<item>
<widget class="QTabWidget" name="tabWidget_2">
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="stationTab">
<attribute name="title">
@ -279,7 +279,7 @@
<x>0</x>
<y>0</y>
<width>724</width>
<height>779</height>
<height>808</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_26">
@ -401,6 +401,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="reset_activity_check_box">
<property name="text">
<string>Reset the Band Activity, Call Activity, and RX history at startup</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkForUpdates_checkBox">
<property name="text">

View File

@ -392,6 +392,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
m_multi_settings {multi_settings},
m_configurations_button {0},
m_settings {multi_settings->settings ()},
m_settings_read {false},
ui(new Ui::MainWindow),
m_config {temp_directory, m_settings, this},
m_WSPR_band_hopping {m_settings, &m_config, this},
@ -1651,7 +1652,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
m_txTextDirtyDebounce.setSingleShot(true);
connect(&m_txTextDirtyDebounce, &QTimer::timeout, this, &MainWindow::refreshTextDisplay);
QTimer::singleShot(0, this, &MainWindow::initializeDummyData);
QTimer::singleShot(500, this, &MainWindow::initializeDummyData);
// this must be the last statement of constructor
if (!m_valid) throw std::runtime_error {"Fatal initialization exception"};
@ -2190,8 +2191,7 @@ void MainWindow::readSettings()
ui->actionShow_Tooltips->setChecked(m_settings->value("ShowTooltips", true).toBool());
ui->actionShow_Statusbar->setChecked(m_settings->value("ShowStatusbar",true).toBool());
ui->statusBar->setVisible(ui->actionShow_Statusbar->isChecked());
ui->textEditRX->setHtml(m_settings->value("RXActivity", "").toString());
ui->textEditRX->setHtml(m_config.reset_activity() ? "" : m_settings->value("RXActivity", "").toString());
m_settings->endGroup();
// do this outside of settings group because it uses groups internally
@ -2288,6 +2288,9 @@ void MainWindow::readSettings()
m_audioThreadPriority = static_cast<QThread::Priority> (m_settings->value ("Audio/ThreadPriority", QThread::HighPriority).toInt () % 8);
m_settings->endGroup ();
if(m_config.reset_activity()){
// NOOP
} else {
m_settings->beginGroup("CallActivity");
foreach(auto call, m_settings->allKeys()){
@ -2321,8 +2324,11 @@ void MainWindow::readSettings()
logCallActivity(cd, false);
}
m_settings->endGroup();
}
if (displayMsgAvg) on_actionMessage_averaging_triggered();
m_settings_read = true;
}
void MainWindow::set_application_font (QFont const& font)
@ -3228,6 +3234,38 @@ Radio::Frequency MainWindow::dialFrequency() {
m_rigState.tx_frequency () : m_rigState.frequency ()};
}
void MainWindow::updateCurrentBand(){
QVariant state = ui->readFreq->property("state");
if(!state.isValid()){
return;
}
auto dial_frequency = dialFrequency();
auto const& band_name = m_config.bands ()->find(dial_frequency);
if (m_lastBand == band_name){
return;
}
cacheActivity(m_lastBand);
// clear activity on startup if asked or on when the previous band is not empty
if(m_config.reset_activity() || !m_lastBand.isEmpty()){
clearActivity();
}
// only change this when necessary as we get called a lot and it
// would trash any user input to the band combo box line edit
ui->bandComboBox->setCurrentText (band_name);
m_wideGraph->setRxBand (band_name);
qDebug() << "setting band" << band_name;
m_lastBand = band_name;
band_changed(dial_frequency);
restoreActivity(m_lastBand);
}
void MainWindow::displayDialFrequency (){
#if 0
qDebug() << "rx nominal" << m_freqNominal;
@ -3240,48 +3278,6 @@ void MainWindow::displayDialFrequency (){
// lookup band
auto const& band_name = m_config.bands ()->find (dial_frequency);
if (m_lastBand != band_name){
cacheActivity(m_lastBand);
// don't clear activity on startup
if(!m_lastBand.isEmpty()){
clearActivity();
}
// only change this when necessary as we get called a lot and it
// would trash any user input to the band combo box line edit
ui->bandComboBox->setCurrentText (band_name);
m_wideGraph->setRxBand (band_name);
m_lastBand = band_name;
band_changed(dial_frequency);
restoreActivity(m_lastBand);
}
// TODO: jsherer - this doesn't validate anything else right? we are disabling this because as long as you're in a band, it's valid.
/*
// search working frequencies for one we are within 10kHz of (1 Mhz
// of on VHF and up)
bool valid {false};
quint64 min_offset {99999999};
for (auto const& item : *m_config.frequencies ())
{
// we need to do specific checks for above and below here to
// ensure that we can use unsigned Radio::Frequency since we
// potentially use the full 64-bit unsigned range.
auto const& working_frequency = item.frequency_;
auto const& offset = dial_frequency > working_frequency ?
dial_frequency - working_frequency :
working_frequency - dial_frequency;
if (offset < min_offset) {
min_offset = offset;
}
}
if (min_offset < 10000u || (m_config.enable_VHF_features() && min_offset < 1000000u)) {
valid = true;
}
*/
bool valid = !band_name.isEmpty();
update_dynamic_property (ui->labDialFreq, "oob", !valid);
@ -5874,6 +5870,7 @@ void MainWindow::restoreActivity(QString key){
}
void MainWindow::clearActivity(){
qDebug() << "clear activity";
m_bandActivity.clear();
m_callActivity.clear();
m_callSeenHeartbeat.clear();
@ -8871,6 +8868,7 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
m_tx_when_ready = false;
}
m_rigState = s;
auto old_freqNominal = m_freqNominal;
if (!old_freqNominal)
{
@ -8878,6 +8876,7 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
// with bogus Tx frequencies
m_freqNominal = s.frequency ();
}
if (old_state.online () == false && s.online () == true)
{
// initializing
@ -8885,6 +8884,7 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
ui->autoReplyButton->setChecked(!m_config.autoreply_off_at_startup());
}
if (s.frequency () != old_state.frequency () || s.split () != m_splitMode)
{
m_splitMode = s.split ();
@ -8943,6 +8943,7 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
// ensure frequency display is correct
if (m_astroWidget && old_state.ptt () != s.ptt ()) setRig ();
updateCurrentBand();
displayDialFrequency ();
update_dynamic_property (ui->readFreq, "state", "ok");
ui->readFreq->setEnabled (false);

View File

@ -462,6 +462,7 @@ private:
MultiSettings * m_multi_settings;
QPushButton * m_configurations_button;
QSettings * m_settings;
bool m_settings_read;
QScopedPointer<Ui::MainWindow> ui;
// other windows
@ -940,6 +941,7 @@ private:
void pskLogReport(QString mode, int offset, int snr, QString callsign, QString grid);
void aprsLogReport(int offset, int snr, QString callsign, QString grid);
Radio::Frequency dialFrequency();
void updateCurrentBand();
void displayDialFrequency ();
void transmitDisplay (bool);
void locationChange(QString const& location);