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;