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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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());
        }