21class Tracklist :
public QObject
30 singletonTracks CONSTANT)
35 int pinnedTracksCutoff READ pinnedTracksCutoff WRITE setPinnedTracksCutoff
36 NOTIFY pinnedTracksCutoffChanged)
40 using ArrangerObjectPtrVariant = arrangement::ArrangerObjectPtrVariant;
46 QObject * parent =
nullptr);
47 Q_DISABLE_COPY_MOVE (Tracklist)
48 ~Tracklist ()
override;
54 TrackCollection * collection ()
const {
return track_collection_.get (); }
58 return singleton_tracks_.get ();
61 Q_INVOKABLE
Track * getTrackForTimelineObject (
63 Q_INVOKABLE
TrackLane * getTrackLaneForObject (
66 Q_INVOKABLE
bool isTrackPinned (
const Track * track)
const
71 Q_INVOKABLE
bool shouldBeVisible (
const Track * track)
const
76 Q_INVOKABLE
bool hasChannel (
const Track * track)
const
78 return track->channel () !=
nullptr;
81 TrackRouting * trackRouting ()
const {
return track_routing_.get (); }
83 int pinnedTracksCutoff ()
const {
return pinned_tracks_cutoff_; }
84 void setPinnedTracksCutoff (
int index)
86 if (index == pinned_tracks_cutoff_)
89 pinned_tracks_cutoff_ = index;
90 Q_EMIT pinnedTracksCutoffChanged (index);
92 Q_SIGNAL
void pinnedTracksCutoffChanged (
int index);
96 friend void init_from (
98 const Tracklist &other,
101 Track * get_track (
const TrackUuid &
id)
const
103 const auto &tracks = collection ()->tracks ();
104 auto it = std::ranges::find (tracks,
id, &TrackUuidReference::id);
105 return it != tracks.end () ? it->get () :
nullptr;
116 std::optional<TrackPtrVariant>
133 void handle_click (TrackUuid track_id,
bool ctrl,
bool shift,
bool dragged);
135 std::vector<ArrangerObjectPtrVariant> get_timeline_objects ()
const;
145 std::optional<TrackUuidReference>
146 get_track_for_plugin (
const plugins::Plugin::Uuid &plugin_id)
const;
161 return index < pinned_tracks_cutoff_;
167 static_cast<int> (collection ()->get_track_index (track_id)));
170 auto get_track_route_target (
const TrackUuid &source_track)
const
172 return track_routing_->get_output_track (source_track);
184 TrackPtrVariant track_var,
191 static constexpr auto kPinnedTracksCutoffKey =
"pinnedTracksCutoff"sv;
192 static constexpr auto kTracksKey =
"tracks"sv;
193 friend void to_json (nlohmann::json &j,
const Tracklist &t);
194 friend void from_json (
const nlohmann::json &j, Tracklist &t);
197 auto &get_registry ()
const {
return registry_; }
198 auto &get_registry () {
return registry_; }
231 int pinned_tracks_cutoff_ = 0;
bool multiply_track_heights(double multiplier, bool visible_only, bool check_only, bool fire_events)
Multiplies all tracks' heights and returns if the operation was valid.
void mark_track_for_bounce(TrackPtrVariant track_var, bool bounce, bool mark_regions, bool mark_children, bool mark_parents)
Marks the track for bouncing.