Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
plugin_parameter_list_model.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "dsp/parameter.h"
7#include "plugins/plugin.h"
8
9#include <QAbstractListModel>
10#include <QPointer>
11#include <QtQmlIntegration/qqmlintegration.h>
12
13namespace zrythm::plugins
14{
15
16class PluginParameterListModel : public QAbstractListModel
17{
18 Q_OBJECT
19 Q_PROPERTY (
20 zrythm::plugins::Plugin * plugin READ plugin WRITE setPlugin NOTIFY
21 pluginChanged)
22 QML_ELEMENT
23
24public:
25 enum Roles
26 {
27 ParamRole = Qt::UserRole + 1,
28 ParamTypeRole,
29 };
30 Q_ENUM (Roles)
31
32 explicit PluginParameterListModel (QObject * parent = nullptr);
33
34 QHash<int, QByteArray> roleNames () const override;
35 int rowCount (const QModelIndex &parent = QModelIndex ()) const override;
36 QVariant data (const QModelIndex &index, int role) const override;
37
38 Plugin * plugin () const { return plugin_.get (); }
39 void setPlugin (Plugin * plugin);
40 Q_SIGNAL void pluginChanged ();
41
42private:
43 void rebuild_cache ();
44
45 QPointer<Plugin> plugin_;
46 QMetaObject::Connection destroyed_connection_;
47 std::vector<dsp::ProcessorParameter *> cached_params_;
48};
49
50} // namespace zrythm::plugins
DSP processing plugin.
Definition plugin.h:30