21#include "models/multitrackmodel.h"
22#include "models/markersmodel.h"
23#include "docks/timelinedock.h"
24#include "undohelper.h"
25#include <QUndoCommand>
28#include <MltTransition.h>
29#include <MltProducer.h>
38 UndoIdTrimTransitionIn,
39 UndoIdTrimTransitionOut,
40 UndoIdAddTransitionByTrimIn,
41 UndoIdAddTransitionByTrimOut,
46class AppendCommand :
public QUndoCommand
49 AppendCommand(MultitrackModel &model,
int trackIndex,
const QString &xml,
bool skipProxy =
false,
50 bool seek =
true, QUndoCommand *parent = 0);
54 MultitrackModel &m_model;
57 UndoHelper m_undoHelper;
62class InsertCommand :
public QUndoCommand
65 InsertCommand(MultitrackModel &model, MarkersModel &markersModel,
int trackIndex,
int position,
66 const QString &xml,
bool seek =
true, QUndoCommand *parent = 0);
70 MultitrackModel &m_model;
71 MarkersModel &m_markersModel;
75 QStringList m_oldTracks;
76 UndoHelper m_undoHelper;
78 bool m_rippleAllTracks;
83class OverwriteCommand :
public QUndoCommand
86 OverwriteCommand(MultitrackModel &model,
int trackIndex,
int position,
const QString &xml,
87 bool seek =
true, QUndoCommand *parent = 0);
91 MultitrackModel &m_model;
95 UndoHelper m_undoHelper;
99class LiftCommand :
public QUndoCommand
102 LiftCommand(MultitrackModel &model,
int trackIndex,
int clipIndex, QUndoCommand *parent = 0);
106 MultitrackModel &m_model;
109 UndoHelper m_undoHelper;
112class RemoveCommand :
public QUndoCommand
115 RemoveCommand(MultitrackModel &model, MarkersModel &markersModel,
int trackIndex,
int clipIndex,
116 QUndoCommand *parent = 0);
120 MultitrackModel &m_model;
121 MarkersModel &m_markersModel;
124 UndoHelper m_undoHelper;
125 bool m_rippleAllTracks;
126 bool m_rippleMarkers;
127 int m_markerRemoveStart;
128 int m_markerRemoveEnd;
129 QList<Markers::Marker> m_markers;
132class NameTrackCommand :
public QUndoCommand
135 NameTrackCommand(MultitrackModel &model,
int trackIndex,
const QString &name,
136 QUndoCommand *parent = 0);
140 MultitrackModel &m_model;
146class MergeCommand :
public QUndoCommand
149 MergeCommand(MultitrackModel &model,
int trackIndex,
int clipIndex, QUndoCommand *parent = 0);
153 MultitrackModel &m_model;
156 UndoHelper m_undoHelper;
159class MuteTrackCommand :
public QUndoCommand
162 MuteTrackCommand(MultitrackModel &model,
int trackIndex, QUndoCommand *parent = 0);
166 MultitrackModel &m_model;
171class HideTrackCommand :
public QUndoCommand
174 HideTrackCommand(MultitrackModel &model,
int trackIndex, QUndoCommand *parent = 0);
178 MultitrackModel &m_model;
183class CompositeTrackCommand :
public QUndoCommand
186 CompositeTrackCommand(MultitrackModel &model,
int trackIndex,
bool value, QUndoCommand *parent = 0);
190 MultitrackModel &m_model;
196class LockTrackCommand :
public QUndoCommand
199 LockTrackCommand(MultitrackModel &model,
int trackIndex,
bool value, QUndoCommand *parent = 0);
203 MultitrackModel &m_model;
209class MoveClipCommand :
public QUndoCommand
212 MoveClipCommand(MultitrackModel &model, MarkersModel &markersModel,
int trackDelta,
bool ripple,
213 QUndoCommand *parent = 0);
216 QMultiMap<int, Mlt::Producer> &selection()
223 return UndoIdMoveClip;
225 bool mergeWith(
const QUndoCommand *other);
228 MultitrackModel &m_model;
229 MarkersModel &m_markersModel;
232 bool m_rippleAllTracks;
233 bool m_rippleMarkers;
234 UndoHelper m_undoHelper;
235 QMultiMap<int, Mlt::Producer> m_selection;
240 int m_markerOldStart;
241 int m_markerNewStart;
242 QList<Markers::Marker> m_markers;
245class TrimCommand :
public QUndoCommand
248 explicit TrimCommand(QUndoCommand *parent = 0) : QUndoCommand(parent) {}
249 void setUndoHelper(UndoHelper *helper)
251 m_undoHelper.reset(helper);
255 QScopedPointer<UndoHelper> m_undoHelper;
258class TrimClipInCommand :
public TrimCommand
261 TrimClipInCommand(MultitrackModel &model, MarkersModel &markersModel,
int trackIndex,
int clipIndex,
262 int delta,
bool ripple,
bool redo =
true, QUndoCommand *parent = 0);
268 return UndoIdTrimClipIn;
270 bool mergeWith(
const QUndoCommand *other);
272 MultitrackModel &m_model;
273 MarkersModel &m_markersModel;
278 bool m_rippleAllTracks;
279 bool m_rippleMarkers;
281 int m_markerRemoveStart;
282 int m_markerRemoveEnd;
283 QList<Markers::Marker> m_markers;
286class TrimClipOutCommand :
public TrimCommand
289 TrimClipOutCommand(MultitrackModel &model, MarkersModel &markersModel,
int trackIndex,
290 int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand *parent = 0);
296 return UndoIdTrimClipOut;
298 bool mergeWith(
const QUndoCommand *other);
300 MultitrackModel &m_model;
301 MarkersModel &m_markersModel;
306 bool m_rippleAllTracks;
307 bool m_rippleMarkers;
309 int m_markerRemoveStart;
310 int m_markerRemoveEnd;
311 QList<Markers::Marker> m_markers;
314class SplitCommand :
public QUndoCommand
317 SplitCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int position,
318 QUndoCommand *parent = 0);
322 MultitrackModel &m_model;
326 UndoHelper m_undoHelper;
329class FadeInCommand :
public QUndoCommand
332 FadeInCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int duration,
333 QUndoCommand *parent = 0);
341 bool mergeWith(
const QUndoCommand *other);
343 MultitrackModel &m_model;
350class FadeOutCommand :
public QUndoCommand
353 FadeOutCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int duration,
354 QUndoCommand *parent = 0);
360 return UndoIdFadeOut;
362 bool mergeWith(
const QUndoCommand *other);
364 MultitrackModel &m_model;
371class AddTransitionCommand :
public QUndoCommand
374 AddTransitionCommand(TimelineDock &timeline,
int trackIndex,
int clipIndex,
int position,
375 bool ripple, QUndoCommand *parent = 0);
378 int getTransitionIndex()
const
380 return m_transitionIndex;
383 TimelineDock &m_timeline;
384 MultitrackModel &m_model;
385 MarkersModel &m_markersModel;
389 int m_transitionIndex;
391 UndoHelper m_undoHelper;
392 bool m_rippleAllTracks;
393 bool m_rippleMarkers;
394 int m_markerOldStart;
395 int m_markerNewStart;
396 QList<Markers::Marker> m_markers;
399class TrimTransitionInCommand :
public TrimCommand
402 TrimTransitionInCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int delta,
403 bool redo =
true, QUndoCommand *parent = 0);
409 return UndoIdTrimTransitionIn;
411 bool mergeWith(
const QUndoCommand *other);
413 MultitrackModel &m_model;
421class TrimTransitionOutCommand :
public TrimCommand
424 TrimTransitionOutCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int delta,
425 bool redo =
true, QUndoCommand *parent = 0);
431 return UndoIdTrimTransitionOut;
433 bool mergeWith(
const QUndoCommand *other);
435 MultitrackModel &m_model;
443class AddTransitionByTrimInCommand :
public TrimCommand
446 AddTransitionByTrimInCommand(TimelineDock &timeline,
int trackIndex,
int clipIndex,
int duration,
447 int trimDelta,
bool redo =
true, QUndoCommand *parent = 0);
453 return UndoIdAddTransitionByTrimIn;
455 bool mergeWith(
const QUndoCommand *other);
457 TimelineDock &m_timeline;
466class RemoveTransitionByTrimInCommand :
public TrimCommand
469 RemoveTransitionByTrimInCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int delta,
470 bool redo =
true, QUndoCommand *parent = 0);
474 MultitrackModel &m_model;
481class RemoveTransitionByTrimOutCommand :
public TrimCommand
484 RemoveTransitionByTrimOutCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int delta,
485 bool redo =
true, QUndoCommand *parent = 0);
489 MultitrackModel &m_model;
496class AddTransitionByTrimOutCommand :
public TrimCommand
499 AddTransitionByTrimOutCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int duration,
500 int trimDelta,
bool redo =
true, QUndoCommand *parent = 0);
506 return UndoIdAddTransitionByTrimOut;
508 bool mergeWith(
const QUndoCommand *other);
510 MultitrackModel &m_model;
519class AddTrackCommand:
public QUndoCommand
522 AddTrackCommand(MultitrackModel &model,
bool isVideo, QUndoCommand *parent = 0);
526 MultitrackModel &m_model;
531class InsertTrackCommand :
public QUndoCommand
534 InsertTrackCommand(MultitrackModel &model,
int trackIndex, TrackType trackType = PlaylistTrackType,
535 QUndoCommand *parent = 0);
539 MultitrackModel &m_model;
541 TrackType m_trackType;
544class RemoveTrackCommand :
public QUndoCommand
547 RemoveTrackCommand(MultitrackModel &model,
int trackIndex, QUndoCommand *parent = 0);
551 MultitrackModel &m_model;
553 TrackType m_trackType;
555 UndoHelper m_undoHelper;
556 QScopedPointer<Mlt::Producer> m_filtersProducer;
559class MoveTrackCommand :
public QUndoCommand
562 MoveTrackCommand(MultitrackModel &model,
int fromTrackIndex,
int toTrackIndex,
563 QUndoCommand *parent = 0);
567 MultitrackModel &m_model;
568 int m_fromTrackIndex;
572class ChangeBlendModeCommand :
public QObject,
public QUndoCommand
576 ChangeBlendModeCommand(Mlt::Transition &transition,
const QString &propertyName,
577 const QString &mode, QUndoCommand *parent = 0);
581 void modeChanged(QString &mode);
583 Mlt::Transition m_transition;
584 QString m_propertyName;
589class UpdateCommand :
public QUndoCommand
592 UpdateCommand(TimelineDock &timeline,
int trackIndex,
int clipIndex,
int position,
593 QUndoCommand *parent = 0);
594 void setXmlAfter(
const QString &xml);
595 void setPosition(
int trackIndex,
int clipIndex,
int position);
596 int trackIndex()
const
600 int clipIndex()
const
611 TimelineDock &m_timeline;
617 UndoHelper m_undoHelper;
621class DetachAudioCommand:
public QUndoCommand
624 DetachAudioCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
int position,
625 const QString &xml, QUndoCommand *parent = 0);
629 MultitrackModel &m_model;
633 int m_targetTrackIndex;
635 UndoHelper m_undoHelper;
639class ReplaceCommand :
public QUndoCommand
642 ReplaceCommand(MultitrackModel &model,
int trackIndex,
int clipIndex,
const QString &xml,
643 QUndoCommand *parent =
nullptr);
647 MultitrackModel &m_model;
652 UndoHelper m_undoHelper;
656class AlignClipsCommand :
public QUndoCommand
659 AlignClipsCommand(MultitrackModel &model, QUndoCommand *parent = 0);
660 void addAlignment(QUuid uuid,
int offset,
double speedCompensation);
665 MultitrackModel &m_model;
666 UndoHelper m_undoHelper;
673 QVector<Alignment> m_alignments;