예제 #1
0
 private void ShowEditOrderedPlaylistTab(OrderedPlaylist playlist)
 {
     _returnToTab = SelectedTab;
     _editOrderedPlaylistViewModel.Edit(playlist);
     _editOrderedPlaylistViewModel.IsVisible = true;
     SetSelectedTab(_editOrderedPlaylistViewModel);
 }
예제 #2
0
 private void OnFavourite(OrderedPlaylist playlist)
 {
     playlist.Favourite = !playlist.Favourite;
     _repository.Save(playlist);
     Update();
     _parent.OnFavouritePlaylistsUpdated();
 }
        public void Edit(OrderedPlaylist playlist)
        {
            _playlist = playlist;

            PlaylistTitle = _playlist.Title;

            Tracks = new ObservableCollection <Track>(_trackSearchService.GetTracks(playlist.Tracks));
        }
        protected override bool CustomSave()
        {
            _playlist = CreatePlaylist(_playlist);

            _repository.Save(_playlist);

            return(true);
        }
예제 #5
0
 private void OnDelete(OrderedPlaylist playlist)
 {
     _parent.Remove(playlist);
     if (playlist.Favourite)
     {
         _parent.OnFavouritePlaylistsUpdated();
     }
 }
        private OrderedPlaylist CreatePlaylist(OrderedPlaylist playlist = null)
        {
            if (playlist == null)
            {
                playlist = new OrderedPlaylist(0, "", false);
            }

            playlist.Title = PlaylistTitle;

            playlist.Tracks = _tracks.Select(t => t.File.FullPath).ToList();

            return(playlist);
        }
예제 #7
0
        public void Delete(OrderedPlaylist playlist)
        {
            var xml = _xmlProvider.Get();

            var orderedPlaylistsXml = xml.Root.Element(PlaylistsOrdered);

            var playlistXml = orderedPlaylistsXml
                              .Elements(PropertyNames.Playlist)
                              .Single(pl => pl.Attribute(PlaylistId).Value == playlist.Id.ToString());

            playlistXml.Remove();

            _xmlProvider.Save(xml);
        }
예제 #8
0
        private OrderedPlaylist CreateOrderedPlaylist(XElement playlistXml)
        {
            var id        = int.Parse(playlistXml.Attribute(PlaylistId).Value);
            var title     = playlistXml.Attribute(PlaylistTitle).Value;
            var favourite = playlistXml.Attribute(PlaylistIsFavourite)?.Value == TrueValue;

            var playlist = new OrderedPlaylist(id, title, favourite);

            foreach (var trackXml in playlistXml.Element(PlaylistTracks).Elements(PlaylistTrack))
            {
                playlist.Tracks.Add(trackXml.Attribute(PlaylistTrackFilepath).Value);
            }

            return(playlist);
        }
예제 #9
0
        public void Remove(OrderedPlaylist playlist)
        {
            var confirmation = new ConfirmationViewModel(_messenger, "Delete Playlist Confirmation", $"Are you sure you want to delete {playlist.Title}?",
                                                         ConfirmationType.YesNo);

            _messenger.Send(new ShowDialogMessage(confirmation));

            if (!confirmation.Result)
            {
                return;
            }

            _repository.Delete(playlist);
            OnShow(null);
        }
예제 #10
0
        public void Save(OrderedPlaylist playlist)
        {
            var xml = _xmlProvider.Get() ?? CreateXmlDocument();

            var orderedPlaylistsXml = xml.Root.Element(PlaylistsOrdered);

            XElement playlistXml;

            if (playlist.Id == 0)
            {
                var playlists = orderedPlaylistsXml
                                .Elements(PropertyNames.Playlist);

                var maxId = playlists.Any()
                    ? playlists.Max(pl => Convert.ToInt16(pl.Attribute(PlaylistId).Value))
                    : 0;

                playlist.Id = maxId + 1;

                playlistXml = new XElement(PropertyNames.Playlist);
                orderedPlaylistsXml.Add(playlistXml);
            }
            else
            {
                playlistXml = orderedPlaylistsXml
                              .Elements(PropertyNames.Playlist)
                              .Single(pl => pl.Attribute(PlaylistId).Value == playlist.Id.ToString());
            }

            playlistXml.RemoveAll();

            playlistXml.Add(new XAttribute(PlaylistId, playlist.Id));
            playlistXml.Add(new XAttribute(PlaylistTitle, playlist.Title));
            playlistXml.Add(new XAttribute(PlaylistIsFavourite, playlist.Favourite ? TrueValue : FalseValue));

            var tracksXml = new XElement(PlaylistTracks);

            playlistXml.Add(tracksXml);

            foreach (var track in playlist.Tracks)
            {
                var trackXml = new XElement(PlaylistTrack);
                trackXml.Add(new XAttribute(PlaylistTrackFilepath, track));
                tracksXml.Add(trackXml);
            }

            _xmlProvider.Save(xml);
        }
예제 #11
0
 public EditOrderedPlaylistMessage(OrderedPlaylist playlist)
 {
     Playlist = playlist;
 }
예제 #12
0
 public void Delete(OrderedPlaylist playlist)
 {
     _repository.Delete(playlist);
 }
예제 #13
0
 public void Save(OrderedPlaylist playlist)
 {
     _repository.Save(playlist);
 }
예제 #14
0
 private void OnPlay(OrderedPlaylist playlist)
 {
     _playRequestHandler.PlayPlaylist(playlist.Title, _trackSearchService.GetTracks(playlist.Tracks), SortType.Ordered);
 }
예제 #15
0
 private void OnEdit(OrderedPlaylist playlist)
 {
     _messenger.Send(new EditOrderedPlaylistMessage(playlist));
 }
예제 #16
0
        private void OnAddNewPlaylist()
        {
            var newPlaylist = new OrderedPlaylist(0, "New Playlist", false);

            _messenger.Send(new EditOrderedPlaylistMessage(newPlaylist));
        }