Example #1
0
        /// <summary>
        /// Fetches the tracklist of the clicked release and displays it.
        /// </summary>
        /// <param name="sender">Clicked release as <see cref="LastAlbum"/>.</param>
        /// <param name="e">Ignored.</param>
        public async void ReleaseClicked(object sender, EventArgs e)
        {
            if (EnableControls)
            {
                EnableControls = false;

                try
                {
                    var release = sender as Release;

                    OnStatusUpdated("Trying to fetch tracklist from '" + release.Name + "'");

                    LastResponse <LastAlbum> detailedRelease = null;
                    if (release.Mbid != null && release.Mbid != "")
                    {
                        detailedRelease = await _lastfmAlbumAPI.GetInfoByMbidAsync(release.Mbid);
                    }
                    else
                    {
                        detailedRelease = await _lastfmAlbumAPI.GetInfoAsync(release.ArtistName, release.Name);
                    }

                    if (detailedRelease.Success)
                    {
                        FetchedTracks.Clear();
                        foreach (var t in detailedRelease.Content.Tracks)
                        {
                            FetchedTrackViewModel vm = new FetchedTrackViewModel(new ScrobbleBase(t.Name, t.ArtistName, t.AlbumName, "", t.Duration), release.Image);
                            vm.ToScrobbleChanged += ToScrobbleChanged;
                            FetchedTracks.Add(vm);
                        }

                        if (FetchedTracks.Count != 0)
                        {
                            CurrentView = _trackResultView;
                            OnStatusUpdated("Successfully fetched tracklist from '" + release.Name + "'");
                        }
                        else
                        {
                            OnStatusUpdated("'" + release.Name + "' has no tracks");
                        }
                    }
                    else
                    {
                        OnStatusUpdated("Error while fetching tracklist from '" + release.Name + "'");
                    }
                }
                catch (Exception ex)
                {
                    OnStatusUpdated("Fatal error while fetching tracklist from release: " + ex.Message);
                }
                finally
                {
                    EnableControls = true;
                }
            }
        }
        /// <summary>
        /// Fetches the tracklist of the clicked release and displays it.
        /// </summary>
        /// <param name="sender">Clicked release as <see cref="LastAlbum"/>.</param>
        /// <param name="e">Ignored.</param>
        public async void ReleaseClicked(object sender, EventArgs e)
        {
            if (EnableControls)
            {
                EnableControls = false;

                try
                {
                    var release = sender as Release;
                    OnStatusUpdated(string.Format("Trying to fetch tracklist from release '{0}'", release.Name));

                    LastResponse <LastAlbum> response = null;
                    if (!string.IsNullOrEmpty(release.Mbid))
                    {
                        response = await _lastfmAlbumAPI.GetInfoByMbidAsync(release.Mbid);
                    }
                    else
                    {
                        response = await _lastfmAlbumAPI.GetInfoAsync(release.ArtistName, release.Name);
                    }

                    if (response.Success && response.Status == LastResponseStatus.Successful)
                    {
                        FetchedTracks.Clear();
                        foreach (var t in response.Content.Tracks)
                        {
                            FetchedTrackViewModel vm = new FetchedTrackViewModel(new ScrobbleBase(t.Name, t.ArtistName, t.AlbumName, "", t.Duration), release.Image);
                            vm.ToScrobbleChanged += ToScrobbleChanged;
                            FetchedTracks.Add(vm);
                        }

                        if (FetchedTracks.Count != 0)
                        {
                            CurrentView = _trackResultView;
                            OnStatusUpdated(string.Format("Successfully fetched tracklist from release '{0}'", release.Name));
                        }
                        else
                        {
                            OnStatusUpdated(string.Format("Release '{0}' has no tracks", release.Name));
                        }
                    }
                    else
                    {
                        OnStatusUpdated(string.Format("Error while fetching tracklist from release '{0}': {1}", release.Name, response.Status));
                    }
                }
                catch (Exception ex)
                {
                    OnStatusUpdated(string.Format("Fatal error while fetching tracklist from release: {0}", ex.Message));
                }
                finally
                {
                    EnableControls = true;
                }
            }
        }
Example #3
0
        /// <summary>
        /// Shows the tracks of a setlist.
        /// </summary>
        /// <param name="sender">The setlist to get tracks from.</param>
        /// <param name="e">Ignored.</param>
        private void SetlistClicked(object sender, EventArgs e)
        {
            if (EnableControls)
            {
                EnableControls = false;

                try
                {
                    ObservableCollection <FetchedTrackViewModel> vms = new ObservableCollection <FetchedTrackViewModel>();
                    var clickedSetlist = sender as Setlist;
                    foreach (var set in clickedSetlist.Sets)
                    {
                        foreach (var song in set.Songs)
                        {
                            FetchedTrackViewModel vm = new FetchedTrackViewModel(new ScrobbleBase(song.Name, clickedSetlist.Artist.Name), null);
                            vm.ToScrobbleChanged += ToScrobbleChanged;
                            vms.Add(vm);
                        }
                    }

                    if (vms.Count > 0)
                    {
                        OnStatusUpdated("Successfully got tracks from setlist");
                        FetchedTracks = vms;
                        CurrentView   = _trackResultView;
                    }
                    else
                    {
                        OnStatusUpdated("Setlist has no tracks");
                    }
                }
                catch (Exception ex)
                {
                    OnStatusUpdated("Fatal error while getting setlist tracks: " + ex.Message);
                }
                finally
                {
                    EnableControls = true;

                    // more or less a hack, but we cant do it before because EnableControls is false.
                    NotifyOfPropertyChange(() => CanSelectAll);
                    NotifyOfPropertyChange(() => CanSelectNone);
                }
            }
        }