MapperDevice.hpp
1 #pragma once
2 
3 #if __has_include(<QQmlEngine>)
4 #include <Device/Protocol/DeviceInterface.hpp>
5 #include <Device/Protocol/DeviceSettings.hpp>
6 #include <Device/Protocol/ProtocolSettingsWidget.hpp>
7 
8 #include <Explorer/DefaultProtocolFactory.hpp>
9 
10 #include <verdigris>
11 
12 inline QDataStream&
13 operator<<(QDataStream& st, const std::vector<ossia::net::node_base*>& p)
14 {
15  return st;
16 }
17 inline QDataStream& operator>>(QDataStream& st, std::vector<ossia::net::node_base*>& p)
18 {
19  return st;
20 }
21 Q_DECLARE_METATYPE(std::vector<ossia::net::node_base*>)
22 W_REGISTER_ARGTYPE(std::vector<ossia::net::node_base*>)
23 class QCodeEditor;
24 namespace Protocols
25 {
26 class Mapper : public QObject
27 {
28 };
29 
30 struct MapperSpecificSettings
31 {
32  QString text;
33 };
34 
35 class MapperProtocolFactory final : public Protocols::DefaultProtocolFactory
36 {
37  SCORE_CONCRETE("910e2d87-a087-430d-b725-c988fe2bea01")
38 
39 public:
40  ~MapperProtocolFactory();
41 
42 private:
43  QString prettyName() const noexcept override;
44  QString category() const noexcept override;
45  Device::DeviceEnumerators
46  getEnumerators(const score::DocumentContext& ctx) const override;
47 
48  Device::DeviceInterface* makeDevice(
49  const Device::DeviceSettings& settings,
50  const Explorer::DeviceDocumentPlugin& plugin,
51  const score::DocumentContext& ctx) override;
52 
53  const Device::DeviceSettings& defaultSettings() const noexcept override;
54 
55  Device::ProtocolSettingsWidget* makeSettingsWidget() override;
56 
57  QVariant makeProtocolSpecificSettings(const VisitorVariant& visitor) const override;
58 
59  void serializeProtocolSpecificSettings(
60  const QVariant& data, const VisitorVariant& visitor) const override;
61 
62  bool checkCompatibility(
63  const Device::DeviceSettings& a,
64  const Device::DeviceSettings& b) const noexcept override;
65 };
66 
67 class MapperProtocolSettingsWidget : public Device::ProtocolSettingsWidget
68 {
69 public:
70  MapperProtocolSettingsWidget(QWidget* parent = nullptr);
71 
72  Device::DeviceSettings getSettings() const override;
73 
74  void setSettings(const Device::DeviceSettings& settings) override;
75 
76 protected:
77  void setDefaults();
78 
79 protected:
80  QLineEdit* m_name{};
81  QTextEdit* m_codeEdit{};
82 };
83 }
84 
85 Q_DECLARE_METATYPE(Protocols::MapperSpecificSettings)
86 W_REGISTER_ARGTYPE(Protocols::MapperSpecificSettings)
87 #endif
Definition: DefaultProtocolFactory.hpp:10
Manipulation of Devices from Qt.
Definition: AddressSettings.cpp:14
Base toolkit upon which the software is built.
Definition: Application.cpp:90
Definition: DeviceSettings.hpp:16
The VisitorVariant struct.
Definition: VisitorInterface.hpp:26