From c545a835e1ad6f91dd4a9e3d398e57cb2f235240 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Wed, 22 Apr 2026 21:46:32 +0100 Subject: [PATCH] Bring in line with other features. --- plugins/feature/freqdisplay/freqdisplay.cpp | 13 ++++-- plugins/feature/freqdisplay/freqdisplay.h | 2 - .../feature/freqdisplay/freqdisplaygui.cpp | 43 +++++++------------ plugins/feature/freqdisplay/freqdisplaygui.h | 1 + 4 files changed, 27 insertions(+), 32 deletions(-) diff --git a/plugins/feature/freqdisplay/freqdisplay.cpp b/plugins/feature/freqdisplay/freqdisplay.cpp index 6f2f4a990..60e023a85 100644 --- a/plugins/feature/freqdisplay/freqdisplay.cpp +++ b/plugins/feature/freqdisplay/freqdisplay.cpp @@ -82,12 +82,19 @@ QByteArray FreqDisplay::serialize() const bool FreqDisplay::deserialize(const QByteArray& data) { - if (!m_settings.deserialize(data)) { + if (m_settings.deserialize(data)) + { + auto *msg = MsgConfigureFreqDisplay::create(m_settings, QList(), true); + m_inputMessageQueue.push(msg); + return true; + } + else + { m_settings.resetToDefaults(); + auto *msg = MsgConfigureFreqDisplay::create(m_settings, QList(), true); + m_inputMessageQueue.push(msg); return false; } - - return true; } void FreqDisplay::applySettings(const FreqDisplaySettings& settings, const QStringList& settingsKeys, bool force) diff --git a/plugins/feature/freqdisplay/freqdisplay.h b/plugins/feature/freqdisplay/freqdisplay.h index 1aeff8d6f..c5687e431 100644 --- a/plugins/feature/freqdisplay/freqdisplay.h +++ b/plugins/feature/freqdisplay/freqdisplay.h @@ -101,8 +101,6 @@ public: const QStringList& featureSettingsKeys, SWGSDRangel::SWGFeatureSettings& response); - const FreqDisplaySettings& getSettings() const { return m_settings; } - static const char* const m_featureIdURI; static const char* const m_featureId; diff --git a/plugins/feature/freqdisplay/freqdisplaygui.cpp b/plugins/feature/freqdisplay/freqdisplaygui.cpp index 6f0d45de2..d5e5e4850 100644 --- a/plugins/feature/freqdisplay/freqdisplaygui.cpp +++ b/plugins/feature/freqdisplay/freqdisplaygui.cpp @@ -116,10 +116,14 @@ bool FreqDisplayGUI::handleMessage(const Message& message) { qDebug("FreqDisplayGUI::handleMessage: FreqDisplay::MsgConfigureFreqDisplay"); const FreqDisplay::MsgConfigureFreqDisplay& cfg = (FreqDisplay::MsgConfigureFreqDisplay&) message; - m_settings = cfg.getSettings(); - m_doApplySettings = false; + if (cfg.getForce()) { + m_settings = cfg.getSettings(); + } else { + m_settings.applySettings(cfg.getSettingsKeys(), cfg.getSettings()); + } + blockApplySettings(true); displaySettings(); - m_doApplySettings = true; + blockApplySettings(false); updateFrequencyText(); return true; } @@ -203,7 +207,6 @@ FreqDisplayGUI::FreqDisplayGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, ui->frequencyValue->setWordWrap(false); // If true, RollupContents::arrangeRollups uses heightForWidth rather than minimumSizeHint m_freqDisplay->setMessageQueueToGUI(&m_inputMessageQueue); - m_settings = m_freqDisplay->getSettings(); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); connect( @@ -224,6 +227,7 @@ FreqDisplayGUI::FreqDisplayGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, m_settings.setRollupState(&m_rollupState); displaySettings(); + applyAllSettings(); updateFrequencyText(); m_resizer.enableChildMouseTracking(); } @@ -248,42 +252,27 @@ void FreqDisplayGUI::setWorkspaceIndex(int index) m_feature->setWorkspaceIndex(index); } +void FreqDisplayGUI::blockApplySettings(bool block) +{ + m_doApplySettings = !block; +} + void FreqDisplayGUI::displaySettings() { setTitleColor(m_settings.m_rgbColor); setWindowTitle(m_settings.m_title); setTitle(m_settings.m_title); + blockApplySettings(true); - // Populate font combo box with the saved font (or system default if empty) - ui->fontFamily->blockSignals(true); if (!m_settings.m_fontName.isEmpty()) { ui->fontFamily->setCurrentFont(QFont(m_settings.m_fontName)); } - ui->fontFamily->blockSignals(false); - - ui->displayMode->blockSignals(true); ui->displayMode->setCurrentIndex(static_cast(m_settings.m_displayMode)); - ui->displayMode->blockSignals(false); - - ui->speech->blockSignals(true); ui->speech->setChecked(m_settings.m_speechEnabled); - ui->speech->blockSignals(false); - - ui->transparentBackground->blockSignals(true); ui->transparentBackground->setChecked(m_settings.m_transparentBackground); - ui->transparentBackground->blockSignals(false); - - ui->frequencyUnits->blockSignals(true); ui->frequencyUnits->setCurrentIndex(static_cast(m_settings.m_frequencyUnits)); - ui->frequencyUnits->blockSignals(false); - - ui->showUnits->blockSignals(true); ui->showUnits->setChecked(m_settings.m_showUnits); - ui->showUnits->blockSignals(false); - - ui->powerDecimalPlaces->blockSignals(true); ui->powerDecimalPlaces->setValue(m_settings.m_powerDecimalPlaces); - ui->powerDecimalPlaces->blockSignals(false); // Must come after frequencyUnits is set so the range/enabled state is correct updateFreqDecimalSpinbox(); @@ -291,9 +280,9 @@ void FreqDisplayGUI::displaySettings() updateTextColorButton(); updateDropShadowColorButton(); - ui->dropShadow->blockSignals(true); ui->dropShadow->setChecked(m_settings.m_dropShadowEnabled); - ui->dropShadow->blockSignals(false); + + blockApplySettings(false); applyTransparency(); applyTextColor(); diff --git a/plugins/feature/freqdisplay/freqdisplaygui.h b/plugins/feature/freqdisplay/freqdisplaygui.h index 7949b8dea..5031306c0 100644 --- a/plugins/feature/freqdisplay/freqdisplaygui.h +++ b/plugins/feature/freqdisplay/freqdisplaygui.h @@ -146,6 +146,7 @@ private: explicit FreqDisplayGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *feature, QWidget* parent = nullptr); ~FreqDisplayGUI() override; + void blockApplySettings(bool block); void displaySettings(); void applySetting(const QString& settingsKey); void applySettings(const QStringList& settingsKeys, bool force = false);