14class ClipSlot :
public QObject
19 setRegion NOTIFY regionChanged)
20 Q_PROPERTY (ClipState state READ state WRITE setState NOTIFY stateChanged)
23 QML_EXTENDED_NAMESPACE (zrythm::structure::tracks)
36 arrangement::ArrangerObjectRegistry &object_registry,
37 QObject * parent =
nullptr);
41 if (region_ref_.has_value ())
43 return region_ref_->get_object_base ();
51 Q_INVOKABLE
void clearRegion ()
53 if (!region_ref_.has_value ())
59 Q_EMIT regionChanged (
nullptr);
62 ClipState state ()
const {
return state_.load (); }
63 void setState (ClipState state);
64 Q_SIGNAL
void stateChanged (ClipState state);
67 std::optional<arrangement::ArrangerObjectUuidReference> region_ref_;
68 arrangement::ArrangerObjectRegistry &object_registry_;
69 std::atomic<ClipState> state_{ ClipState::Stopped };
72class ClipSlotList :
public QAbstractListModel
80 arrangement::ArrangerObjectRegistry &object_registry,
82 QObject * parent =
nullptr);
83 Z_DISABLE_COPY_MOVE (ClipSlotList)
85 enum ClipSlotListRoles
87 ClipSlotPtrRole = Qt::UserRole + 1,
89 Q_ENUM (ClipSlotListRoles)
98 .at (track_collection_.get_track_index (track->get_uuid ()))
102 QHash<int, QByteArray> roleNames ()
const override
104 QHash<int, QByteArray> roles;
105 roles[ClipSlotPtrRole] =
"clipSlot";
108 int rowCount (
const QModelIndex &parent = QModelIndex ())
const override
110 if (parent.isValid ())
112 return static_cast<int> (clip_slots_.size ());
115 data (
const QModelIndex &index,
int role = Qt::DisplayRole)
const override
117 const auto index_int = index.row ();
118 if (!index.isValid () || index_int >=
static_cast<int> (clip_slots_.size ()))
121 if (role == ClipSlotPtrRole)
123 return QVariant::fromValue (clip_slots_.at (index_int).get ());
131 auto &clip_slots ()
const {
return clip_slots_; }
135 std::vector<utils::QObjectUniquePtr<ClipSlot>> clip_slots_;
137 arrangement::ArrangerObjectRegistry &object_registry_;