Beispiel #1
0
        public AmazonAlbum GetAlbumInformation()
        {
            main.Cursor = Cursors.WaitCursor;
              List<AmazonAlbum> albums = new List<AmazonAlbum>();
              using (AmazonAlbumInfo amazonInfo = new AmazonAlbumInfo())
              {
            albums = amazonInfo.AmazonAlbumSearch(_selectedArtist, _selectedAlbum);
              }

              // Show the Album Selection dialog, if we got more than one album
              AmazonAlbum amazonAlbum = null;
              _askForAlbum = true;
              if (albums.Count > 0)
              {
            _askForAlbum = false;
            if (albums.Count == 1)
            {
              amazonAlbum = albums[0];
              // If we didn't get any disc info, consider the album as not found
              if (amazonAlbum.Discs.Count == 0)
            _askForAlbum = true;
            }
            else
            {
              dlgSearchResult = new AlbumSearchResult();
              for (int i = albums.Count - 1; i >= 0; i--)
              {

            AmazonAlbum foundAlbum = albums[i];

            // Skip Albums with no Discs returned
            if (foundAlbum.Discs.Count == 0)
            {
              albums.RemoveAt(i);
              continue;
            }

            // count the number of tracks, as we may have multiple discs
            int trackCount = 0;
            foreach (List<AmazonAlbumTrack> tracks in foundAlbum.Discs)
              trackCount += tracks.Count;

            ListViewItem lvItem = new ListViewItem(foundAlbum.Artist);
            lvItem.SubItems.Add(foundAlbum.Title);
            lvItem.SubItems.Add(trackCount.ToString());
            lvItem.SubItems.Add(foundAlbum.Year);
            lvItem.SubItems.Add(foundAlbum.Label);
            dlgSearchResult.ResultView.Items.Insert(0, lvItem);
              }
              main.Cursor = Cursors.Default;

              // When the Listview contains no items, none of the found albums has track information
              if (dlgSearchResult.ResultView.Items.Count == 0)
            _askForAlbum = true;
              else
              {
            if (main.ShowModalDialog(dlgSearchResult) == DialogResult.OK)
            {
              if (dlgSearchResult.ResultView.SelectedIndices.Count > 0)
              {
                amazonAlbum = albums[dlgSearchResult.ResultView.SelectedIndices[0]];
              }
              else
                amazonAlbum = albums[0];
            }
            else
            {
              // Don't ask for album again, since the user cancelled
              _askForAlbum = false;
              dlgSearchResult.Dispose();
              return amazonAlbum;
            }
              }
              dlgSearchResult.Dispose();
            }
              }
              main.Cursor = Cursors.Default;
              return amazonAlbum;
        }
        public void SearchForAlbumInformation()
        {
            // Loop through the selected rows and see, if we got an Artist and/or Album set
              // Need at least an album
              foreach (DataGridViewRow row in _tracksGrid.Rows)
              {
            if (!row.Selected)
              continue;

            TrackData track = Options.Songlist[row.Index];
            if (_selectedArtist == "")
              _selectedArtist = track.Artist;

            if (_selectedAlbum == "")
              _selectedAlbum = track.Album;

            // If we found both values, we can leave
            if (_selectedAlbum != "" && _selectedArtist != "")
              break;
              }

              _askForAlbum = (_selectedAlbum == "");

            // If no Album was specified, we need to show the select dialog
            if (_askForAlbum)
            {
                if (!RequestArtistAlbum())
                    return;
            }

            _askForAlbum = false;
            main.Cursor = Cursors.WaitCursor;
            _dlgSearchResult = new AlbumSearchResult();

            var albumSearch = new AlbumSearch(this, _selectedArtist, _selectedAlbum);
            albumSearch.AlbumSites = Options.MainSettings.AlbumInfoSites;
            albumSearch.Run();
        }
Beispiel #3
0
        public AmazonAlbum GetAlbumInformation()
        {
            main.Cursor = Cursors.WaitCursor;
            List <AmazonAlbum> albums = new List <AmazonAlbum>();

            using (AmazonAlbumInfo amazonInfo = new AmazonAlbumInfo())
            {
                albums = amazonInfo.AmazonAlbumSearch(_selectedArtist, _selectedAlbum);
            }

            // Show the Album Selection dialog, if we got more than one album
            AmazonAlbum amazonAlbum = null;

            _askForAlbum = true;
            if (albums.Count > 0)
            {
                _askForAlbum = false;
                if (albums.Count == 1)
                {
                    amazonAlbum = albums[0];
                    // If we didn't get any disc info, consider the album as not found
                    if (amazonAlbum.Discs.Count == 0)
                    {
                        _askForAlbum = true;
                    }
                }
                else
                {
                    dlgSearchResult = new AlbumSearchResult();
                    foreach (AmazonAlbum foundAlbum in albums)
                    {
                        // Skip Albums with no Discs returned
                        if (foundAlbum.Discs.Count == 0)
                        {
                            continue;
                        }

                        // count the number of tracks, as we may have multiple discs
                        int trackCount = 0;
                        foreach (List <AmazonAlbumTrack> tracks in foundAlbum.Discs)
                        {
                            trackCount += tracks.Count;
                        }

                        ListViewItem lvItem = new ListViewItem(foundAlbum.Artist);
                        lvItem.SubItems.Add(foundAlbum.Title);
                        lvItem.SubItems.Add(trackCount.ToString());
                        lvItem.SubItems.Add(foundAlbum.Year);
                        lvItem.SubItems.Add(foundAlbum.Label);
                        dlgSearchResult.ResultView.Items.Add(lvItem);
                    }
                    main.Cursor = Cursors.Default;

                    // When the Listview contains no items, none of the found albums has track information
                    if (dlgSearchResult.ResultView.Items.Count == 0)
                    {
                        _askForAlbum = true;
                    }
                    else
                    {
                        if (main.ShowModalDialog(dlgSearchResult) == DialogResult.OK)
                        {
                            if (dlgSearchResult.ResultView.SelectedIndices.Count > 0)
                            {
                                amazonAlbum = albums[dlgSearchResult.ResultView.SelectedIndices[0]];
                            }
                            else
                            {
                                amazonAlbum = albums[0];
                            }
                        }
                        else
                        {
                            // Don't ask for album again, since the user cancelled
                            _askForAlbum = false;
                            dlgSearchResult.Dispose();
                            return(amazonAlbum);
                        }
                    }
                    dlgSearchResult.Dispose();
                }
            }
            main.Cursor = Cursors.Default;
            return(amazonAlbum);
        }