예제 #1
0
 private async Task <Mediafile> GetMediafileFromParameterAsync(object path, bool sendUpdateMessage = false)
 {
     if (path is Mediafile)
     {
         isPlayingFromPlaylist = false;
         return(path as Mediafile);
     }
     else if (path is ThreadSafeObservableCollection <Mediafile> )
     {
         SendLibraryLoadedMessage(path as ThreadSafeObservableCollection <Mediafile>, sendUpdateMessage);
         return((path as ThreadSafeObservableCollection <Mediafile>)[0]);
     }
     else if (path is Playlist)
     {
         using (Service.PlaylistService service = new Service.PlaylistService((path as Playlist).Name, (path as Playlist).IsPrivate, (path as Playlist).Password))
         {
             if (service.IsValid)
             {
                 var songList = new ThreadSafeObservableCollection <Mediafile>(await service.GetTracks().ConfigureAwait(false));
                 SendLibraryLoadedMessage(songList, sendUpdateMessage);
                 return(songList[0]);
             }
         }
     }
     return(null);
 }
예제 #2
0
        public async void StopAfter(object path)
        {
            Mediafile mediaFile = null;

            if (path is Mediafile)
            {
                mediaFile             = path as Mediafile;
                isPlayingFromPlaylist = false;
            }
            else if (path is ThreadSafeObservableCollection <Mediafile> )
            {
                mediaFile = (path as ThreadSafeObservableCollection <Mediafile>)[0];
            }
            else if (path is Playlist)
            {
                using (Service.PlaylistService service = new Service.PlaylistService((path as Playlist).Name, (path as Playlist).IsPrivate, (path as Playlist).Password))
                {
                    if (service.IsValid)
                    {
                        var songList = new ThreadSafeObservableCollection <Mediafile>(await service.GetTracks().ConfigureAwait(false));
                        mediaFile = songList[0];
                    }
                }
            }
            else
            {
                return;
            }

            Messenger.Instance.NotifyColleagues(MessageTypes.MSG_STOP_AFTER_SONG, mediaFile);
        }
예제 #3
0
 async void LoadDB()
 {
     using (Service.PlaylistService service = new Service.PlaylistService(Playlist.Name))
     {
         if (service.IsValid)
         {
             var ss = service.GetTrackCount();
             Songs.AddRange(await service.GetTracks().ConfigureAwait(false));
             Refresh();
         }
     }
 }
예제 #4
0
        /// <summary>
        /// Plays the selected file. <seealso cref="PlayCommand"/>
        /// </summary>
        /// <param name="path"><see cref="BreadPlayer.Models.Mediafile"/> to play.</param>
        public async void Play(object path)
        {
            Mediafile mediaFile = null;

            if (path is Mediafile)
            {
                mediaFile             = path as Mediafile;
                isPlayingFromPlaylist = false;
            }
            else if (path is ThreadSafeObservableCollection <Mediafile> )
            {
                mediaFile = (path as ThreadSafeObservableCollection <Mediafile>)[0];
                Messenger.Instance.NotifyColleagues(MessageTypes.MSG_LIBRARY_LOADED, path as ThreadSafeObservableCollection <Mediafile>);
                isPlayingFromPlaylist = true;
            }
            else if (path is Playlist)
            {
                using (Service.PlaylistService service = new Service.PlaylistService((path as Playlist).Name, (path as Playlist).IsPrivate, (path as Playlist).Password))
                {
                    if (service.IsValid)
                    {
                        var songList = new ThreadSafeObservableCollection <Mediafile>(await service.GetTracks().ConfigureAwait(false));
                        mediaFile = songList[0];
                        Messenger.Instance.NotifyColleagues(MessageTypes.MSG_LIBRARY_LOADED, songList);
                        isPlayingFromPlaylist = true;
                    }
                }
            }
            else
            {
                return;
            }

            AddToRecentCollection(mediaFile);
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
            {
                Messenger.Instance.NotifyColleagues(MessageTypes.MSG_PLAY_SONG, new List <object>()
                {
                    mediaFile, true, isPlayingFromPlaylist
                });
                (PlayCommand as RelayCommand).IsEnabled = false;
                await Task.Delay(100);
                (PlayCommand as RelayCommand).IsEnabled = true;

                if (TracksCollection.Elements.FirstOrDefault(t => t.Path == Player?.CurrentlyPlayingFile?.Path) != null)
                {
                    TracksCollection.Elements.FirstOrDefault(t => t.Path == Player?.CurrentlyPlayingFile?.Path).State = PlayerState.Playing;
                }
            });
        }