Allow replay time offset to be set by ctrl+left click in waterfall.

pull/1914/head
srcejon 2023-12-06 10:09:30 +00:00
rodzic 364dfc1fc5
commit 238a40b9e0
17 zmienionych plików z 70 dodań i 12 usunięć

Wyświetl plik

@ -623,6 +623,11 @@ void AirspyHFGui::on_replayLoop_toggled(bool checked)
sendSettings(); sendSettings();
} }
void AirspyHFGui::setReplayTime(float time)
{
ui->replayOffset->setValue(std::ceil(time * 10.0f));
}
void AirspyHFGui::makeUIConnections() void AirspyHFGui::makeUIConnections()
{ {
QObject::connect(ui->centerFrequency, &ValueDial::changed, this, &AirspyHFGui::on_centerFrequency_changed); QObject::connect(ui->centerFrequency, &ValueDial::changed, this, &AirspyHFGui::on_centerFrequency_changed);

Wyświetl plik

@ -46,6 +46,7 @@ public:
QByteArray serialize() const; QByteArray serialize() const;
bool deserialize(const QByteArray& data); bool deserialize(const QByteArray& data);
virtual MessageQueue* getInputMessageQueue() { return &m_inputMessageQueue; } virtual MessageQueue* getInputMessageQueue() { return &m_inputMessageQueue; }
void setReplayTime(float time) override;
uint32_t getDevSampleRate(unsigned int index); uint32_t getDevSampleRate(unsigned int index);
int getDevSampleRateIndex(uint32_t sampleRate); int getDevSampleRateIndex(uint32_t sampleRate);

Wyświetl plik

@ -691,6 +691,11 @@ void RTLSDRGui::on_replayLoop_toggled(bool checked)
sendSettings(); sendSettings();
} }
void RTLSDRGui::setReplayTime(float time)
{
ui->replayOffset->setValue(std::ceil(time * 10.0f));
}
void RTLSDRGui::makeUIConnections() void RTLSDRGui::makeUIConnections()
{ {
QObject::connect(ui->centerFrequency, &ValueDial::changed, this, &RTLSDRGui::on_centerFrequency_changed); QObject::connect(ui->centerFrequency, &ValueDial::changed, this, &RTLSDRGui::on_centerFrequency_changed);

Wyświetl plik

@ -50,6 +50,7 @@ public:
QByteArray serialize() const; QByteArray serialize() const;
bool deserialize(const QByteArray& data); bool deserialize(const QByteArray& data);
virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
void setReplayTime(float time) override;
private: private:
Ui::RTLSDRGui* ui; Ui::RTLSDRGui* ui;

Wyświetl plik

@ -687,6 +687,11 @@ void SDRPlayV3Gui::on_replayLoop_toggled(bool checked)
sendSettings(); sendSettings();
} }
void SDRPlayV3Gui::setReplayTime(float time)
{
ui->replayOffset->setValue(std::ceil(time * 10.0f));
}
void SDRPlayV3Gui::makeUIConnections() void SDRPlayV3Gui::makeUIConnections()
{ {
QObject::connect(ui->centerFrequency, &ValueDial::changed, this, &SDRPlayV3Gui::on_centerFrequency_changed); QObject::connect(ui->centerFrequency, &ValueDial::changed, this, &SDRPlayV3Gui::on_centerFrequency_changed);

Wyświetl plik

@ -46,6 +46,7 @@ public:
virtual QByteArray serialize() const; virtual QByteArray serialize() const;
virtual bool deserialize(const QByteArray& data); virtual bool deserialize(const QByteArray& data);
virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
void setReplayTime(float time) override;
private: private:
Ui::SDRPlayV3Gui* ui; Ui::SDRPlayV3Gui* ui;

Wyświetl plik

@ -769,6 +769,11 @@ void USRPInputGUI::on_replayLoop_toggled(bool checked)
sendSettings(); sendSettings();
} }
void USRPInputGUI::setReplayTime(float time)
{
ui->replayOffset->setValue(std::ceil(time * 10.0f));
}
void USRPInputGUI::makeUIConnections() void USRPInputGUI::makeUIConnections()
{ {
QObject::connect(ui->startStop, &ButtonSwitch::toggled, this, &USRPInputGUI::on_startStop_toggled); QObject::connect(ui->startStop, &ButtonSwitch::toggled, this, &USRPInputGUI::on_startStop_toggled);

Wyświetl plik

@ -50,6 +50,7 @@ public:
QByteArray serialize() const; QByteArray serialize() const;
bool deserialize(const QByteArray& data); bool deserialize(const QByteArray& data);
virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
void setReplayTime(float time) override;
private: private:
Ui::USRPInputGUI* ui; Ui::USRPInputGUI* ui;

Wyświetl plik

@ -875,28 +875,28 @@
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget>
<class>ValueDial</class>
<extends>QWidget</extends>
<header>gui/valuedial.h</header>
<container>1</container>
</customwidget>
<customwidget> <customwidget>
<class>ButtonSwitch</class> <class>ButtonSwitch</class>
<extends>QToolButton</extends> <extends>QToolButton</extends>
<header>gui/buttonswitch.h</header> <header>gui/buttonswitch.h</header>
</customwidget> </customwidget>
<customwidget>
<class>TransverterButton</class>
<extends>QPushButton</extends>
<header>gui/transverterbutton.h</header>
</customwidget>
<customwidget> <customwidget>
<class>ValueDialZ</class> <class>ValueDialZ</class>
<extends>QWidget</extends> <extends>QWidget</extends>
<header>gui/valuedialz.h</header> <header>gui/valuedialz.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>ValueDial</class>
<extends>QWidget</extends>
<header>gui/valuedial.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>TransverterButton</class>
<extends>QPushButton</extends>
<header>gui/transverterbutton.h</header>
</customwidget>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../../../sdrgui/resources/res.qrc"/> <include location="../../../sdrgui/resources/res.qrc"/>

Wyświetl plik

@ -55,7 +55,7 @@ struct USRPInputSettings
float m_replayOffset; //!< Replay offset in seconds float m_replayOffset; //!< Replay offset in seconds
float m_replayLength; //!< Replay buffer size in seconds float m_replayLength; //!< Replay buffer size in seconds
float m_replayStep; //!< Replay forward/back step size in seconds float m_replayStep; //!< Replay forward/back step size in seconds
bool m_replayLoop; //!< Replay buffer repeatedly without recording new data bool m_replayLoop; //!< Replay buffer repeatedly without recording new data
bool m_useReverseAPI; bool m_useReverseAPI;
QString m_reverseAPIAddress; QString m_reverseAPIAddress;
uint16_t m_reverseAPIPort; uint16_t m_reverseAPIPort;

Wyświetl plik

@ -81,6 +81,7 @@ public:
void setCurrentDeviceIndex(int index) { m_currentDeviceIndex = index; } //!< index in plugins list void setCurrentDeviceIndex(int index) { m_currentDeviceIndex = index; } //!< index in plugins list
void setChannelNames(const QStringList& channelNames) { m_channelAddDialog.addChannelNames(channelNames); } void setChannelNames(const QStringList& channelNames) { m_channelAddDialog.addChannelNames(channelNames); }
DeviceUISet* getDeviceUISet() { return m_deviceUISet; } DeviceUISet* getDeviceUISet() { return m_deviceUISet; }
virtual void setReplayTime(float time) {} //!< Not supported by all devices
protected: protected:
void closeEvent(QCloseEvent *event) override; void closeEvent(QCloseEvent *event) override;

Wyświetl plik

@ -73,6 +73,8 @@ DeviceUISet::DeviceUISet(int deviceSetIndex, DeviceSet *deviceSet)
font.setFamily(QStringLiteral("Liberation Sans")); font.setFamily(QStringLiteral("Liberation Sans"));
font.setPointSize(9); font.setPointSize(9);
m_spectrum->setFont(font); m_spectrum->setFont(font);
connect(m_mainSpectrumGUI, &MainSpectrumGUI::timeSelected, this, &DeviceUISet::onTimeSelected);
} }
DeviceUISet::~DeviceUISet() DeviceUISet::~DeviceUISet()
@ -825,3 +827,10 @@ int DeviceUISet::webapiSpectrumServerDelete(SWGSDRangel::SWGSuccessResponse& res
{ {
return m_spectrumVis->webapiSpectrumServerDelete(response, errorMessage); return m_spectrumVis->webapiSpectrumServerDelete(response, errorMessage);
} }
void DeviceUISet::onTimeSelected(int deviceSetIndex, float time)
{
if (m_deviceGUI) {
m_deviceGUI->setReplayTime(time);
}
}

Wyświetl plik

@ -167,6 +167,7 @@ private:
private slots: private slots:
void handleChannelGUIClosing(ChannelGUI* channelGUI); void handleChannelGUIClosing(ChannelGUI* channelGUI);
void handleDeleteChannel(ChannelAPI *channelAPI); void handleDeleteChannel(ChannelAPI *channelAPI);
void onTimeSelected(int deviceSetIndex, float time);
}; };

