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)
88 plugins::PluginRegistry &plugin_registry,
91 QObject * parent =
nullptr);
92 Z_DISABLE_COPY_MOVE (PluginGroup)
93 ~PluginGroup ()
override;
99 QString name ()
const {
return name_; }
100 void setName (
const QString &name);
101 Q_SIGNAL
void nameChanged (
const QString &name);
103 enum DeviceGroupListModelRoles
105 DeviceGroupPtrRole = Qt::UserRole + 1,
107 Q_ENUM (DeviceGroupListModelRoles)
109 QHash<int, QByteArray> roleNames ()
const override;
110 int rowCount (
const QModelIndex &parent = QModelIndex ())
const override;
112 data (
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
121 void insert_plugin (plugins::PluginUuidReference plugin_ref,
int index = -1);
122 void append_plugin (plugins::PluginUuidReference plugin_ref)
124 insert_plugin (std::move (plugin_ref), -1);
126 plugins::PluginUuidReference
127 remove_plugin (
const plugins::Plugin::Uuid &plugin_id);
129 QVariant element_at_idx (
size_t idx)
const;
136 void get_plugins (std::vector<plugins::PluginPtrVariant> &plugins)
const;
139 static constexpr auto kDeviceGroupsKey =
"deviceGroups"sv;
140 friend void to_json (nlohmann::json &j,
const PluginGroup &l);
141 friend void from_json (
const nlohmann::json &j, PluginGroup &l);
145 plugins::PluginRegistry &plugin_registry_;
147 const DeviceGroupType type_;
151 struct DeviceGroupImpl;
152 std::unique_ptr<DeviceGroupImpl> pimpl_;