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(); }
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); }