implemented replacing media and importing folders

This commit is contained in:
itsmattkc
2018-08-05 12:06:54 +10:00
parent e19fb30d0d
commit b8b99901d8
13 changed files with 399 additions and 210 deletions
+44 -38
View File
@@ -31,7 +31,8 @@ TimelineAction::TimelineAction() :
done(false),
change_seq(false),
ripple_enabled(false),
change_in_out(false)
change_in_out(false),
old_project_changed(project_changed)
{}
TimelineAction::~TimelineAction() {
@@ -129,8 +130,9 @@ void TimelineAction::delete_clip(Sequence* s, int clip) {
new_action(s, TA_DELETE, clip, 0, 0);
}
void TimelineAction::add_media(QTreeWidgetItem* item) {
void TimelineAction::add_media(QTreeWidgetItem* item, QTreeWidgetItem *parent) {
media_to_add.append(item);
media_to_add_parents.append(parent);
}
void TimelineAction::delete_media(QTreeWidgetItem* item) {
@@ -242,20 +244,20 @@ void TimelineAction::undo() {
}
// delete added clips
if (clips_to_add.size() > 0) {
int delete_count = 0;
for (int i=0;i<clips_to_add.size();i++) {
sequence_to_add_clips_to.at(i)->destroy_clip(added_indexes.at(i)-delete_count, true);
delete_count++;
}
}
int delete_count = 0;
for (int i=0;i<clips_to_add.size();i++) {
sequence_to_add_clips_to.at(i)->destroy_clip(added_indexes.at(i)-delete_count, true);
delete_count++;
}
// remove any added media
if (media_to_add.size() > 0) {
for (int i=0;i<media_to_add.size();i++) {
panel_project->source_table->takeTopLevelItem(panel_project->source_table->indexOfTopLevelItem(media_to_add.at(i)));
}
}
for (int i=0;i<media_to_add.size();i++) {
if (media_to_add_parents.at(i) == NULL) {
panel_project->source_table->takeTopLevelItem(panel_project->source_table->indexOfTopLevelItem(media_to_add.at(i)));
} else {
media_to_add_parents.at(i)->removeChild(media_to_add.at(i));
}
}
// un-change workarea
if (change_in_out) {
@@ -269,6 +271,8 @@ void TimelineAction::undo() {
set_sequence(old_seq);
}
project_changed = old_project_changed;
done = false;
}
@@ -411,34 +415,34 @@ void TimelineAction::redo() {
}
// delete media
if (deleted_media.size() > 0) {
for (int i=0;i<deleted_media.size();i++) {
QTreeWidgetItem* item = deleted_media.at(i);
deleted_media_parents.append(item->parent());
for (int i=0;i<deleted_media.size();i++) {
QTreeWidgetItem* item = deleted_media.at(i);
deleted_media_parents.append(item->parent());
// if we're deleting the open sequence, close it
if (get_type_from_tree(item) == MEDIA_TYPE_SEQUENCE &&
get_sequence_from_tree(item) == sequence &&
!change_seq) {
old_seq = sequence;
new_seq = NULL;
change_seq = true;
}
// if we're deleting the open sequence, close it
if (get_type_from_tree(item) == MEDIA_TYPE_SEQUENCE &&
get_sequence_from_tree(item) == sequence &&
!change_seq) {
old_seq = sequence;
new_seq = NULL;
change_seq = true;
}
if (item->parent() == NULL) {
panel_project->source_table->takeTopLevelItem(panel_project->source_table->indexOfTopLevelItem(item));
} else {
item->parent()->removeChild(item);
}
}
}
if (item->parent() == NULL) {
panel_project->source_table->takeTopLevelItem(panel_project->source_table->indexOfTopLevelItem(item));
} else {
item->parent()->removeChild(item);
}
}
// add any new media
if (media_to_add.size() > 0) {
for (int i=0;i<media_to_add.size();i++) {
panel_project->source_table->addTopLevelItem(media_to_add.at(i));
}
}
for (int i=0;i<media_to_add.size();i++) {
if (media_to_add_parents.at(i) == NULL) {
panel_project->source_table->addTopLevelItem(media_to_add.at(i));
} else {
media_to_add_parents.at(i)->addChild(media_to_add.at(i));
}
}
// change sequence workarea
if (change_in_out) {
@@ -453,6 +457,8 @@ void TimelineAction::redo() {
set_sequence(new_seq);
}
project_changed = true;
done = true;
}