diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp b/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp index ac38c5e72..af2e87934 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp @@ -263,6 +263,8 @@ void ChannelAnalyzerNGGUI::on_spanLog2_currentIndexChanged(int index) void ChannelAnalyzerNGGUI::on_ssb_toggled(bool checked) { + setFiltersUIBoundaries(); + if (checked) { if (ui->BW->value() < 0) { @@ -276,10 +278,14 @@ void ChannelAnalyzerNGGUI::on_ssb_toggled(bool checked) ui->glSpectrum->setSsbSpectrum(true); on_lowCut_valueChanged(m_channelMarker.getLowCutoff()/100); + + ui->lowCut->setEnabled(true); } else { - m_channelMarker.setSidebands(ChannelMarker::dsb); + ui->lowCut->setEnabled(false); + + m_channelMarker.setSidebands(ChannelMarker::dsb); ui->glSpectrum->setCenterFrequency(0); ui->glSpectrum->setSampleRate(m_rate); @@ -397,29 +403,10 @@ bool ChannelAnalyzerNGGUI::setNewRate(int spanLog2) //m_rate = 48000 / (1<getSampleRate() / (1<BW->value() < -m_rate/200) { - ui->BW->setValue(-m_rate/200); - m_channelMarker.setBandwidth(-m_rate*2); - } else if (ui->BW->value() > m_rate/200) { - ui->BW->setValue(m_rate/200); - m_channelMarker.setBandwidth(m_rate*2); - } - - if (ui->lowCut->value() < -m_rate/200) { - ui->lowCut->setValue(-m_rate/200); - m_channelMarker.setLowCutoff(-m_rate); - } else if (ui->lowCut->value() > m_rate/200) { - ui->lowCut->setValue(m_rate/200); - m_channelMarker.setLowCutoff(m_rate); - } - - ui->BW->setMinimum(-m_rate/200); - ui->lowCut->setMinimum(-m_rate/200); - ui->BW->setMaximum(m_rate/200); - ui->lowCut->setMaximum(m_rate/200); + setFiltersUIBoundaries(); QString s = QString::number(m_rate/1000.0, 'f', 1); - ui->spanText->setText(tr("%1k").arg(s)); + ui->spanText->setText(tr("%1 kS/s").arg(s)); if (ui->ssb->isChecked()) { @@ -448,6 +435,37 @@ bool ChannelAnalyzerNGGUI::setNewRate(int spanLog2) return true; } +void ChannelAnalyzerNGGUI::setFiltersUIBoundaries() +{ + if (ui->BW->value() < -m_rate/200) { + ui->BW->setValue(-m_rate/200); + m_channelMarker.setBandwidth(-m_rate*2); + } else if (ui->BW->value() > m_rate/200) { + ui->BW->setValue(m_rate/200); + m_channelMarker.setBandwidth(m_rate*2); + } + + if (ui->lowCut->value() < -m_rate/200) { + ui->lowCut->setValue(-m_rate/200); + m_channelMarker.setLowCutoff(-m_rate); + } else if (ui->lowCut->value() > m_rate/200) { + ui->lowCut->setValue(m_rate/200); + m_channelMarker.setLowCutoff(m_rate); + } + + if (ui->ssb->isChecked()) { + ui->BW->setMinimum(-m_rate/200); + ui->lowCut->setMinimum(-m_rate/200); + } else { + ui->BW->setMinimum(0); + ui->lowCut->setMinimum(-m_rate/200); + ui->lowCut->setValue(0); + } + + ui->BW->setMaximum(m_rate/200); + ui->lowCut->setMaximum(m_rate/200); +} + void ChannelAnalyzerNGGUI::blockApplySettings(bool block) { ui->glScope->blockSignals(block); diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.h b/plugins/channelrx/chanalyzerng/chanalyzernggui.h index 5d3fd17be..09ff5cf95 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.h +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.h @@ -92,6 +92,7 @@ private: int getEffectiveLowCutoff(int lowCutoff); bool setNewRate(int spanLog2); + void setFiltersUIBoundaries(); void blockApplySettings(bool block); void applySettings(); diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.ui b/plugins/channelrx/chanalyzerng/chanalyzernggui.ui index feda3990b..1a961b750 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.ui +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.ui @@ -240,7 +240,7 @@ - Channel downsampling + Channel decimation @@ -387,6 +387,16 @@ + + + + SSB/DSB togggle + + + SSB + + + @@ -432,16 +442,6 @@ - - - - SSB/DSB togggle - - - SSB - - -