diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.cpp b/plugins/channelrx/demodbfm/bfmdemodgui.cpp
index 5ead1ec61..8e8b1e0f0 100644
--- a/plugins/channelrx/demodbfm/bfmdemodgui.cpp
+++ b/plugins/channelrx/demodbfm/bfmdemodgui.cpp
@@ -213,6 +213,8 @@ void BFMDemodGUI::on_clearData_clicked(bool checked)
{
m_bfmDemod->getRDSParser().clearAllFields();
+ ui->go2Text->clear();
+ ui->go2PrevText->clear();
ui->g14ProgServiceNames->clear();
ui->g14MappedFrequencies->clear();
ui->g14AltFrequencies->clear();
@@ -277,6 +279,11 @@ void BFMDemodGUI::on_g00AltFrequenciesBox_activated(int index)
changeFrequency(f);
}
+void BFMDemodGUI::on_go2ClearPrevText_clicked()
+{
+ ui->go2PrevText->clear();
+}
+
void BFMDemodGUI::on_g14MappedFrequencies_activated(int index)
{
(void) index;
@@ -353,6 +360,7 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
m_deviceUISet(deviceUISet),
m_channelMarker(this),
m_rdsTimerCount(0),
+ m_radiotext_AB_flag(false),
m_rate(625000)
{
ui->setupUi(this);
@@ -684,7 +692,16 @@ void BFMDemodGUI::rdsUpdate(bool force)
{
ui->g02Label->setStyleSheet("QLabel { background-color : green; }");
ui->g02CountText->setNum((int) m_bfmDemod->getRDSParser().m_g2_count);
+ bool radiotext_AB_flag = m_bfmDemod->getRDSParser().m_radiotext_AB_flag;
+
+ if (!m_radiotext_AB_flag && radiotext_AB_flag) // B -> A transiition is start of new text
+ {
+ QString oldText = ui->go2Text->text();
+ ui->go2PrevText->setText(oldText);
+ }
+
ui->go2Text->setText(QString(m_bfmDemod->getRDSParser().m_g2_radiotext));
+ m_radiotext_AB_flag = radiotext_AB_flag;
}
else
{
diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.h b/plugins/channelrx/demodbfm/bfmdemodgui.h
index eb2f08a01..b5b561726 100644
--- a/plugins/channelrx/demodbfm/bfmdemodgui.h
+++ b/plugins/channelrx/demodbfm/bfmdemodgui.h
@@ -62,6 +62,7 @@ private:
BFMDemodSettings m_settings;
bool m_doApplySettings;
int m_rdsTimerCount;
+ bool m_radiotext_AB_flag;
SpectrumVis* m_spectrumVis;
@@ -99,6 +100,7 @@ private slots:
void on_g14ProgServiceNames_currentIndexChanged(int index);
void on_clearData_clicked(bool checked);
void on_g00AltFrequenciesBox_activated(int index);
+ void on_go2ClearPrevText_clicked();
void on_g14MappedFrequencies_activated(int index);
void on_g14AltFrequencies_activated(int index);
void onWidgetRolled(QWidget* widget, bool rollDown);
diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.ui b/plugins/channelrx/demodbfm/bfmdemodgui.ui
index 3592997c0..9d24ace6a 100644
--- a/plugins/channelrx/demodbfm/bfmdemodgui.ui
+++ b/plugins/channelrx/demodbfm/bfmdemodgui.ui
@@ -7,7 +7,7 @@
0
0
798
- 472
+ 755
@@ -551,7 +551,7 @@
10
170
791
- 301
+ 281
@@ -565,7 +565,7 @@
- 3
+ 1
-
@@ -1602,8 +1602,52 @@
-
+
+ Current radio text
+
- Radiotext
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 30
+ 16777215
+
+
+
+ Clear previous text
+
+
+
+
+
+
+ :/sweep.png:/sweep.png
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+ Previous radio text
+
+
+
diff --git a/plugins/channelrx/demodbfm/rdsparser.h b/plugins/channelrx/demodbfm/rdsparser.h
index 0e9008c6e..b5747c350 100644
--- a/plugins/channelrx/demodbfm/rdsparser.h
+++ b/plugins/channelrx/demodbfm/rdsparser.h
@@ -80,6 +80,7 @@ public:
bool m_g2_updated;
unsigned int m_g2_count;
char m_g2_radiotext[64+1];
+ bool m_radiotext_AB_flag;
// G3 data
bool m_g3_updated;
@@ -193,7 +194,6 @@ private:
unsigned char pi_country_identification;
unsigned char pi_program_reference_number;
- bool m_radiotext_AB_flag;
bool debug;
bool log;