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)
46 explicit MotionTrackerModel(QObject *parent =
nullptr);
48 void load(Mlt::Producer *producer =
nullptr,
bool reset =
true);
49 QString add(
const QString &name,
const QString &data);
50 void updateData(
const QString &key,
const QString &data);
51 void remove(
const QString &key);
52 Q_INVOKABLE
void setName(QmlFilter *filter,
const QString &name);
53 Q_INVOKABLE QString nextName()
const;
54 QString keyForRow(
int row)
const;
55 QString keyForFilter(Mlt::Service *service);
56 Q_INVOKABLE
void reset(QmlFilter *filter,
const QString &property,
int row);
57 QList<TrackingItem> trackingData(
const QString &key)
const;
58 Q_INVOKABLE QList<QRectF> trackingData(
int row)
const;
59 Q_INVOKABLE
int keyframeIntervalFrames(
int row)
const;
61 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
62 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
63 bool setData(
const QModelIndex &index,
const QVariant &value,
int role = Qt::EditRole)
override;
64 Qt::ItemFlags flags(
const QModelIndex &index)
const override;
65 Q_INVOKABLE
static void undo(QmlFilter *filter =
nullptr,
66 const QString &propertyName = QString());
67 static QString trackerNameProperty()
69 return QString::fromLatin1(
"shotcut:motionTracker.name");
71 static QString trackerOperationProperty()
73 return QString::fromLatin1(
"shotcut:motionTracker.operation");
77 void removeFromService(Mlt::Service *service);
80 enum Roles { IdentifierRole = Qt::UserRole, TrackingDataRole = Qt::UserRole + 1 };
89 QMap<QString, Item> m_data;