public void MediaFileDragDrop(string[] filenames)
{
___UiTransactionBegin();
// TODO: wqrfsawq: this is wrong... dragAndDropMan.Mode should eb Image/Video/Audio, whereas draggy.Mode should be just the timeline
if (dragAndDropMan.Mode == DragAndDropManagerMode.Video ||
dragAndDropMan.Mode == DragAndDropManagerMode.Image)
{
var vclips = dragAndDropMan.FinalizeDragAndMakeVideoClips();
int draggyVideoShoveIndex = Dimdim.GetVideoClipDraggyShoveIndex(UiObjects.Draggy);
var lastActiveVideo = UiObjects.CurrentVideoClip;
AddUndableAction_andFireRedo(new UndoableAction
{
Redo = () =>
{
Proj.ClipsVideo.InsertRange(draggyVideoShoveIndex, vclips);
UiObjects.SetActiveVideo(vclips.FirstOrDefault(), Proj);
},
Undo = () =>
{
Proj.ClipsVideo.RemoveRange(draggyVideoShoveIndex, vclips.Count());
UiObjects.SetActiveVideo(lastActiveVideo, Proj);
},
PostAction = () =>
{
Proj.Compile();
UpdateCanvasWidthFromProjAndDimdim();
}
});
}
else if (dragAndDropMan.Mode == DragAndDropManagerMode.Audio)
{
var frameDraggyFirst = Dimdim.convert_ScreenX2Frame(UiObjects.Draggy.MouseX - UiObjects.Draggy.MouseXOffset);
var aclips = dragAndDropMan.FinalizeDragAndMakeAudioClips(frameDraggyFirst);
var lastActiveVideo = UiObjects.CurrentVideoClip;
AddUndableAction_andFireRedo(new UndoableAction
{
Redo = () =>
{
Proj.ClipsAudio.AddRange(aclips);
UiObjects.SetActiveAudio(aclips.FirstOrDefault());
},
Undo = () =>
{
foreach (var aclip in aclips)
Proj.ClipsAudio.Remove(aclip);
UiObjects.SetActiveVideo(lastActiveVideo, Proj);
},
PostAction = () =>
{
Proj.Compile();
UpdateCanvasWidthFromProjAndDimdim();
}
});
}
else if (dragAndDropMan.Mode == DragAndDropManagerMode.Folder)
{
if (shitbox.ShowConfirmMessage("Recursive generation", "Generate thumbs and meta for this folder and all its subfolders? This will take a long ass while..."))
{
dragAndDropMan.QueueUpTheWholeFolder(dragAndDropMan.OriginalFile);
}
dragAndDropMan.FinalizeThisDragDropOp();
}
else if (dragAndDropMan.Mode == DragAndDropManagerMode.VidkaProject)
{
var proceed = shitbox.ShouldIProceedIfProjectChanged();
if (!proceed)
return;
LoadProjFromFile(filenames.FirstOrDefault());
dragAndDropMan.FinalizeThisDragDropOp();
}
UiObjects.ClearDraggy();
___UiTransactionEnd();
}