diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp b/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp index 6c334d272..a8c6f8809 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp @@ -140,6 +140,7 @@ bool ChannelAnalyzerNGGUI::deserialize(const QByteArray& data) blockApplySettings(false); m_channelMarker.blockSignals(false); + m_channelMarker.emitChangedByAPI(); ui->spanLog2->setCurrentIndex(spanLog2); setNewFinalRate(spanLog2); @@ -220,8 +221,9 @@ void ChannelAnalyzerNGGUI::handleInputMessages() } } -void ChannelAnalyzerNGGUI::channelMarkerChanged() +void ChannelAnalyzerNGGUI::channelMarkerChangedByCursor() { + ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); applySettings(); } @@ -413,13 +415,14 @@ ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *de ui->glScope->connectTimer(MainWindow::getInstance()->getMasterTimer()); connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); + m_channelMarker.blockSignals(true); m_channelMarker.setColor(Qt::gray); m_channelMarker.setBandwidth(m_rate); m_channelMarker.setSidebands(ChannelMarker::usb); m_channelMarker.setCenterFrequency(0); - m_channelMarker.setVisible(true); - - connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged())); + m_channelMarker.blockSignals(false); + m_channelMarker.setVisible(true); // activate signal on the last setting only + setTitleColor(m_channelMarker.getColor()); m_deviceUISet->registerRxChannelInstance(ChannelAnalyzerNG::m_channelID, this); m_deviceUISet->addChannelMarker(&m_channelMarker); @@ -428,6 +431,7 @@ ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *de ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope); + connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor())); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); applySettings(); @@ -554,9 +558,6 @@ void ChannelAnalyzerNGGUI::applySettings() { if (m_doApplySettings) { - setTitleColor(m_channelMarker.getColor()); - ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); - int sampleRate = getRequestedChannelSampleRate(); ChannelAnalyzerNG::MsgConfigureChannelizer *msgChannelizer = ChannelAnalyzerNG::MsgConfigureChannelizer::create(sampleRate, m_channelMarker.getCenterFrequency()); @@ -579,15 +580,11 @@ void ChannelAnalyzerNGGUI::applySettings() void ChannelAnalyzerNGGUI::leaveEvent(QEvent*) { - blockApplySettings(true); m_channelMarker.setHighlighted(false); - blockApplySettings(false); } void ChannelAnalyzerNGGUI::enterEvent(QEvent*) { - blockApplySettings(true); m_channelMarker.setHighlighted(true); - blockApplySettings(false); } diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.h b/plugins/channelrx/chanalyzerng/chanalyzernggui.h index b1b89d018..c50d9cf0b 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.h +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.h @@ -53,18 +53,8 @@ public: virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } virtual bool handleMessage(const Message& message); -private slots: - void channelMarkerChanged(); - void on_deltaFrequency_changed(qint64 value); - void on_channelSampleRate_changed(quint64 value); - void on_useRationalDownsampler_toggled(bool checked); - void on_BW_valueChanged(int value); - void on_lowCut_valueChanged(int value); - void on_spanLog2_currentIndexChanged(int index); - void on_ssb_toggled(bool checked); - void onWidgetRolled(QWidget* widget, bool rollDown); - void handleInputMessages(); - void tick(); +public slots: + void channelMarkerChangedByCursor(); private: Ui::ChannelAnalyzerNGGUI* ui; @@ -96,6 +86,18 @@ private: void leaveEvent(QEvent*); void enterEvent(QEvent*); + +private slots: + void on_deltaFrequency_changed(qint64 value); + void on_channelSampleRate_changed(quint64 value); + void on_useRationalDownsampler_toggled(bool checked); + void on_BW_valueChanged(int value); + void on_lowCut_valueChanged(int value); + void on_spanLog2_currentIndexChanged(int index); + void on_ssb_toggled(bool checked); + void onWidgetRolled(QWidget* widget, bool rollDown); + void handleInputMessages(); + void tick(); }; #endif // INCLUDE_CHANNELANALYZERNGGUI_H diff --git a/plugins/channelrx/demodam/amdemodgui.cpp b/plugins/channelrx/demodam/amdemodgui.cpp index 5407be9df..60ecb2364 100644 --- a/plugins/channelrx/demodam/amdemodgui.cpp +++ b/plugins/channelrx/demodam/amdemodgui.cpp @@ -94,15 +94,9 @@ bool AMDemodGUI::handleMessage(const Message& message __attribute__((unused))) return false; } -void AMDemodGUI::channelMarkerChanged() +void AMDemodGUI::channelMarkerChangedByCursor() { - setWindowTitle(m_channelMarker.getTitle()); - m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency(); - m_settings.m_udpAddress = m_channelMarker.getUDPAddress(), - m_settings.m_udpPort = m_channelMarker.getUDPSendPort(), - m_settings.m_rgbColor = m_channelMarker.getColor().rgb(); - displayUDPAddress(); - //m_settings.m_channelMarkerBytes = m_channelMarker.serialize(); + ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); applySettings(); } @@ -166,6 +160,17 @@ void AMDemodGUI::onMenuDialogCalled(const QPoint &p) BasicChannelSettingsDialog dialog(&m_channelMarker, this); dialog.move(p); dialog.exec(); + + m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency(); + m_settings.m_udpAddress = m_channelMarker.getUDPAddress(), + m_settings.m_udpPort = m_channelMarker.getUDPSendPort(), + m_settings.m_rgbColor = m_channelMarker.getColor().rgb(); + + setWindowTitle(m_channelMarker.getTitle()); + setTitleColor(m_settings.m_rgbColor); + displayUDPAddress(); + + applySettings(); } AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : @@ -192,23 +197,26 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999); ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue); + m_channelMarker.blockSignals(true); m_channelMarker.setColor(Qt::yellow); m_channelMarker.setBandwidth(5000); m_channelMarker.setCenterFrequency(0); m_channelMarker.setTitle("AM Demodulator"); m_channelMarker.setUDPAddress("127.0.0.1"); m_channelMarker.setUDPSendPort(9999); - m_channelMarker.setVisible(true); + m_channelMarker.blockSignals(false); + m_channelMarker.setVisible(true); // activate signal on the last setting only + setTitleColor(m_channelMarker.getColor()); m_settings.setChannelMarker(&m_channelMarker); - connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged())); - m_deviceUISet->registerRxChannelInstance(AMDemod::m_channelID, this); m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); - displaySettings(); + connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor())); + + displaySettings(); applySettings(true); } @@ -234,7 +242,6 @@ void AMDemodGUI::applySettings(bool force) 48000, m_channelMarker.getCenterFrequency()); m_amDemod->getInputMessageQueue()->push(channelConfigMsg); - ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); AMDemod::MsgConfigureAMDemod* message = AMDemod::MsgConfigureAMDemod::create( m_settings, force); m_amDemod->getInputMessageQueue()->push(message); @@ -246,14 +253,17 @@ void AMDemodGUI::displaySettings() m_channelMarker.blockSignals(true); m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset); m_channelMarker.setBandwidth(m_settings.m_rfBandwidth); - m_channelMarker.setColor(m_settings.m_rgbColor); - setTitleColor(m_settings.m_rgbColor); m_channelMarker.blockSignals(false); + m_channelMarker.setColor(m_settings.m_rgbColor); // activate signal on the last setting only + setTitleColor(m_settings.m_rgbColor); setWindowTitle(m_channelMarker.getTitle()); + displayUDPAddress(); blockApplySettings(true); + ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); + int displayValue = m_settings.m_rfBandwidth/100.0; ui->rfBW->setValue(displayValue); ui->rfBWText->setText(QString("%1 kHz").arg(displayValue / 10.0, 0, 'f', 1)); @@ -273,21 +283,17 @@ void AMDemodGUI::displaySettings() void AMDemodGUI::displayUDPAddress() { - ui->copyAudioToUDP->setToolTip(QString("Copy audio output to UDP %1:%2").arg(m_channelMarker.getUDPAddress()).arg(m_channelMarker.getUDPSendPort())); + ui->copyAudioToUDP->setToolTip(QString("Copy audio output to UDP %1:%2").arg(m_settings.m_udpAddress).arg(m_settings.m_udpPort)); } void AMDemodGUI::leaveEvent(QEvent*) { - blockApplySettings(true); m_channelMarker.setHighlighted(false); - blockApplySettings(false); } void AMDemodGUI::enterEvent(QEvent*) { - blockApplySettings(true); m_channelMarker.setHighlighted(true); - blockApplySettings(false); } void AMDemodGUI::tick() diff --git a/plugins/channelrx/demodam/amdemodgui.h b/plugins/channelrx/demodam/amdemodgui.h index 2a0372cb0..9379b70fe 100644 --- a/plugins/channelrx/demodam/amdemodgui.h +++ b/plugins/channelrx/demodam/amdemodgui.h @@ -11,8 +11,6 @@ class PluginAPI; class DeviceUISet; -class ThreadedBasebandSampleSink; -class DownChannelizer; class AMDemod; class BasebandSampleSink; @@ -38,18 +36,8 @@ public: virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } virtual bool handleMessage(const Message& message); -private slots: - void channelMarkerChanged(); - void on_deltaFrequency_changed(qint64 value); - void on_bandpassEnable_toggled(bool checked); - void on_rfBW_valueChanged(int value); - void on_volume_valueChanged(int value); - void on_squelch_valueChanged(int value); - void on_audioMute_toggled(bool checked); - void on_copyAudioToUDP_toggled(bool copy); - void onWidgetRolled(QWidget* widget, bool rollDown); - void onMenuDialogCalled(const QPoint& p); - void tick(); +public slots: + void channelMarkerChangedByCursor(); private: Ui::AMDemodGUI* ui; @@ -59,8 +47,6 @@ private: AMDemodSettings m_settings; bool m_doApplySettings; -// ThreadedBasebandSampleSink* m_threadedChannelizer; -// DownChannelizer* m_channelizer; AMDemod* m_amDemod; bool m_squelchOpen; uint32_t m_tickCount; @@ -76,6 +62,18 @@ private: void leaveEvent(QEvent*); void enterEvent(QEvent*); + +private slots: + void on_deltaFrequency_changed(qint64 value); + void on_bandpassEnable_toggled(bool checked); + void on_rfBW_valueChanged(int value); + void on_volume_valueChanged(int value); + void on_squelch_valueChanged(int value); + void on_audioMute_toggled(bool checked); + void on_copyAudioToUDP_toggled(bool copy); + void onWidgetRolled(QWidget* widget, bool rollDown); + void onMenuDialogCalled(const QPoint& p); + void tick(); }; #endif // INCLUDE_AMDEMODGUI_H