void HandleMovePlaylistEvent(MoveElementsEvent <PlaylistVM> e) { int realIndex = e.Index; realIndex -= ViewModel.ViewModels.IndexOf(e.ElementToMove) < e.Index ? 1 : 0; ViewModel.ViewModels.Remove(e.ElementToMove); ViewModel.ViewModels.Insert(realIndex, e.ElementToMove); }
void HandleMoveElements(MoveElementsEvent <PlaylistVM, PlaylistElementVM> e) { int indexCopy = e.Index; for (int i = 0; i < indexCopy; i++) { if (e.ElementsToAdd.Value.Contains(e.ElementsToAdd.Key.ViewModels [i])) { e.Index--; } } foreach (var playlist in e.ElementsToRemove) { playlist.Key.ViewModels.RemoveRange(playlist.Value); Save(playlist.Key, true); } e.Index = e.Index.Clamp(0, e.ElementsToAdd.Key.ViewModels.Count); e.ElementsToAdd.Key.ViewModels.InsertRange(e.Index, e.ElementsToAdd.Value); Save(e.ElementsToAdd.Key, true); }
public async Task TestSavePlaylistMoveElementWithProject() { // Arrange SetupWithProject(); Playlist playlist = new Playlist { Name = "playlist without a project" }; var playlist2 = new Playlist { Name = "playlist2 without a project" }; await App.Current.EventsBroker.Publish( new AddPlaylistElementEvent { PlaylistElements = new List <IPlayable> { new PlaylistPlayElementVM { Model = new PlaylistPlayElement(new TimelineEvent { Name = "event1" }) }, new PlaylistPlayElementVM { Model = new PlaylistPlayElement(new TimelineEvent { Name = "event2" }) } }, Playlist = new PlaylistVM { Model = playlist } } ); mockDialogs.Setup(m => m.QueryMessage(It.IsAny <string> (), It.IsAny <string> (), It.IsAny <string> (), It.IsAny <object> ())).Returns(AsyncHelpers.Return(name + "2")); await App.Current.EventsBroker.Publish( new AddPlaylistElementEvent { PlaylistElements = new List <IPlayable> (), Playlist = new PlaylistVM { Model = playlist2 }, } ); Dictionary <PlaylistVM, IEnumerable <PlaylistElementVM> > toRemove = new Dictionary <PlaylistVM, IEnumerable <PlaylistElementVM> > (); toRemove.Add( new PlaylistVM { Model = playlist }, new List <PlaylistElementVM> { new PlaylistElementVM { Model = playlist.Elements.First() } } ); KeyValuePair <PlaylistVM, IEnumerable <PlaylistElementVM> > toAdd = new KeyValuePair <PlaylistVM, IEnumerable <PlaylistElementVM> > ( new PlaylistVM { Model = playlist2 }, new List <PlaylistElementVM> { new PlaylistElementVM { Model = playlist.Elements.First() } } ); storageMock.ResetCalls(); // Act var ev = new MoveElementsEvent <PlaylistVM, PlaylistElementVM> { ElementsToRemove = toRemove, ElementsToAdd = toAdd, Index = 0, }; await App.Current.EventsBroker.Publish(ev); // Assert storageMock.Verify(s => s.Store <Playlist> (playlist, true), Times.Never()); storageMock.Verify(s => s.Store <Playlist> (playlist2, true), Times.Never()); }