mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-25 09:18:54 -05:00
Websocket spectrum: Websocket spectrum settings dialog implementation taking settings into account
This commit is contained in:
parent
c193f4b880
commit
3730cbf865
@ -52,6 +52,8 @@ void GLSpectrumSettings::resetToDefaults()
|
||||
m_linear = false;
|
||||
m_ssb = false;
|
||||
m_usb = true;
|
||||
m_wsSpectrumAddress = "127.0.0.1";
|
||||
m_wsSpectrumPort = 8887;
|
||||
}
|
||||
|
||||
QByteArray GLSpectrumSettings::serialize() const
|
||||
@ -78,6 +80,8 @@ QByteArray GLSpectrumSettings::serialize() const
|
||||
s.writeS32(19, (int) m_averagingMode);
|
||||
s.writeS32(20, (qint32) getAveragingValue(m_averagingIndex, m_averagingMode));
|
||||
s.writeBool(21, m_linear);
|
||||
s.writeString(22, m_wsSpectrumAddress);
|
||||
s.writeU32(23, m_wsSpectrumPort);
|
||||
s.writeBool(24, m_ssb);
|
||||
s.writeBool(25, m_usb);
|
||||
|
||||
@ -94,6 +98,7 @@ bool GLSpectrumSettings::deserialize(const QByteArray& data)
|
||||
}
|
||||
|
||||
int tmp;
|
||||
uint32_t utmp;
|
||||
|
||||
if (d.getVersion() == 1)
|
||||
{
|
||||
@ -121,6 +126,9 @@ bool GLSpectrumSettings::deserialize(const QByteArray& data)
|
||||
m_averagingIndex = getAveragingIndex(tmp, m_averagingMode);
|
||||
m_averagingValue = getAveragingValue(m_averagingIndex, m_averagingMode);
|
||||
d.readBool(21, &m_linear, false);
|
||||
d.readString(22, &m_wsSpectrumAddress, "127.0.0.1");
|
||||
d.readU32(23, &utmp, 8887);
|
||||
m_wsSpectrumPort = utmp < 1024 ? 1024 : utmp > 65535 ? 65535 : utmp;
|
||||
d.readBool(24, &m_ssb, false);
|
||||
d.readBool(25, &m_usb, true);
|
||||
|
||||
|
@ -59,6 +59,8 @@ public:
|
||||
bool m_linear; //!< linear else logarithmic scale
|
||||
bool m_ssb; //!< SSB display with spectrum center at start of array or display - else spectrum center is on center
|
||||
bool m_usb; //!< USB display with increasing frequencies towads the right - else decreasing frequencies
|
||||
QString m_wsSpectrumAddress;
|
||||
uint16_t m_wsSpectrumPort;
|
||||
|
||||
GLSpectrumSettings();
|
||||
virtual ~GLSpectrumSettings();
|
||||
|
@ -745,6 +745,8 @@ void SpectrumVis::applySettings(const GLSpectrumSettings& settings, bool force)
|
||||
<< " m_refLevel: " << settings.m_refLevel
|
||||
<< " m_powerRange: " << settings.m_powerRange
|
||||
<< " m_linear: " << settings.m_linear
|
||||
<< " m_wsSpectrumAddress: " << settings.m_wsSpectrumAddress
|
||||
<< " m_wsSpectrumPort: " << settings.m_wsSpectrumPort
|
||||
<< " force: " << force;
|
||||
|
||||
if ((fftSize != m_settings.m_fftSize) || force)
|
||||
@ -785,6 +787,11 @@ void SpectrumVis::applySettings(const GLSpectrumSettings& settings, bool force)
|
||||
m_max.resize(fftSize, averagingValue);
|
||||
}
|
||||
|
||||
if ((settings.m_wsSpectrumAddress != m_settings.m_wsSpectrumAddress)
|
||||
|| (settings.m_wsSpectrumPort != m_settings.m_wsSpectrumPort) || force) {
|
||||
handleConfigureWSSpectrum(settings.m_wsSpectrumAddress, settings.m_wsSpectrumPort);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
m_settings.m_fftSize = fftSize;
|
||||
m_settings.m_fftOverlap = overlapPercent;
|
||||
@ -816,19 +823,11 @@ void SpectrumVis::handleWSOpenClose(bool openClose)
|
||||
|
||||
void SpectrumVis::handleConfigureWSSpectrum(const QString& address, uint16_t port)
|
||||
{
|
||||
QMutexLocker mutexLocker(&m_mutex);
|
||||
bool wsSpectrumWasOpen = false;
|
||||
|
||||
if (m_wsSpectrum.socketOpened())
|
||||
{
|
||||
m_wsSpectrum.closeSocket();
|
||||
wsSpectrumWasOpen = true;
|
||||
}
|
||||
|
||||
m_wsSpectrum.setListeningAddress(address);
|
||||
m_wsSpectrum.setPort(port);
|
||||
|
||||
if (wsSpectrumWasOpen) {
|
||||
m_wsSpectrum.setListeningAddress(address);
|
||||
m_wsSpectrum.setPort(port);
|
||||
m_wsSpectrum.openSocket();
|
||||
}
|
||||
}
|
@ -63,6 +63,7 @@ set(sdrgui_SOURCES
|
||||
gui/tvscreenanalog.cpp
|
||||
gui/valuedial.cpp
|
||||
gui/valuedialz.cpp
|
||||
gui/wsspectrumsettingsdialog.cpp
|
||||
|
||||
dsp/scopevis.cpp
|
||||
dsp/scopevisxy.cpp
|
||||
@ -148,6 +149,7 @@ set(sdrgui_HEADERS
|
||||
gui/tvscreenanalog.h
|
||||
gui/valuedial.h
|
||||
gui/valuedialz.h
|
||||
gui/wsspectrumsettingsdialog.h
|
||||
|
||||
dsp/scopevis.h
|
||||
dsp/scopevisxy.h
|
||||
@ -196,10 +198,12 @@ set(sdrgui_FORMS
|
||||
gui/pluginsdialog.ui
|
||||
gui/audiodialog.ui
|
||||
gui/audioselectdialog.ui
|
||||
gui/samplingdevicecontrol.ui
|
||||
gui/samplingdevicedialog.ui
|
||||
gui/myposdialog.ui
|
||||
gui/transverterdialog.ui
|
||||
gui/loggingdialog.ui
|
||||
gui/wsspectrumsettingsdialog.ui
|
||||
soapygui/discreterangegui.ui
|
||||
soapygui/intervalrangegui.ui
|
||||
soapygui/intervalslidergui.ui
|
||||
|
@ -26,6 +26,8 @@
|
||||
#include "dsp/fftwindow.h"
|
||||
#include "dsp/spectrumvis.h"
|
||||
#include "gui/glspectrum.h"
|
||||
#include "gui/crightclickenabler.h"
|
||||
#include "gui/wsspectrumsettingsdialog.h"
|
||||
#include "util/simpleserializer.h"
|
||||
#include "ui_glspectrumgui.h"
|
||||
|
||||
@ -53,6 +55,10 @@ GLSpectrumGUI::GLSpectrumGUI(QWidget* parent) :
|
||||
// ui->levelRange->setStyleSheet("background-color: rgb(79, 79, 79);");
|
||||
|
||||
connect(&m_messageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
|
||||
|
||||
CRightClickEnabler *wsSpectrumRightClickEnabler = new CRightClickEnabler(ui->wsSpectrum);
|
||||
connect(wsSpectrumRightClickEnabler, SIGNAL(rightClick(const QPoint &)), this, SLOT(openWebsocketSpectrumSettingsDialog(const QPoint &)));
|
||||
|
||||
displaySettings();
|
||||
setAveragingCombo();
|
||||
applySettings();
|
||||
@ -193,16 +199,18 @@ void GLSpectrumGUI::applySettings()
|
||||
|
||||
if (m_spectrumVis)
|
||||
{
|
||||
m_spectrumVis->configure(
|
||||
m_settings.m_fftSize,
|
||||
m_settings.m_refLevel,
|
||||
m_settings.m_powerRange,
|
||||
m_settings.m_fftOverlap,
|
||||
getAveragingValue(m_settings.m_averagingIndex, m_settings.m_averagingMode),
|
||||
(SpectrumVis::AvgMode) m_settings.m_averagingMode,
|
||||
(FFTWindow::Function) m_settings.m_fftWindow,
|
||||
m_settings.m_linear
|
||||
);
|
||||
SpectrumVis::MsgConfigureSpectrumVis *msg = SpectrumVis::MsgConfigureSpectrumVis::create(m_settings, false);
|
||||
m_spectrumVis->getInputMessageQueue()->push(msg);
|
||||
// m_spectrumVis->configure(
|
||||
// m_settings.m_fftSize,
|
||||
// m_settings.m_refLevel,
|
||||
// m_settings.m_powerRange,
|
||||
// m_settings.m_fftOverlap,
|
||||
// getAveragingValue(m_settings.m_averagingIndex, m_settings.m_averagingMode),
|
||||
// (SpectrumVis::AvgMode) m_settings.m_averagingMode,
|
||||
// (FFTWindow::Function) m_settings.m_fftWindow,
|
||||
// m_settings.m_linear
|
||||
// );
|
||||
}
|
||||
}
|
||||
|
||||
@ -529,3 +537,21 @@ void GLSpectrumGUI::handleInputMessages()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GLSpectrumGUI::openWebsocketSpectrumSettingsDialog(const QPoint& p)
|
||||
{
|
||||
WebsocketSpectrumSettingsDialog dialog(this);
|
||||
dialog.setAddress(m_settings.m_wsSpectrumAddress);
|
||||
dialog.setPort(m_settings.m_wsSpectrumPort);
|
||||
|
||||
dialog.move(p);
|
||||
dialog.exec();
|
||||
|
||||
if (dialog.hasChanged())
|
||||
{
|
||||
m_settings.m_wsSpectrumAddress = dialog.getAddress();
|
||||
m_settings.m_wsSpectrumPort = dialog.getPort();
|
||||
|
||||
applySettings();
|
||||
}
|
||||
}
|
||||
|
@ -104,6 +104,7 @@ private slots:
|
||||
void on_freeze_toggled(bool checked);
|
||||
|
||||
void handleInputMessages();
|
||||
void openWebsocketSpectrumSettingsDialog(const QPoint& p);
|
||||
};
|
||||
|
||||
#endif // INCLUDE_GLSPECTRUMGUI_H
|
||||
|
@ -694,6 +694,18 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ButtonSwitch" name="wsSpectrum">
|
||||
<property name="toolTip">
|
||||
<string>Left: toggle websocket spectrum - Right: websocket spectrum parameters</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normalon>:/stream.png</normalon>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
|
74
sdrgui/gui/wsspectrumsettingsdialog.cpp
Normal file
74
sdrgui/gui/wsspectrumsettingsdialog.cpp
Normal file
@ -0,0 +1,74 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2015 Edouard Griffiths, F4EXB //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// (at your option) any later version. //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "wsspectrumsettingsdialog.h"
|
||||
#include "ui_wsspectrumsettingsdialog.h"
|
||||
|
||||
WebsocketSpectrumSettingsDialog::WebsocketSpectrumSettingsDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::WebsocketSpectrumSettingsDialog),
|
||||
m_hasChanged(false)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
setAddress("127.0.0.1");
|
||||
setPort(8887);
|
||||
}
|
||||
|
||||
WebsocketSpectrumSettingsDialog::~WebsocketSpectrumSettingsDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void WebsocketSpectrumSettingsDialog::setAddress(const QString& address)
|
||||
{
|
||||
m_address = address;
|
||||
ui->address->setText(m_address);
|
||||
}
|
||||
|
||||
void WebsocketSpectrumSettingsDialog::setPort(uint16_t port)
|
||||
{
|
||||
if (port < 1024) {
|
||||
return;
|
||||
} else {
|
||||
m_port = port;
|
||||
}
|
||||
|
||||
ui->port->setText(tr("%1").arg(m_port));
|
||||
}
|
||||
|
||||
void WebsocketSpectrumSettingsDialog::on_address_editingFinished()
|
||||
{
|
||||
m_address = ui->address->text();
|
||||
}
|
||||
|
||||
void WebsocketSpectrumSettingsDialog::on_port_editingFinished()
|
||||
{
|
||||
bool dataOk;
|
||||
int port = ui->port->text().toInt(&dataOk);
|
||||
|
||||
if ((!dataOk) || (port < 1024) || (port > 65535)) {
|
||||
return;
|
||||
} else {
|
||||
m_port = port;
|
||||
}
|
||||
}
|
||||
|
||||
void WebsocketSpectrumSettingsDialog::accept()
|
||||
{
|
||||
m_hasChanged = true;
|
||||
QDialog::accept();
|
||||
}
|
54
sdrgui/gui/wsspectrumsettingsdialog.h
Normal file
54
sdrgui/gui/wsspectrumsettingsdialog.h
Normal file
@ -0,0 +1,54 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2015 Edouard Griffiths, F4EXB //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// (at your option) any later version. //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef WSSPECTRUMSETTINGSDIALOG_H
|
||||
#define WSSPECTRUMSETTINGSDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
#include "../../exports/export.h"
|
||||
|
||||
namespace Ui {
|
||||
class WebsocketSpectrumSettingsDialog;
|
||||
}
|
||||
|
||||
class SDRGUI_API WebsocketSpectrumSettingsDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WebsocketSpectrumSettingsDialog(QWidget *parent = nullptr);
|
||||
~WebsocketSpectrumSettingsDialog();
|
||||
bool hasChanged() const { return m_hasChanged; }
|
||||
const QString& getAddress() const { return m_address; }
|
||||
uint16_t getPort() const { return m_port; }
|
||||
void setAddress(const QString& address);
|
||||
void setPort(uint16_t port);
|
||||
|
||||
private slots:
|
||||
void on_address_editingFinished();
|
||||
void on_port_editingFinished();
|
||||
void accept();
|
||||
|
||||
private:
|
||||
Ui::WebsocketSpectrumSettingsDialog *ui;
|
||||
QString m_address;
|
||||
uint16_t m_port;
|
||||
bool m_hasChanged;
|
||||
};
|
||||
|
||||
#endif // BASICDEVICESETTINGSDIALOG_H
|
145
sdrgui/gui/wsspectrumsettingsdialog.ui
Normal file
145
sdrgui/gui/wsspectrumsettingsdialog.ui
Normal file
@ -0,0 +1,145 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>WebsocketSpectrumSettingsDialog</class>
|
||||
<widget class="QDialog" name="WebsocketSpectrumSettingsDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>394</width>
|
||||
<height>77</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Liberation Sans</family>
|
||||
<pointsize>9</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Websocket spectrum settings</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="wsServerLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="addressLabel">
|
||||
<property name="text">
|
||||
<string>Addr</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="address">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Reverse API address</string>
|
||||
</property>
|
||||
<property name="inputMask">
|
||||
<string>000.000.000.000</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>127.0.0.1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="portLabel">
|
||||
<property name="text">
|
||||
<string>Port</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="port">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>45</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>45</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Reverse API port</string>
|
||||
</property>
|
||||
<property name="inputMask">
|
||||
<string>00000</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>8887</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>WebsocketSpectrumSettingsDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>WebsocketSpectrumSettingsDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
Loading…
Reference in New Issue
Block a user