45class PluginGroup :
public QAbstractListModel
48 Q_PROPERTY (QString name READ name WRITE setName NOTIFY nameChanged)
77 enum class DeviceGroupType : std::uint8_t
84 Q_ENUM (DeviceGroupType)
90 QObject * parent =
nullptr);
91 Q_DISABLE_COPY_MOVE (PluginGroup)
92 ~PluginGroup ()
override;
98 QString name ()
const {
return name_; }
99 void setName (
const QString &name);
100 Q_SIGNAL
void nameChanged (
const QString &name);
102 enum DeviceGroupListModelRoles
104 DeviceGroupPtrRole = Qt::UserRole + 1,
106 Q_ENUM (DeviceGroupListModelRoles)
108 QHash<int, QByteArray> roleNames ()
const override;
109 int rowCount (
const QModelIndex &parent = QModelIndex ())
const override;
111 data (
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
120 void insert_plugin (plugins::PluginUuidReference plugin_ref,
int index = -1);
121 void append_plugin (plugins::PluginUuidReference plugin_ref)
123 insert_plugin (std::move (plugin_ref), -1);
125 plugins::PluginUuidReference
126 remove_plugin (
const plugins::Plugin::Uuid &plugin_id);
128 QVariant element_at_idx (
size_t idx)
const;
131 std::vector<plugins::PluginUuidReference> &plugins,
132 bool recursive =
true)
const;
135 static constexpr auto kDeviceGroupsKey =
"deviceGroups"sv;
136 static constexpr auto kFaderKey =
"fader"sv;
137 friend void to_json (nlohmann::json &j,
const PluginGroup &l);
138 friend void from_json (
const nlohmann::json &j, PluginGroup &l);
141 utils::IObjectRegistry ®istry_;
143 const DeviceGroupType type_;
144 utils::QObjectUniquePtr<dsp::Fader> fader_;
147 struct DeviceGroupImpl;
148 std::unique_ptr<DeviceGroupImpl> pimpl_;