diff --git a/cursors.cpp b/cursors.cpp index 6995ddb..909d934 100644 --- a/cursors.cpp +++ b/cursors.cpp @@ -89,3 +89,14 @@ void Cursors::paintFront(QPainter &painter, QRect &rect, range_t sampleRa painter.restore(); } + +range_t Cursors::selection() +{ + // TODO: ensure correct ordering during dragging, not here + if (cursorPositions[0] < cursorPositions[1]) { + return {cursorPositions[0], cursorPositions[1]}; + + } else { + return {cursorPositions[1], cursorPositions[0]}; + } +} diff --git a/cursors.h b/cursors.h index ef02964..96d3b4c 100644 --- a/cursors.h +++ b/cursors.h @@ -31,6 +31,7 @@ class Cursors : public QObject public: Cursors(QObject * parent); void paintFront(QPainter &painter, QRect &rect, range_t sampleRange); + range_t selection(); signals: void cursorsMoved(); diff --git a/mainwindow.cpp b/mainwindow.cpp index d66d449..cdd26b0 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -36,6 +36,7 @@ MainWindow::MainWindow() plots = new PlotView(input); setCentralWidget(plots); + // Connect dock inputs connect(dock, SIGNAL(openFile(QString)), this, SLOT(openFile(QString))); connect(dock->sampleRate, SIGNAL(textChanged(QString)), this, SLOT(setSampleRate(QString))); connect(dock, SIGNAL(fftSizeChanged(int)), plots, SLOT(setFFTSize(int))); @@ -44,6 +45,9 @@ MainWindow::MainWindow() connect(dock->powerMinSlider, SIGNAL(valueChanged(int)), plots, SLOT(setPowerMin(int))); connect(dock->cursorsCheckBox, &QCheckBox::stateChanged, plots, &PlotView::enableCursors); + // Connect dock outputs + connect(plots, SIGNAL(timeSelectionChanged(float)), dock, SLOT(timeSelectionChanged(float))); + // Set defaults after making connections so everything is in sync dock->setDefaults(); } diff --git a/plotview.cpp b/plotview.cpp index 7f143cf..636cf5b 100644 --- a/plotview.cpp +++ b/plotview.cpp @@ -95,6 +95,10 @@ TracePlot* PlotView::createQuadratureDemodPlot(SampleSource> void PlotView::cursorsMoved() { + int selection = cursors.selection().length(); + off_t sampleCount = coordToSample(selection); + float selectionTime = sampleCount / (float)mainSampleSource->rate(); + emit timeSelectionChanged(selectionTime); viewport()->update(); } diff --git a/plotview.h b/plotview.h index 22d31b6..7a7da49 100644 --- a/plotview.h +++ b/plotview.h @@ -36,6 +36,9 @@ class PlotView : public QAbstractScrollArea, Subscriber public: PlotView(InputSource *input); +signals: + void timeSelectionChanged(float time); + public slots: void cursorsMoved(); void enableCursors(bool enable); diff --git a/spectrogramcontrols.cpp b/spectrogramcontrols.cpp index 17fbee9..415393b 100644 --- a/spectrogramcontrols.cpp +++ b/spectrogramcontrols.cpp @@ -112,3 +112,9 @@ void SpectrogramControls::fileOpenButtonClicked() ); emit openFile(fileName); } + +void SpectrogramControls::timeSelectionChanged(float time) +{ + deltaTimeLabel->setText(QString::number(time) + "s"); + deltaFrequencyLabel->setText(QString::number(1 / time) + "Hz"); +} diff --git a/spectrogramcontrols.h b/spectrogramcontrols.h index af1f2a7..20a7345 100644 --- a/spectrogramcontrols.h +++ b/spectrogramcontrols.h @@ -39,6 +39,9 @@ signals: void fftSizeChanged(int size); void openFile(QString fileName); +public slots: + void timeSelectionChanged(float time); + private slots: void fftSizeSliderChanged(int size); void fileOpenButtonClicked();