private void OnComboChanged(object obj, EventArgs args) { selected_artist = null; tagview.Tags = null; search_entry.Text = ""; if ((SearchType) search_combo.Active == SearchType.Neighbour) { Search (SearchType.Neighbour, ""); search_entry.Sensitive = false; } else { search_entry.Sensitive = true; } similar_contents.Visible = false; tag_container.Visible = false; neighbour_container.Visible = false; this.SetResponseSensitive (ResponseType.Ok, false); }
private Artist ParseSimilar(string content) { XmlDocument xml = new XmlDocument (); XmlNodeList elemlist; xml.LoadXml (content); elemlist = xml.GetElementsByTagName ("similarartists"); if (elemlist.Count == 0) { return null; } XmlNode artist_node = elemlist[0]; Artist artist = new Artist (); artist.Name = artist_node.Attributes.GetNamedItem ("artist").InnerText; artist.Streamable = (artist_node.Attributes.GetNamedItem ("streamable").InnerText == "1"); artist.ImageUrl = artist_node.Attributes.GetNamedItem ("picture").InnerText; artist.Mbid = artist_node.Attributes.GetNamedItem ("mbid").InnerText; elemlist = xml.GetElementsByTagName ("artist"); // Loop over all the artists adding them as // similar artists IEnumerator ienum = elemlist.GetEnumerator (); while (ienum.MoveNext ()) { XmlNode a_node = (XmlNode) ienum.Current; SimilarArtist similar = new SimilarArtist (); similar.Name = get_node_text (a_node, "name"); similar.Streamable = (get_node_text (a_node, "streamable") == "0"); similar.Mbid = get_node_text (a_node, "mbid"); similar.Url = get_node_text (a_node, "url"); CultureInfo match_fmt = new CultureInfo("", false); similar.Relevance = Decimal.ToInt32(Decimal.Parse (get_node_text (a_node, "match"), match_fmt)); artist.AddSimilarArtist (similar); } return artist; }
private void FillArtistDetails(Artist artist) { selected_artist = artist; if (artist == null) { band_name_label.Markup = Catalog.GetString("Artist not found"); similar_artist_label.Text = ""; similar_contents.Visible = true; search_button.Sensitive = true; this.SetResponseSensitive (ResponseType.Ok, false); return; } if (artist.Streamable == false) { band_name_label.Markup = String.Format(Catalog.GetString("{0} is not streamable."), artist.Name); similar_artist_label.Text = ""; similar_contents.Visible = true; search_button.Sensitive = true; this.SetResponseSensitive (ResponseType.Ok, false); return; } this.SetResponseSensitive (ResponseType.Ok, true); band_name_label.Markup = String.Format(Catalog.GetString("Music that sounds like <b>{0}</b>"),StringUtils.EscapeForPango (artist.Name)); artist.ImageLoaded += new Artist.ImageLoadedHandler (OnImageLoaded); artist.RequestImage (); artist.SimilarArtists.Sort (); StringBuilder sim = new StringBuilder (Catalog.GetString("Featuring: \n")); int i = 0; foreach (SimilarArtist sa in artist.SimilarArtists) { if (sa.Streamable) { // Don't count any artist that // can't be played. continue; } i++; if (i < 9) { sim.Append (sa.Name + ", "); } else if (i == 9) { sim.Append (sa.Name); } } sim.Append (String.Format(Catalog.GetPluralString(" and {0} other.", " and {0} others.", (i - 10) ), (i - 10)) ); similar_artist_label.Text = sim.ToString (); similar_contents.Visible = true; }