Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
timeline_position_tracker.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <vector>
7
8#include "structure/arrangement/arranger_object.h"
9
10#include <QObject>
11#include <QPointer>
12#include <QtQmlIntegration/qqmlintegration.h>
13
14namespace zrythm::gui::qquick
15{
16
34class TimelinePositionTracker : public QObject
35{
36 Q_OBJECT
37 QML_ELEMENT
38
39 Q_PROPERTY (
41 arrangerObject WRITE setArrangerObject NOTIFY arrangerObjectChanged)
42 Q_PROPERTY (
43 double timelineTicks READ timelineTicks NOTIFY timelineTicksChanged)
44 Q_PROPERTY (
45 double timelineEndTicks READ timelineEndTicks NOTIFY timelineEndTicksChanged)
46
47public:
48 explicit TimelinePositionTracker (QObject * parent = nullptr);
49
50 structure::arrangement::ArrangerObject * arrangerObject () const
51 {
52 return obj_;
53 }
54 void setArrangerObject (structure::arrangement::ArrangerObject * obj);
55
56 double timelineTicks () const;
57 double timelineEndTicks () const;
58
59Q_SIGNALS:
60 void arrangerObjectChanged ();
61 void timelineTicksChanged ();
62 void timelineEndTicksChanged ();
63
64private:
65 void disconnect_all ();
66 void reconnect ();
67
68 QPointer<structure::arrangement::ArrangerObject> obj_;
69 std::vector<QMetaObject::Connection> connections_;
70};
71
72} // namespace zrythm::gui::qquick
Base class for all objects in the arranger.