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 <ossia/network/generic/generic_device.hpp>
8 
9 #include <score_plugin_audio_export.h>
10 
11 #include <verdigris>
12 
13 namespace ossia
14 {
15 class audio_protocol;
16 }
17 class QLineEdit;
18 namespace Dataflow
19 {
21 {
22  SCORE_CONCRETE("2835e6da-9b55-4029-9802-e1c817acbdc1")
23  QString prettyName() const noexcept override;
24  QString category() const noexcept override;
25  Device::DeviceEnumerators
26  getEnumerators(const score::DocumentContext& ctx) const override;
27 
28  Device::DeviceInterface* makeDevice(
29  const Device::DeviceSettings& settings,
30  const Explorer::DeviceDocumentPlugin& plugin,
31  const score::DocumentContext& ctx) override;
32  const Device::DeviceSettings& defaultSettings() const noexcept override;
33  Device::AddressDialog* makeAddAddressDialog(
34  const Device::DeviceInterface& dev, const score::DocumentContext& ctx,
35  QWidget* parent) override;
36  Device::AddressDialog* makeEditAddressDialog(
38  const score::DocumentContext& ctx, QWidget*) override;
39 
40  Device::ProtocolSettingsWidget* makeSettingsWidget() override;
41 
42  QVariant makeProtocolSpecificSettings(const VisitorVariant& visitor) const override;
43 
44  void serializeProtocolSpecificSettings(
45  const QVariant& data, const VisitorVariant& visitor) const override;
46 
47  bool checkCompatibility(
48  const Device::DeviceSettings& a,
49  const Device::DeviceSettings& b) const noexcept override;
50 };
51 
52 class SCORE_PLUGIN_AUDIO_EXPORT AudioDevice final : public Device::DeviceInterface
53 {
54  W_OBJECT(AudioDevice)
55 public:
56  explicit AudioDevice(const Device::DeviceSettings& settings);
57  ~AudioDevice();
58 
59  void addAddress(const Device::FullAddressSettings& settings) override;
60 
61  void updateAddress(
62  const State::Address& currentAddr,
63  const Device::FullAddressSettings& settings) override;
64  bool reconnect() override;
65  void recreate(const Device::Node& n) override;
66  const std::shared_ptr<ossia::net::generic_device>& sharedDevice() const noexcept
67  {
68  return m_dev;
69  }
70  ossia::net::device_base* getDevice() const override { return m_dev.get(); }
71  ossia::audio_protocol* getProtocol() const { return m_protocol; }
72 
73  void changed() E_SIGNAL(SCORE_PLUGIN_AUDIO_EXPORT, changed)
74 
75 private:
76  using Device::DeviceInterface::refresh;
77  void setupNode(ossia::net::node_base&, const ossia::extended_attributes& attr);
78  Device::Node refresh() override;
79  void disconnect() override;
80  ossia::audio_protocol* m_protocol{};
81  std::shared_ptr<ossia::net::generic_device> m_dev;
82 };
83 
85 {
86 public:
87  AudioSettingsWidget(QWidget* parent = nullptr);
88 
89  Device::DeviceSettings getSettings() const override;
90 
91  void setSettings(const Device::DeviceSettings& settings) override;
92 
93 private:
94  void setDefaults();
95  QLineEdit* m_deviceNameEdit{};
96 };
97 }
Definition: AudioDevice.hpp:53
Definition: AudioDevice.hpp:21
Definition: AudioDevice.hpp:85
Definition: ProtocolSettingsWidget.hpp:41
Definition: DeviceInterface.hpp:66
Definition: ProtocolFactoryInterface.hpp:44
Definition: ProtocolSettingsWidget.hpp:22
Definition: AddressSettings.hpp:49
Definition: DeviceSettings.hpp:16
Definition: AddressSettings.hpp:62
The Address struct.
Definition: Address.hpp:58
The VisitorVariant struct.
Definition: VisitorInterface.hpp:26
Definition: DocumentContext.hpp:18