diff --git a/mainwindow.cpp b/mainwindow.cpp index 0a3f97a..7ae3980 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1186,6 +1186,13 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, setFreqOffsetForRestore(selectedOffset, false); }); + if(m_wideGraph->filterEnabled()){ + auto filterQsyAction = menu->addAction(QString("Center filter at %1Hz").arg(selectedOffset)); + connect(filterQsyAction, &QAction::triggered, this, [this, selectedOffset](){ + m_wideGraph->setFilterCenter(selectedOffset); + }); + } + auto items = m_bandActivity.value(selectedOffset); if(!items.isEmpty()){ int submode = items.last().submode; @@ -1425,9 +1432,14 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, auto qsyAction = menu->addAction(QString("Jump to %1Hz").arg(selectedOffset)); connect(qsyAction, &QAction::triggered, this, [this, selectedOffset](){ setFreqOffsetForRestore(selectedOffset, false); - // TODO: prompt mode switch? }); + if(m_wideGraph->filterEnabled()){ + auto filterQsyAction = menu->addAction(QString("Center filter at %1Hz").arg(selectedOffset)); + connect(filterQsyAction, &QAction::triggered, this, [this, selectedOffset](){ + m_wideGraph->setFilterCenter(selectedOffset); + }); + } int submode = m_callActivity[selectedCall].submode; auto speed = submodeName(submode); diff --git a/widegraph.cpp b/widegraph.cpp index 0949b8e..83c229f 100644 --- a/widegraph.cpp +++ b/widegraph.cpp @@ -403,6 +403,11 @@ bool WideGraph::filterEnabled() return m_filterEnabled; } +void WideGraph::setFilterCenter(int n){ + int delta = n - m_filterCenter; + setFilter(m_filterMinimum + delta, m_filterMaximum + delta); +} + void WideGraph::setFilter(int a, int b){ int low = std::min(a, b); int high = std::max(a, b); @@ -741,8 +746,7 @@ void WideGraph::on_filterMinSpinBox_valueChanged(int n){ } void WideGraph::on_filterCenterSpinBox_valueChanged(int n){ - int delta = n - m_filterCenter; - setFilter(m_filterMinimum + delta, m_filterMaximum + delta); + setFilterCenter(n); } void WideGraph::on_filterWidthSpinBox_valueChanged(int n){ diff --git a/widegraph.h b/widegraph.h index 82dbeb9..57ea5d8 100644 --- a/widegraph.h +++ b/widegraph.h @@ -36,6 +36,7 @@ public: int filterMinimum(); int filterMaximum(); bool filterEnabled(); + void setFilterCenter(int n); void setFilter(int a, int b); void setFilterMinimumBandwidth(int width); void setFilterEnabled(bool enabled);