From e7e82a12b01584a3d07dcd147c95f7e99275aadb Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 1 Aug 2021 10:03:58 +0200 Subject: [PATCH] Spectrum markers: make dialog dynamic --- sdrgui/gui/glspectrum.h | 6 +++-- sdrgui/gui/glspectrumgui.cpp | 35 ++++++++++++++++++---------- sdrgui/gui/glspectrumgui.h | 3 +++ sdrgui/gui/spectrummarkersdialog.cpp | 23 +++--------------- sdrgui/gui/spectrummarkersdialog.h | 10 ++++---- sdrgui/gui/spectrummarkersdialog.ui | 2 +- 6 files changed, 38 insertions(+), 41 deletions(-) diff --git a/sdrgui/gui/glspectrum.h b/sdrgui/gui/glspectrum.h index 6318001ec..807178b4f 100644 --- a/sdrgui/gui/glspectrum.h +++ b/sdrgui/gui/glspectrum.h @@ -154,9 +154,13 @@ public: } void setSpectrumVis(SpectrumVis *spectrumVis) { m_spectrumVis = spectrumVis; } const QList& getHistogramMarkers() const { return m_histogramMarkers; } + QList& getHistogramMarkers() { return m_histogramMarkers; } void setHistogramMarkers(const QList& histogramMarkers); const QList& getWaterfallMarkers() const { return m_waterfallMarkers; } + QList& getWaterfallMarkers() { return m_waterfallMarkers; } void setWaterfallMarkers(const QList& waterfallMarkers); + void updateHistogramMarkers(); + void updateWaterfallMarkers(); private: struct ChannelMarkerState { @@ -327,8 +331,6 @@ private: bool topHalf, const QRectF& glRect); void formatTextInfo(QString& info); - void updateHistogramMarkers(); - void updateWaterfallMarkers(); private slots: void cleanup(); diff --git a/sdrgui/gui/glspectrumgui.cpp b/sdrgui/gui/glspectrumgui.cpp index c007b653c..e3682b2fe 100644 --- a/sdrgui/gui/glspectrumgui.cpp +++ b/sdrgui/gui/glspectrumgui.cpp @@ -340,22 +340,19 @@ void GLSpectrumGUI::on_markers_clicked(bool checked) return; } - QList histogramMarkers = m_glSpectrum->getHistogramMarkers(); - QList waterfallMarkers = m_glSpectrum->getWaterfallMarkers(); - SpectrumMarkersDialog markersDialog(histogramMarkers, waterfallMarkers, this); + SpectrumMarkersDialog markersDialog( + m_glSpectrum->getHistogramMarkers(), + m_glSpectrum->getWaterfallMarkers(), + this + ); + markersDialog.setCenterFrequency(m_glSpectrum->getCenterFrequency()); markersDialog.setPower(m_glSpectrum->getPowerMax() / 2.0f); - if (markersDialog.exec() == QDialog::Accepted) - { - if (markersDialog.histogramMarkersChanged()) { - m_glSpectrum->setHistogramMarkers(histogramMarkers); - } + connect(&markersDialog, SIGNAL(updateHistogram()), this, SLOT(updateHistogramMarkers())); + connect(&markersDialog, SIGNAL(updateWaterfall()), this, SLOT(updateWaterfallMarkers())); - if (markersDialog.waterfallMarkersChanged()) { - m_glSpectrum->setWaterfallMarkers(waterfallMarkers); - } - } + markersDialog.exec(); } void GLSpectrumGUI::on_refLevel_valueChanged(int value) @@ -691,3 +688,17 @@ void GLSpectrumGUI::openWebsocketSpectrumSettingsDialog(const QPoint& p) applySettings(); } } + +void GLSpectrumGUI::updateHistogramMarkers() +{ + if (m_glSpectrum) { + m_glSpectrum->updateHistogramMarkers(); + } +} + +void GLSpectrumGUI::updateWaterfallMarkers() +{ + if (m_glSpectrum) { + m_glSpectrum->updateWaterfallMarkers(); + } +} diff --git a/sdrgui/gui/glspectrumgui.h b/sdrgui/gui/glspectrumgui.h index f8e0aba26..b90798ebc 100644 --- a/sdrgui/gui/glspectrumgui.h +++ b/sdrgui/gui/glspectrumgui.h @@ -111,6 +111,9 @@ private slots: void handleInputMessages(); void openWebsocketSpectrumSettingsDialog(const QPoint& p); + + void updateHistogramMarkers(); + void updateWaterfallMarkers(); }; #endif // INCLUDE_GLSPECTRUMGUI_H diff --git a/sdrgui/gui/spectrummarkersdialog.cpp b/sdrgui/gui/spectrummarkersdialog.cpp index 8d7c2fbca..eda9ee68d 100644 --- a/sdrgui/gui/spectrummarkersdialog.cpp +++ b/sdrgui/gui/spectrummarkersdialog.cpp @@ -30,8 +30,6 @@ SpectrumMarkersDialog::SpectrumMarkersDialog( ui(new Ui::SpectrumMarkersDialog), m_histogramMarkers(histogramMarkers), m_waterfallMarkers(waterfallMarkers), - m_histogramMarkersChanged(false), - m_waterfallMarkersChanged(false), m_histogramMarkerIndex(0), m_centerFrequency(0), m_power(0.5f) @@ -73,18 +71,6 @@ void SpectrumMarkersDialog::displayHistogramMarker() } } -void SpectrumMarkersDialog::accept() -{ - QDialog::accept(); -} - -void SpectrumMarkersDialog::reject() -{ - m_histogramMarkersChanged = false; - m_waterfallMarkersChanged = false; - QDialog::reject(); -} - void SpectrumMarkersDialog::on_markerFrequency_changed(qint64 value) { if (m_histogramMarkers.size() == 0) { @@ -92,7 +78,7 @@ void SpectrumMarkersDialog::on_markerFrequency_changed(qint64 value) } m_histogramMarkers[m_histogramMarkerIndex].m_frequency = value; - m_histogramMarkersChanged = true; + emit updateHistogram(); } void SpectrumMarkersDialog::on_fixedPower_valueChanged(int value) @@ -104,7 +90,7 @@ void SpectrumMarkersDialog::on_fixedPower_valueChanged(int value) float powerDB = value / 10.0f; ui->fixedPowerText->setText(QString::number(powerDB, 'f', 1)); m_histogramMarkers[m_histogramMarkerIndex].m_power = CalcDb::powerFromdB(powerDB); - m_histogramMarkersChanged = true; + emit updateHistogram(); } void SpectrumMarkersDialog::on_marker_valueChanged(int value) @@ -129,7 +115,7 @@ void SpectrumMarkersDialog::on_setReference_clicked(bool checked) m_histogramMarkers[0] = m_histogramMarkers[m_histogramMarkerIndex]; m_histogramMarkers[m_histogramMarkerIndex] = marker0; displayHistogramMarker(); - m_histogramMarkersChanged = true; + emit updateHistogram(); } void SpectrumMarkersDialog::on_markerAdd_clicked(bool checked) @@ -146,7 +132,6 @@ void SpectrumMarkersDialog::on_markerAdd_clicked(bool checked) m_histogramMarkerIndex = m_histogramMarkers.size() - 1; ui->marker->setMaximum(m_histogramMarkers.size() - 1); displayHistogramMarker(); - m_histogramMarkersChanged = true; } void SpectrumMarkersDialog::on_markerDel_clicked(bool checked) @@ -162,7 +147,6 @@ void SpectrumMarkersDialog::on_markerDel_clicked(bool checked) m_histogramMarkerIndex : m_histogramMarkerIndex - 1; ui->marker->setMaximum(m_histogramMarkers.size() - 1); displayHistogramMarker(); - m_histogramMarkersChanged = true; } void SpectrumMarkersDialog::on_powerMode_currentIndexChanged(int index) @@ -172,5 +156,4 @@ void SpectrumMarkersDialog::on_powerMode_currentIndexChanged(int index) } m_histogramMarkers[m_histogramMarkerIndex].m_markerType = (SpectrumHistogramMarkerType) index; - m_histogramMarkersChanged = true; } diff --git a/sdrgui/gui/spectrummarkersdialog.h b/sdrgui/gui/spectrummarkersdialog.h index 365e609aa..446f12259 100644 --- a/sdrgui/gui/spectrummarkersdialog.h +++ b/sdrgui/gui/spectrummarkersdialog.h @@ -39,8 +39,6 @@ public: QWidget* parent = nullptr ); ~SpectrumMarkersDialog(); - bool histogramMarkersChanged() const { return m_histogramMarkersChanged; } - bool waterfallMarkersChanged() const { return m_waterfallMarkersChanged; } void setCenterFrequency(qint64 centerFrequency) { m_centerFrequency = centerFrequency; } void setPower(float power) { m_power = power; } @@ -48,8 +46,6 @@ private: Ui::SpectrumMarkersDialog* ui; QList& m_histogramMarkers; QList& m_waterfallMarkers; - bool m_histogramMarkersChanged; - bool m_waterfallMarkersChanged; int m_histogramMarkerIndex; qint64 m_centerFrequency; float m_power; @@ -64,8 +60,10 @@ private slots: void on_markerAdd_clicked(bool checked); void on_markerDel_clicked(bool checked); void on_powerMode_currentIndexChanged(int index); - void accept(); - void reject(); + +signals: + void updateHistogram(); + void updateWaterfall(); }; #endif // SDRBASE_GUI_SPECTRUMMARKERSDIALOG_H_ diff --git a/sdrgui/gui/spectrummarkersdialog.ui b/sdrgui/gui/spectrummarkersdialog.ui index 1791c11c8..529cf2e0f 100644 --- a/sdrgui/gui/spectrummarkersdialog.ui +++ b/sdrgui/gui/spectrummarkersdialog.ui @@ -393,7 +393,7 @@ Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Close