rudimentary linking/unlinking added
This commit is contained in:
@@ -310,3 +310,33 @@ void TimelineAction::redo() {
|
||||
|
||||
done = true;
|
||||
}
|
||||
|
||||
LinkCommand::LinkCommand() : link(true) {}
|
||||
|
||||
void LinkCommand::undo() {
|
||||
for (int i=0;i<clips.size();i++) {
|
||||
Clip* c = clips.at(i);
|
||||
if (link) {
|
||||
c->linked.clear();
|
||||
} else {
|
||||
c->linked = old_links.at(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LinkCommand::redo() {
|
||||
old_links.clear();
|
||||
for (int i=0;i<clips.size();i++) {
|
||||
Clip* c = clips.at(i);
|
||||
if (link) {
|
||||
for (int j=0;j<clips.size();j++) {
|
||||
if (i != j) {
|
||||
c->linked.append(j);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
old_links.append(c->linked);
|
||||
c->linked.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,4 +59,15 @@ private:
|
||||
void offset_links(QVector<Clip*>& clips, int offset);
|
||||
};
|
||||
|
||||
class LinkCommand : public QUndoCommand {
|
||||
public:
|
||||
LinkCommand();
|
||||
void undo();
|
||||
void redo();
|
||||
QVector<Clip*> clips;
|
||||
bool link;
|
||||
private:
|
||||
QVector< QVector<int> > old_links;
|
||||
};
|
||||
|
||||
#endif // UNDO_H
|
||||
|
||||
Reference in New Issue
Block a user