Loading...
Searching...
No Matches
AudioDevice.hpp
1#pragma once
2#include <Device/Protocol/DeviceInterface.hpp>
3#include <Device/Protocol/DeviceSettings.hpp>
4#include <Device/Protocol/ProtocolFactoryInterface.hpp>
5#include <Device/Protocol/ProtocolSettingsWidget.hpp>
6
7#include <score/tools/std/String.hpp>
8
9#include <ossia/network/generic/generic_device.hpp>
10
11#include <score_plugin_audio_export.h>
12
13#include <verdigris>
14
15namespace ossia
16{
17class audio_protocol;
18}
19class QLineEdit;
20namespace Dataflow
21{
23{
24 SCORE_CONCRETE("2835e6da-9b55-4029-9802-e1c817acbdc1")
25 QString prettyName() const noexcept override;
26 QString category() const noexcept override;
27 QUrl manual() const noexcept override;
28 Device::DeviceEnumerators
29 getEnumerators(const score::DocumentContext& ctx) const override;
30
31 Device::DeviceInterface* makeDevice(
32 const Device::DeviceSettings& settings,
33 const Explorer::DeviceDocumentPlugin& plugin,
34 const score::DocumentContext& ctx) override;
35 const Device::DeviceSettings& defaultSettings() const noexcept override;
36 Device::AddressDialog* makeAddAddressDialog(
38 QWidget* parent) override;
39 Device::AddressDialog* makeEditAddressDialog(
41 const score::DocumentContext& ctx, QWidget*) override;
42
43 Device::ProtocolSettingsWidget* makeSettingsWidget() override;
44
45 QVariant makeProtocolSpecificSettings(const VisitorVariant& visitor) const override;
46
47 void serializeProtocolSpecificSettings(
48 const QVariant& data, const VisitorVariant& visitor) const override;
49
50 bool checkCompatibility(
52 const Device::DeviceSettings& b) const noexcept override;
53};
54
55class SCORE_PLUGIN_AUDIO_EXPORT AudioDevice final : public Device::DeviceInterface
56{
57 W_OBJECT(AudioDevice)
58public:
59 explicit AudioDevice(const Device::DeviceSettings& settings);
61
62 void addAddress(const Device::FullAddressSettings& settings) override;
63
64 void updateAddress(
65 const State::Address& currentAddr,
66 const Device::FullAddressSettings& settings) override;
67
68 void removeNode(const State::Address& address) override;
69
70 bool reconnect() override;
71 void recreate(const Device::Node& n) override;
72 const std::shared_ptr<ossia::net::generic_device>& sharedDevice() const noexcept
73 {
74 return m_dev;
75 }
76 ossia::net::device_base* getDevice() const override { return m_dev.get(); }
77 ossia::audio_protocol* getProtocol() const { return m_protocol; }
78
79 void changed() E_SIGNAL(SCORE_PLUGIN_AUDIO_EXPORT, changed)
80
81private:
82 using Device::DeviceInterface::refresh;
83 void setupNode(ossia::net::node_base&, const ossia::extended_attributes& attr);
84 Device::Node refresh() override;
85 void disconnect() override;
86 ossia::audio_protocol* m_protocol{};
87 std::shared_ptr<ossia::net::generic_device> m_dev;
88
89 struct hash
90 {
91 std::size_t operator()(const QStringList& q) const noexcept { return qHash(q); }
92 };
93
94 ossia::hash_map<QStringList, Device::FullAddressSettings, hash> m_customAddresses;
95};
96
98{
99public:
100 AudioSettingsWidget(QWidget* parent = nullptr);
101
102 Device::DeviceSettings getSettings() const override;
103
104 void setSettings(const Device::DeviceSettings& settings) override;
105
106private:
107 void setDefaults();
108 QLineEdit* m_deviceNameEdit{};
109};
110}
Definition AudioDevice.hpp:56
Definition AudioDevice.hpp:23
Definition AudioDevice.hpp:98
Definition ProtocolSettingsWidget.hpp:41
Definition DeviceInterface.hpp:66
Definition ProtocolFactoryInterface.hpp:49
Definition ProtocolSettingsWidget.hpp:22
Definition AddressSettings.hpp:49
Definition DeviceSettings.hpp:20
Definition AddressSettings.hpp:62
The Address struct.
Definition Address.hpp:58
The VisitorVariant struct.
Definition VisitorInterface.hpp:26
Definition DocumentContext.hpp:18