16class ClipSlot :
public QObject
21 setRegion NOTIFY regionChanged)
22 Q_PROPERTY (ClipState state READ state WRITE setState NOTIFY stateChanged)
25 QML_EXTENDED_NAMESPACE (zrythm::structure::tracks)
38 arrangement::ArrangerObjectRegistry &object_registry,
39 QObject * parent =
nullptr);
43 if (region_ref_.has_value ())
45 return region_ref_->get_object_base ();
53 Q_INVOKABLE
void clearRegion ()
55 if (!region_ref_.has_value ())
61 Q_EMIT regionChanged (
nullptr);
64 ClipState state ()
const {
return state_.load (); }
65 void setState (ClipState state);
66 Q_SIGNAL
void stateChanged (ClipState state);
69 static constexpr auto kRegionIdKey =
"regionId"sv;
70 friend void to_json (nlohmann::json &j,
const ClipSlot &slot);
71 friend void from_json (
const nlohmann::json &j, ClipSlot &slot);
74 std::optional<arrangement::ArrangerObjectUuidReference> region_ref_;
75 arrangement::ArrangerObjectRegistry &object_registry_;
76 std::atomic<ClipState> state_{ ClipState::Stopped };
79class ClipSlotList :
public QAbstractListModel
87 arrangement::ArrangerObjectRegistry &object_registry,
89 QObject * parent =
nullptr);
90 Z_DISABLE_COPY_MOVE (ClipSlotList)
92 enum ClipSlotListRoles
94 ClipSlotPtrRole = Qt::UserRole + 1,
96 Q_ENUM (ClipSlotListRoles)
105 .at (track_collection_.get_track_index (track->get_uuid ()))
109 QHash<int, QByteArray> roleNames ()
const override
111 QHash<int, QByteArray> roles;
112 roles[ClipSlotPtrRole] =
"clipSlot";
115 int rowCount (
const QModelIndex &parent = QModelIndex ())
const override
117 if (parent.isValid ())
119 return static_cast<int> (clip_slots_.size ());
122 data (
const QModelIndex &index,
int role = Qt::DisplayRole)
const override
124 const auto index_int = index.row ();
125 if (!index.isValid () || index_int >=
static_cast<int> (clip_slots_.size ()))
128 if (role == ClipSlotPtrRole)
130 return QVariant::fromValue (clip_slots_.at (index_int).get ());
138 auto &clip_slots ()
const {
return clip_slots_; }
141 friend void to_json (nlohmann::json &j,
const ClipSlotList &list);
142 friend void from_json (
const nlohmann::json &j, ClipSlotList &list);
146 std::vector<utils::QObjectUniquePtr<ClipSlot>> clip_slots_;
148 arrangement::ArrangerObjectRegistry &object_registry_;