Wyświetl plik

@ -4175,6 +4175,18 @@ void GLSpectrumView::mousePressEvent(QMouseEvent* event)
{ {
frequencyPan(event); frequencyPan(event);
} }
else if (event->modifiers() & Qt::ControlModifier)
{
if (!m_display3DSpectrogram && pointInWaterfallOrSpectrogram(ep))
{
QPointF pWat = ep;
pWat.rx() = (ep.x()/width() - m_waterfallRect.left()) / m_waterfallRect.width();
pWat.ry() = (ep.y()/height() - m_waterfallRect.top()) / m_waterfallRect.height();
float time = m_timeScale.getRangeMin() + pWat.y()*m_timeScale.getRange();
emit timeSelected(time);
}
return;
}
else if (m_display3DSpectrogram) else if (m_display3DSpectrogram)
{ {
// Detect click and drag to rotate 3D spectrogram // Detect click and drag to rotate 3D spectrogram

Wyświetl plik

@ -541,6 +541,8 @@ signals:
void requestCenterFrequency(qint64 frequency); void requestCenterFrequency(qint64 frequency);
// Emitted when annotations are changed // Emitted when annotations are changed
void updateAnnotations(); void updateAnnotations();
// Emitted when user ctrl-clicks on waterfall to select a time. time is in seconds.
void timeSelected(float time);
}; };

