Loading...
Searching...
No Matches
BitfocusProtocolSettingsWidget.hpp
1#pragma once
2#include <Device/Protocol/DeviceSettings.hpp>
3#include <Device/Protocol/ProtocolSettingsWidget.hpp>
4
5#include <Protocols/Bitfocus/BitfocusSpecificSettings.hpp>
6
7#include <QJSEngine>
8#include <QVariant>
9
10#include <functional>
11#include <optional>
12#include <verdigris>
13
14class QStackedLayout;
15class QLineEdit;
16class QVBoxLayout;
17class QFormLayout;
18class QSpinBox;
19class QWidget;
20class QLabel;
21class QScrollArea;
22
23namespace Protocols
24{
26{
27public:
28 explicit BitfocusProtocolSettingsWidget(QWidget* parent = nullptr);
29
30 Device::DeviceSettings getSettings() const override;
31 void setSettings(const Device::DeviceSettings& settings) override;
32
33 using Device::ProtocolSettingsWidget::checkForChanges;
34
35private:
36 void resetFields();
37 void updateFields();
38 void resizeEvent(QResizeEvent*) override;
39 BitfocusSpecificSettings m_settings;
40
41 QFormLayout* m_rootLayout{};
42 QLineEdit* m_deviceNameEdit{};
43 QScrollArea* m_scroll{};
44 QWidget* m_subWidget{};
45 QVBoxLayout* m_subForm{};
46
47 // Get the configuration for each widget
48 struct widget
49 {
50 QLabel* label{};
51 QWidget* widg{};
52 std::function<ossia::value()> getValue;
53 std::function<void(ossia::value)> setValue;
54
55 // The value shown when loaded, and the one it came from
56 ossia::value shown;
57 std::optional<ossia::value> source;
58 };
59
60 void loadValue(const QString& id, std::optional<ossia::value> v);
61
62 std::map<QString, widget> m_widgets;
63 QMetaObject::Connection m_configurationParsed;
64 QMetaObject::Connection m_configurationSaved;
65 QJSEngine m_uiEngine;
66 bool m_hasInitLabel{};
67 bool m_fieldsLoaded{};
68};
69}
Definition ProtocolSettingsWidget.hpp:29
Definition BitfocusProtocolSettingsWidget.hpp:26
Definition DeviceSettings.hpp:20
Definition BitfocusSpecificSettings.hpp:21