示例#1
0
 public EditPlaylistDialog(PlaylistToDisplay p)
 {
     this.DataContext = this;
     Playlist         = p;
     NewPlaylistName  = p.Name;
     this.InitializeComponent();
 }
 private void DeletePlaylist(PlaylistToDisplay obj)
 {
     try
     {
         PlaylistService.DeletePlaylist(obj.id);
         RefreshPlaylists();
     }
     catch (Exception ex)
     {
         Logger.LogError(this, ex.Message);
         ShowErrorMessage("There was an error during deleting playlist.");
     }
 }
示例#3
0
        /// <summary>
        /// Plays playlist passed as a parameter
        /// </summary>
        /// <param name="playlist"></param>
        /// <returns></returns>
        public async Task PlayPlaylist(PlaylistToDisplay playlist)
        {
            if (playlist == null)
            {
                throw new ArgumentNullException("There was an error during fetching tracks for playlist. Play playlist failed.");
            }
            var tracks = PlaylistTrackService.GetPlaylistTracks(playlist.id).OrderBy(pt => pt.TrackOrder);

            if (tracks == null)
            {
                throw new EmptyPlaylistException("Playlist does not contain any tracks.");
            }
            else if (tracks.Count() == 0)
            {
                throw new EmptyPlaylistException("Playlist does not contain any tracks.");
            }
            List <PlaylistTrackToDisplay> deletedPlaylistTracks = new List <PlaylistTrackToDisplay>();

            Playlist = playlist;
            // Clear tracks from current playlist
            Tracks.Clear();
            foreach (var t in tracks)
            {
                var tempTrack = await SoundCloudHelper.GetSoundCloudTrack(t.TrackID);

                if (tempTrack != null)
                {
                    Tracks.Add(tempTrack);
                }
                else
                {
                    deletedPlaylistTracks.Add(t);
                }
            }
            MessageService.SendMessageToBackground(this, new UpdatePlaylistMessage(Tracks.ToList()));
            if (deletedPlaylistTracks.Count > 0)
            {
                foreach (var deletedPlaylistTrack in deletedPlaylistTracks)
                {
                    PlaylistTrackService.DeletePlaylistTrack(deletedPlaylistTrack.id);
                }
                for (int i = 0; i < Tracks.Count; ++i)
                {
                    var movedTrack = PlaylistTrackService.GetPlaylistTrack(Playlist.id, (int)Tracks[i].id);
                    movedTrack.TrackOrder = i;
                    PlaylistTrackService.ModifyPlaylistTrack(movedTrack);
                }
                throw new SoundCloudTrackNotAvailableException($"Some of your tracks were deleted from playlist {playlist.Name}, because they were no longer available on SoundCloud", deletedPlaylistTracks.Select(pt => pt.id).ToList());
            }
        }
 private void EditPlaylist(PlaylistToDisplay obj)
 {
     if (obj != null)
     {
         WindowWrapper.Current().Dispatcher.Dispatch(() =>
         {
             var modal = Window.Current.Content as ModalDialog;
             var editPlaylistDialog      = new EditPlaylistDialog(obj);
             editPlaylistDialog.Closing += DialogClosed;
             modal.ModalContent          = editPlaylistDialog;
             modal.IsModal         = true;
             modal.ModalBackground = new SolidColorBrush(Colors.Transparent);
         });
     }
 }
示例#5
0
 /// <summary>
 /// Modifies playlist in database
 /// </summary>
 /// <param name="playlist"></param>
 public static void ModifyPlaylist(PlaylistToDisplay playlist)
 {
     if (playlist != null)
     {
         using (var db = new TraxxPlayerContext())
         {
             if (PlaylistExist(playlist.id))
             {
                 var playlistToModify = db.Playlists.First(p => p.id == playlist.id);
                 playlistToModify.Name = playlist.Name;
                 db.SaveChanges();
             }
             else
             {
                 throw new Exception("Playlist with provided id doesn't exist. Modify failed");
             }
         }
     }
     else
     {
         throw new Exception("Playlist cannot be null. Modify failed");
     }
 }
示例#6
0
        public async void AddTrackToPlaylist(PlaylistToDisplay playlistSelected)
        {
            try
            {
                if (rightTappedTrack != null && playlistSelected != null)
                {
                    PlaylistTrackService.AddPlaylistTrack(new PlaylistTrackToAdd()
                    {
                        PlaylistID = playlistSelected.id, TrackID = (int)rightTappedTrack.id
                    });
                    if (App.PlaylistManager.Playlist.id == playlistSelected.id)
                    {
                        await App.PlaylistManager.PlayPlaylist(App.PlaylistManager.Playlist);

                        App.PlaylistManager.PlayPlaylistTrack(rightTappedTrack);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(this, ex.Message);
                ShowErrorMessage("There was an error during adding track to playlist.");
            }
        }
示例#7
0
 /// <summary>
 /// Stops playing
 /// </summary>
 public void StopPlayer()
 {
     Tracks.Clear();
     Playlist = null;
     MessageService.SendMessageToBackground(this, new ShutdownBackgroundMediaPlayer());
 }