Loading...
Searching...
No Matches
TCPWidget.hpp
1#pragma once
2#include <Device/Protocol/ProtocolSettingsWidget.hpp>
3
4#include <score/widgets/HelpInteraction.hpp>
5
6#include <ossia/network/sockets/configuration.hpp>
7#include <ossia/protocols/osc/osc_factory.hpp>
8
9#include <QComboBox>
10#include <QFormLayout>
11#include <QLineEdit>
12#include <QSpinBox>
13namespace Protocols
14{
15
16using framing_type = decltype(ossia::net::osc_protocol_configuration::framing);
17class BasicTCPWidget : public QWidget
18{
19public:
20 BasicTCPWidget(Device::ProtocolSettingsWidget& proto, QWidget* parent)
21 : QWidget{parent}
22 {
23 auto layout = new QFormLayout{this};
24 layout->setContentsMargins(0, 0, 0, 0);
25
26 m_remotePort = new QSpinBox(this);
27 m_remotePort->setRange(0, 65535);
28 m_remotePort->setValue(9996);
29 proto.checkForChanges(m_remotePort);
30
31 m_host = new QLineEdit(this);
32 m_host->setText("127.0.0.1");
33
34 layout->addRow(tr("Port"), m_remotePort);
35 layout->addRow(tr("Host"), m_host);
36 }
37
38 ossia::net::tcp_client_configuration settings() const noexcept
39 {
40 ossia::net::tcp_client_configuration conf;
41 conf.port = m_remotePort->value();
42 conf.host = m_host->text().toStdString();
43 return conf;
44 }
45
46 void setSettings(const ossia::net::tcp_client_configuration& conf)
47 {
48 m_remotePort->setValue(conf.port);
49 m_host->setText(QString::fromStdString(conf.host));
50 }
51
52private:
53 QSpinBox* m_remotePort{};
54 QLineEdit* m_host{};
55};
56
57class TCPWidget : public QWidget
58{
59public:
60 TCPWidget(Device::ProtocolSettingsWidget& proto, QWidget* parent)
61 : QWidget{parent}
62 {
63 auto layout = new QFormLayout{this};
64 layout->setContentsMargins(0, 0, 0, 0);
65
66 m_remotePort = new QSpinBox(this);
67 m_remotePort->setRange(0, 65535);
68 m_remotePort->setValue(9996);
69 proto.checkForChanges(m_remotePort);
70
71 m_host = new QLineEdit(this);
72 m_host->setText("127.0.0.1");
73
74 m_framing = new QComboBox{this};
75 m_framing->addItems({"Size prefixing", "SLIP", "COBS"});
76 m_framing->setCurrentIndex(1);
77
78 layout->addRow(tr("Port"), m_remotePort);
79 layout->addRow(tr("Host"), m_host);
80 layout->addRow(tr("Framing"), m_framing);
81 }
82
83 framing_type framing() const noexcept
84 {
85 return (framing_type)m_framing->currentIndex();
86 }
87
88 ossia::net::tcp_client_configuration settings() const noexcept
89 {
90 ossia::net::tcp_client_configuration conf;
91 conf.port = m_remotePort->value();
92 conf.host = m_host->text().toStdString();
93 return conf;
94 }
95
96 void setSettings(
97 const ossia::net::osc_protocol_configuration& c,
98 const ossia::net::tcp_client_configuration& conf)
99 {
100 m_remotePort->setValue(conf.port);
101 m_framing->setCurrentIndex(c.framing);
102 m_host->setText(QString::fromStdString(conf.host));
103 }
104
105private:
106 QSpinBox* m_remotePort{};
107 QComboBox* m_framing{};
108 QLineEdit* m_host{};
109};
110}
Definition ProtocolSettingsWidget.hpp:29
Definition TCPWidget.hpp:18
Definition TCPWidget.hpp:58