21#include "models/multitrackmodel.h"
23#include <MltPlaylist.h>
52 enum OptimizationHints { NoHints, SkipXML, RestoreTracks };
54 UndoHelper(MultitrackModel &model);
65 void recordBeforeState(
const QSet<int> &trackScope = QSet<int>());
66 void recordAfterState();
68 void setHints(OptimizationHints hints);
69 void setText(
const QString &text) { m_text = text; };
74 void storeXmlForClip(
const QUuid &uid);
77 void debugPrintState(
const QString &title);
78 bool survivingClipsInOrder()
const;
79 void restoreAffectedTracks();
80 void promoteUuids(Mlt::Playlist &playlist);
81 void demoteUuids(Mlt::Playlist &playlist);
85 ClipInfoModified = 0x1,
92 int oldTrackIndex = -1;
93 int oldClipIndex = -1;
94 int newTrackIndex = -1;
95 int newClipIndex = -1;
102 int changes = NoChange;
105 void insertRestoredClip(Mlt::Playlist &playlist,
109 Mlt::Producer *entry);
111 QMap<int, QString> m_beforeXml;
112 QMap<QUuid, Info> m_state;
113 QList<QUuid> m_insertedOrder;
114 QList<QUuid> m_clipsAdded;
115 QSet<QUuid> m_xmlClips;
116 QMap<QUuid, QString> m_clipXml;
117 QSet<int> m_affectedTracks;
118 QSet<int> m_scannedTracks;
119 QSet<int> m_trackScope;
120 MultitrackModel &m_model;
121 OptimizationHints m_hints = NoHints;