Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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;
        }