Wyświetl plik

@ -157,6 +157,8 @@ MainSpectrumGUI::MainSpectrumGUI(GLSpectrum *spectrum, GLSpectrumGUI *spectrumGU
connect(spectrum->getSpectrumView(), &GLSpectrumView::requestCenterFrequency, this, &MainSpectrumGUI::onRequestCenterFrequency); connect(spectrum->getSpectrumView(), &GLSpectrumView::requestCenterFrequency, this, &MainSpectrumGUI::onRequestCenterFrequency);
connect(spectrumGUI, &GLSpectrumGUI::requestCenterFrequency, this, &MainSpectrumGUI::onRequestCenterFrequency); connect(spectrumGUI, &GLSpectrumGUI::requestCenterFrequency, this, &MainSpectrumGUI::onRequestCenterFrequency);
connect(spectrum->getSpectrumView(), &GLSpectrumView::timeSelected, this, &MainSpectrumGUI::onTimeSelected);
m_resizer.enableChildMouseTracking(); m_resizer.enableChildMouseTracking();
shrinkWindow(); shrinkWindow();
} }
@ -380,3 +382,8 @@ void MainSpectrumGUI::onRequestCenterFrequency(qint64 frequency)
{ {
emit requestCenterFrequency(m_deviceSetIndex, frequency); emit requestCenterFrequency(m_deviceSetIndex, frequency);
} }
void MainSpectrumGUI::onTimeSelected(float time)
{
emit timeSelected(m_deviceSetIndex, time);
}

Wyświetl plik

@ -113,12 +113,14 @@ private slots:
void shrinkWindow(); void shrinkWindow();
void maximizeWindow(); void maximizeWindow();
void onRequestCenterFrequency(qint64 frequency); void onRequestCenterFrequency(qint64 frequency);
void onTimeSelected(float time);
signals: signals:
void closing(); void closing();
void moveToWorkspace(int workspaceIndex); void moveToWorkspace(int workspaceIndex);
void forceShrink(); void forceShrink();
void requestCenterFrequency(int deviceSetIndex, qint64 frequency); // an action from the user to move device center frequency void requestCenterFrequency(int deviceSetIndex, qint64 frequency); // an action from the user to move device center frequency
void timeSelected(int deviceSetIndex, float time); // user ctrl-clicked waterfall to set a time
}; };