18#ifndef MOTIONTRACKERMODEL_H
19#define MOTIONTRACKERMODEL_H
21#include <MltProducer.h>
22#include <QAbstractListModel>
33class MotionTrackerModel :
public QAbstractListModel
36 Q_PROPERTY(QString nameProperty READ trackerNameProperty CONSTANT)
37 Q_PROPERTY(QString operationProperty READ trackerOperationProperty CONSTANT)
45 explicit MotionTrackerModel(QObject *parent =
nullptr);
47 void load(Mlt::Producer *producer =
nullptr,
bool reset =
true);
48 QString add(
const QString &name,
const QString &data);
49 void updateData(
const QString &key,
const QString &data);
50 void remove(
const QString &key);
51 Q_INVOKABLE
void setName(QmlFilter *filter,
const QString &name);
52 Q_INVOKABLE QString nextName()
const;
53 QString keyForRow(
int row)
const;
54 QString keyForFilter(Mlt::Service *service);
55 Q_INVOKABLE
void reset(QmlFilter *filter,
const QString &property,
int row);
56 QList<TrackingItem> trackingData(
const QString &key)
const;
57 Q_INVOKABLE QList<QRectF> trackingData(
int row)
const;
58 Q_INVOKABLE
int keyframeIntervalFrames(
int row)
const;
60 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
61 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
62 bool setData(
const QModelIndex &index,
const QVariant &value,
63 int role = Qt::EditRole)
override;
64 Qt::ItemFlags flags(
const QModelIndex &index)
const override;
65 Q_INVOKABLE
static void undo(QmlFilter *filter =
nullptr,
const QString &propertyName = QString());
66 static QString trackerNameProperty()
68 return QString::fromLatin1(
"shotcut:motionTracker.name");
70 static QString trackerOperationProperty()
72 return QString::fromLatin1(
"shotcut:motionTracker.operation");
76 void removeFromService(Mlt::Service *service);
80 IdentifierRole = Qt::UserRole,
81 TrackingDataRole = Qt::UserRole + 1
90 QMap<QString, Item> m_data;