From 6b67959774c335b6f7a6c0b2fcd1f4e16ef22cb2 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 19 Apr 2026 10:34:01 +0000
Subject: [PATCH] freqdisplay: add text color picker button saved as setting,
default white
Agent-Logs-Url: https://github.com/srcejon/sdrangel/sessions/6d0cceb4-1d01-4c8e-95aa-f203715615cc
Co-authored-by: srcejon <57259258+srcejon@users.noreply.github.com>
---
.../feature/freqdisplay/freqdisplaygui.cpp | 39 ++++++++++++++++++-
plugins/feature/freqdisplay/freqdisplaygui.h | 3 ++
plugins/feature/freqdisplay/freqdisplaygui.ui | 16 ++++++++
.../freqdisplay/freqdisplaysettings.cpp | 10 +++++
.../feature/freqdisplay/freqdisplaysettings.h | 2 +
5 files changed, 69 insertions(+), 1 deletion(-)
diff --git a/plugins/feature/freqdisplay/freqdisplaygui.cpp b/plugins/feature/freqdisplay/freqdisplaygui.cpp
index 741b0bdad..444999474 100644
--- a/plugins/feature/freqdisplay/freqdisplaygui.cpp
+++ b/plugins/feature/freqdisplay/freqdisplaygui.cpp
@@ -16,11 +16,14 @@
// along with this program. If not, see . //
///////////////////////////////////////////////////////////////////////////////////
+#include
#include
#include
#include
#include
#include
+#include
+#include
#include
#include
#include
@@ -76,7 +79,6 @@ FreqDisplayOverlay::FreqDisplayOverlay(QWidget* parent)
m_label = new QLabel(this);
m_label->setAlignment(Qt::AlignCenter);
m_label->setWordWrap(true);
- m_label->setStyleSheet("color: white;");
QVBoxLayout* layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);
@@ -269,7 +271,9 @@ void FreqDisplayGUI::displaySettings()
// Must come after frequencyUnits is set so the range/enabled state is correct
updateFreqDecimalSpinbox();
+ updateTextColorButton();
applyTransparency();
+ applyTextColor();
applySpeech();
updateChannelList();
}
@@ -293,6 +297,7 @@ void FreqDisplayGUI::applySettings(bool force)
settingsKeys.append("showUnits");
settingsKeys.append("freqDecimalPlaces");
settingsKeys.append("powerDecimalPlaces");
+ settingsKeys.append("textColor");
m_freqDisplay->applySettings(m_settings, settingsKeys, force);
}
@@ -561,6 +566,7 @@ void FreqDisplayGUI::applyTransparency()
// Position the overlay at the current screen position of FreqDisplayGUI.
m_overlay->move(mapToGlobal(QPoint(0, 0)));
m_overlay->resize(size());
+ applyTextColor();
m_overlay->show();
}
hide();
@@ -579,6 +585,7 @@ void FreqDisplayGUI::applyTransparency()
m_overlay = nullptr;
}
show();
+ applyTextColor();
updateFrequencyFont();
}
}
@@ -594,6 +601,36 @@ void FreqDisplayGUI::applySpeech()
#endif
}
+void FreqDisplayGUI::applyTextColor()
+{
+ const QString styleSheet = QString("color: %1;").arg(m_settings.m_textColor.name());
+ if (m_overlay) {
+ m_overlay->label()->setStyleSheet(styleSheet);
+ } else {
+ ui->frequencyValue->setStyleSheet(styleSheet);
+ }
+}
+
+void FreqDisplayGUI::updateTextColorButton()
+{
+ QPixmap pm(16, 16);
+ pm.fill(m_settings.m_textColor);
+ ui->textColor->setIcon(pm);
+}
+
+void FreqDisplayGUI::on_textColor_clicked()
+{
+ const QColor color = QColorDialog::getColor(
+ m_settings.m_textColor, this, tr("Select text color"), QColorDialog::DontUseNativeDialog);
+ if (color.isValid())
+ {
+ m_settings.m_textColor = color;
+ updateTextColorButton();
+ applyTextColor();
+ applySettings();
+ }
+}
+
void FreqDisplayGUI::on_displayMode_currentIndexChanged(int index)
{
m_settings.m_displayMode = static_cast(index);
diff --git a/plugins/feature/freqdisplay/freqdisplaygui.h b/plugins/feature/freqdisplay/freqdisplaygui.h
index 0ec98f7cc..b0a45e699 100644
--- a/plugins/feature/freqdisplay/freqdisplaygui.h
+++ b/plugins/feature/freqdisplay/freqdisplaygui.h
@@ -120,6 +120,8 @@ private:
void updateFreqDecimalSpinbox();
void applyTransparency();
void applySpeech();
+ void applyTextColor();
+ void updateTextColorButton();
QString formatFrequency(qint64 frequencyHz) const;
private slots:
@@ -133,6 +135,7 @@ private slots:
void on_showUnits_toggled(bool checked);
void on_freqDecimalPlaces_valueChanged(int value);
void on_powerDecimalPlaces_valueChanged(int value);
+ void on_textColor_clicked();
void pollSelectedChannel();
void onExitTransparentMode();
#ifdef QT_TEXTTOSPEECH_FOUND
diff --git a/plugins/feature/freqdisplay/freqdisplaygui.ui b/plugins/feature/freqdisplay/freqdisplaygui.ui
index 5dee0f78b..335d4444b 100644
--- a/plugins/feature/freqdisplay/freqdisplaygui.ui
+++ b/plugins/feature/freqdisplay/freqdisplaygui.ui
@@ -270,6 +270,22 @@ When in transparent mode:
+ -
+
+
+
+ 24
+ 24
+
+
+
+ Select color for the frequency / power text
+
+
+
+
+
+
diff --git a/plugins/feature/freqdisplay/freqdisplaysettings.cpp b/plugins/feature/freqdisplay/freqdisplaysettings.cpp
index 6cc747445..c73696a20 100644
--- a/plugins/feature/freqdisplay/freqdisplaysettings.cpp
+++ b/plugins/feature/freqdisplay/freqdisplaysettings.cpp
@@ -16,6 +16,8 @@
// along with this program. If not, see . //
///////////////////////////////////////////////////////////////////////////////////
+#include
+
#include "util/simpleserializer.h"
#include "freqdisplaysettings.h"
@@ -39,6 +41,7 @@ void FreqDisplaySettings::resetToDefaults()
m_showUnits = true;
m_freqDecimalPlaces = 3;
m_powerDecimalPlaces = 1;
+ m_textColor = Qt::white;
}
QByteArray FreqDisplaySettings::serialize() const
@@ -57,6 +60,7 @@ QByteArray FreqDisplaySettings::serialize() const
s.writeBool(10, m_showUnits);
s.writeS32(11, m_freqDecimalPlaces);
s.writeS32(12, m_powerDecimalPlaces);
+ s.writeU32(13, m_textColor.rgba());
return s.final();
}
@@ -93,6 +97,9 @@ bool FreqDisplaySettings::deserialize(const QByteArray& data)
d.readBool(10, &m_showUnits, true);
d.readS32(11, &m_freqDecimalPlaces, 3);
d.readS32(12, &m_powerDecimalPlaces, 1);
+ quint32 rgba = QColor(Qt::white).rgba();
+ d.readU32(13, &rgba, QColor(Qt::white).rgba());
+ m_textColor = QColor::fromRgba(rgba);
return true;
}
@@ -135,4 +142,7 @@ void FreqDisplaySettings::applySettings(const QStringList& settingsKeys, const F
if (settingsKeys.contains("powerDecimalPlaces")) {
m_powerDecimalPlaces = settings.m_powerDecimalPlaces;
}
+ if (settingsKeys.contains("textColor")) {
+ m_textColor = settings.m_textColor;
+ }
}
diff --git a/plugins/feature/freqdisplay/freqdisplaysettings.h b/plugins/feature/freqdisplay/freqdisplaysettings.h
index fa5d5622f..fceb2d825 100644
--- a/plugins/feature/freqdisplay/freqdisplaysettings.h
+++ b/plugins/feature/freqdisplay/freqdisplaysettings.h
@@ -20,6 +20,7 @@
#define INCLUDE_FEATURE_FREQDISPLAYSETTINGS_H_
#include
+#include
#include
#include
@@ -50,6 +51,7 @@ struct FreqDisplaySettings
bool m_showUnits; //!< Whether to append unit labels to displayed values
int m_freqDecimalPlaces; //!< Decimal places for frequency value (max depends on units: kHz→3, MHz→6, GHz→9)
int m_powerDecimalPlaces; //!< Decimal places for power value (0–3)
+ QColor m_textColor; //!< Color of the frequency / power text
FreqDisplaySettings();
~FreqDisplaySettings() = default;