Ejemplo n.º 1
0
        /// <summary>
        ///     Use as callback of every downloads progress
        /// </summary>
        private void DownloadProgress(DownloadOperation download)
        {
            //Thread safety comes first!
            _dispatcherUtility.RunAsync(() =>
            {
                //Get the associated song BackgroundDownload
                var songDownload =
                    ActiveDownloads.FirstOrDefault(
                        p => ((DownloadOperation)p.BackgroundDownload.DownloadOperation).Guid == download.Guid);

                if (songDownload == null)
                {
                    return;
                }

                Debug.WriteLine("Updating song BackgroundDownload progress for {0}", songDownload);

                songDownload.BackgroundDownload.Status =
                    download.Progress.Status.ToString().ToSentenceCase().Replace("Running", "Downloading");

                if (download.Progress.TotalBytesToReceive > 0)
                {
                    songDownload.BackgroundDownload.BytesToReceive = download.Progress.TotalBytesToReceive;
                    songDownload.BackgroundDownload.BytesReceived  = download.Progress.BytesReceived;
                }
                else
                {
                    songDownload.BackgroundDownload.Status = "Waiting";
                }
            });
        }
Ejemplo n.º 2
0
        public async Task DeleteTrackAsync(Track track)
        {
            await Task.Factory.StartNew(() => _sqLiteConnection.Delete(track));

            await _dispatcherUtility.RunAsync(() =>
            {
                DeleteRelatedObjects(track);
                Tracks.Remove(track);
                track.IsFromLibrary = false;
            });
        }
Ejemplo n.º 3
0
 /// <summary>
 ///     MediaPlayer state changed event handlers.
 ///     Note that we can subscribe to events even if Media Player is playing media in background
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private async void MediaPlayer_CurrentStateChanged(MediaPlayer sender, object args)
 {
     CurrentState = sender.CurrentState;
     await _dispatcherUtility.RunAsync(() => { MediaStateChanged?.Invoke(sender, CurrentState); });
 }