public virtual void Load(Track track)
        {
            if (Player.CheckAccess())
            {
                var mediaPlayerTrack = track as EightTracksTrack;

                if (mediaPlayerTrack != null)
                {
                    CurrentTrack = mediaPlayerTrack;
                    CurrentTrackElapsed = TimeSpan.Zero;

                    Player.Open(mediaPlayerTrack.Uri);
                }
            }
            else
            {
                Player.Dispatcher.BeginInvoke(new Action<Track>(Load), DispatcherPriority.Background, track);
            }
        }
        protected virtual void OnTrackComplete(Track currentTrack)
        {
            var handler = TrackComplete;

            if (handler != null)
            {
                handler(this, new TrackEventArgs(currentTrack));
            }
        }
        public void Load(Track track)
        {
            var currentTrack = track as GroovesharkTrack;

            if (currentTrack != null)
            {
                lock (_trackPlayerLock)
                {
                    try
                    {
                        if (_trackPlayer != null)
                        {
                            _trackPlayer.Stop();
                        }
                    }
                    catch (Exception e)
                    {
                        _log.Log("While disposing old trackplayer: " + e.Message, Category.Warn, Priority.Medium);
                    }

                    var client = GroovesharkModule.GetClient();
                    var stream = client.GetMusicStream(currentTrack.SongID, currentTrack.ArtistID);

                    Action<Track> trackComplete = OnTrackComplete;
                    Action<bool> isPlaying = parameter => IsPlaying = parameter;
                    Action<bool> isBuffering = parameter => IsBuffering = parameter;
                    Action<double, double> trackProgress = OnTrackProgress;
                    _trackPlayer = new GrooveSharkTrackPlayerHandler(
                        _log,
                        currentTrack,
                        trackComplete,
                        isPlaying,
                        isBuffering,
                        trackProgress);

                    _trackPlayer.Initialize(stream.Stream);
                }
            }
        }
 public virtual bool CanPlay(Track radioTrack)
 {
     return radioTrack is EightTracksTrack;
 }
 public bool CanPlay(Track track)
 {
     return track is GroovesharkTrack;
 }
 public TrackChangedEventArgs(Track previousTrack, Track currentTrack)
 {
     PreviousTrack = previousTrack;
     CurrentTrack = currentTrack;
 }
        public IEnumerable<Track> GetTracksByName(string name)
        {
            Track[] tracks = new Track[0];

            if (!IsLoggedIn())
            {
                return tracks;
            }

            QueryServiceClient query = new QueryServiceClient();

            try
            {
                QueryResult result = query.Query(name, 0, 150, 0, 0, 0, 0);

                tracks = result.Tracks
                    .Where(t => t.IsAvailable)
                    .Select(ConvertTrack)
                    .ToArray();

                query.Close();
            }
            catch (Exception e)
            {
                _logger.Log(e.Message, Category.Exception, Priority.Medium);
                query.Abort();
            }

            return tracks;
        }
 private void ExecuteShareTrack(Track track)
 {
 }
 private bool CanExecuteShareTrack(Track track)
 {
     return true;
 }