21 #include "models/multitrackmodel.h" 22 #include "docks/timelinedock.h" 23 #include "undohelper.h" 24 #include <QUndoCommand> 27 #include <MltTransition.h> 37 UndoIdTrimTransitionIn,
38 UndoIdTrimTransitionOut,
39 UndoIdAddTransitionByTrimIn,
40 UndoIdAddTransitionByTrimOut,
44 class AppendCommand :
public QUndoCommand
47 AppendCommand(MultitrackModel& model,
int trackIndex,
const QString& xml, QUndoCommand * parent = 0);
51 MultitrackModel& m_model;
54 UndoHelper m_undoHelper;
57 class InsertCommand :
public QUndoCommand
60 InsertCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
64 MultitrackModel& m_model;
68 QStringList m_oldTracks;
69 UndoHelper m_undoHelper;
73 class OverwriteCommand :
public QUndoCommand
76 OverwriteCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
80 MultitrackModel& m_model;
84 UndoHelper m_undoHelper;
88 class LiftCommand :
public QUndoCommand
91 LiftCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
const QString &xml, QUndoCommand * parent = 0);
95 MultitrackModel& m_model;
99 UndoHelper m_undoHelper;
102 class RemoveCommand :
public QUndoCommand
105 RemoveCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
const QString &xml, QUndoCommand * parent = 0);
109 MultitrackModel& m_model;
113 UndoHelper m_undoHelper;
116 class NameTrackCommand :
public QUndoCommand
119 NameTrackCommand(MultitrackModel& model,
int trackIndex,
const QString& name, QUndoCommand * parent = 0);
123 MultitrackModel& m_model;
129 class MergeCommand :
public QUndoCommand
132 MergeCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
136 MultitrackModel& m_model;
139 UndoHelper m_undoHelper;
142 class MuteTrackCommand :
public QUndoCommand
145 MuteTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
149 MultitrackModel& m_model;
154 class HideTrackCommand :
public QUndoCommand
157 HideTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
161 MultitrackModel& m_model;
166 class CompositeTrackCommand :
public QUndoCommand
169 CompositeTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
173 MultitrackModel& m_model;
179 class LockTrackCommand :
public QUndoCommand
182 LockTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
186 MultitrackModel& m_model;
192 class MoveClipCommand :
public QUndoCommand
195 MoveClipCommand(MultitrackModel& model,
int fromTrackIndex,
int toTrackIndex,
int clipIndex,
int position,
bool ripple, QUndoCommand * parent = 0);
199 MultitrackModel& m_model;
200 int m_fromTrackIndex;
206 UndoHelper m_undoHelper;
209 class TrimCommand :
public QUndoCommand
212 explicit TrimCommand(QUndoCommand *parent = 0) : QUndoCommand(parent) {}
213 void setUndoHelper(UndoHelper* helper) { m_undoHelper.reset(helper); }
216 QScopedPointer<UndoHelper> m_undoHelper;
219 class TrimClipInCommand :
public TrimCommand
222 TrimClipInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
226 int id()
const {
return UndoIdTrimClipIn; }
227 bool mergeWith(
const QUndoCommand *other);
229 MultitrackModel& m_model;
237 class TrimClipOutCommand :
public TrimCommand
240 TrimClipOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
244 int id()
const {
return UndoIdTrimClipOut; }
245 bool mergeWith(
const QUndoCommand *other);
247 MultitrackModel& m_model;
255 class SplitCommand :
public QUndoCommand
258 SplitCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position, QUndoCommand * parent = 0);
262 MultitrackModel& m_model;
268 class FadeInCommand :
public QUndoCommand
271 FadeInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
275 int id()
const {
return UndoIdFadeIn; }
276 bool mergeWith(
const QUndoCommand *other);
278 MultitrackModel& m_model;
285 class FadeOutCommand :
public QUndoCommand
288 FadeOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
292 int id()
const {
return UndoIdFadeOut; }
293 bool mergeWith(
const QUndoCommand *other);
295 MultitrackModel& m_model;
302 class AddTransitionCommand :
public QUndoCommand
305 AddTransitionCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position,
bool ripple, QUndoCommand * parent = 0);
308 int getTransitionIndex()
const {
return m_transitionIndex; }
310 MultitrackModel& m_model;
314 int m_transitionIndex;
316 UndoHelper m_undoHelper;
319 class TrimTransitionInCommand :
public TrimCommand
322 TrimTransitionInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
326 int id()
const {
return UndoIdTrimTransitionIn; }
327 bool mergeWith(
const QUndoCommand *other);
329 MultitrackModel& m_model;
337 class TrimTransitionOutCommand :
public TrimCommand
340 TrimTransitionOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
344 int id()
const {
return UndoIdTrimTransitionOut; }
345 bool mergeWith(
const QUndoCommand *other);
347 MultitrackModel& m_model;
355 class AddTransitionByTrimInCommand :
public TrimCommand
358 AddTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
362 int id()
const {
return UndoIdAddTransitionByTrimIn; }
363 bool mergeWith(
const QUndoCommand *other);
365 MultitrackModel& m_model;
374 class RemoveTransitionByTrimInCommand :
public TrimCommand
377 RemoveTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
381 MultitrackModel& m_model;
388 class RemoveTransitionByTrimOutCommand :
public TrimCommand
391 RemoveTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
395 MultitrackModel& m_model;
402 class AddTransitionByTrimOutCommand :
public TrimCommand
405 AddTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
409 int id()
const {
return UndoIdAddTransitionByTrimOut; }
410 bool mergeWith(
const QUndoCommand *other);
412 MultitrackModel& m_model;
421 class AddTrackCommand:
public QUndoCommand
424 AddTrackCommand(MultitrackModel& model,
bool isVideo, QUndoCommand* parent = 0);
428 MultitrackModel& m_model;
433 class InsertTrackCommand :
public QUndoCommand
436 InsertTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
440 MultitrackModel& m_model;
442 TrackType m_trackType;
445 class RemoveTrackCommand :
public QUndoCommand
448 RemoveTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
452 MultitrackModel& m_model;
454 TrackType m_trackType;
456 UndoHelper m_undoHelper;
459 class ChangeBlendModeCommand :
public QObject,
public QUndoCommand
463 ChangeBlendModeCommand(Mlt::Transition& transition,
const QString& propertyName,
const QString& mode, QUndoCommand* parent = 0);
467 void modeChanged(QString& mode);
469 Mlt::Transition m_transition;
470 QString m_propertyName;
475 class UpdateCommand :
public QUndoCommand
478 UpdateCommand(TimelineDock& timeline,
int trackIndex,
int clipIndex,
int position,
479 QUndoCommand * parent = 0);
480 void setXmlAfter(
const QString& xml) { m_xmlAfter = xml; }
481 void setPosition(
int trackIndex,
int clipIndex,
int position);
482 int trackIndex()
const {
return m_trackIndex;}
483 int clipIndex()
const {
return m_clipIndex;}
484 int position()
const {
return m_position;}
488 TimelineDock& m_timeline;
494 UndoHelper m_undoHelper;
497 class DetachAudioCommand:
public QUndoCommand
500 DetachAudioCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position,
const QString& xml, QUndoCommand* parent = 0);
504 MultitrackModel& m_model;
508 int m_targetTrackIndex;
509 QString m_audioIndex;
511 UndoHelper m_undoHelper;