public RecommendationPane(ContextPage contextPage) : base() { this.context_page = contextPage; main_box = this; main_box.BorderWidth = 5; artist_box = new TitledList(Catalog.GetString("Recommended Artists")); artist_box.ShowAll(); similar_artists_view = new TileView(2); similar_artists_view_sw = new Gtk.ScrolledWindow(); similar_artists_view_sw.SetPolicy(PolicyType.Never, PolicyType.Automatic); similar_artists_view_sw.Add(similar_artists_view); similar_artists_view_sw.ShowAll(); artist_box.PackStart(similar_artists_view_sw, true, true, 0); album_box = new TitledList(null); album_box.TitleWidthChars = 25; album_box.SizeAllocated += OnSideSizeAllocated; album_list = new VBox(); album_box.PackStart(album_list, false, false, 0); track_box = new TitledList(null); track_box.SizeAllocated += OnSideSizeAllocated; track_box.TitleWidthChars = 25; track_list = new VBox(); track_box.PackStart(track_list, true, true, 0); no_artists_pane = new MessagePane(); no_artists_pane.NoShowAll = true; no_artists_pane.Visible = false; string no_results_message; if (!ApplicationContext.Debugging) { no_artists_pane.HeaderIcon = IconThemeUtils.LoadIcon(48, "face-sad", Stock.DialogError); no_results_message = Catalog.GetString("No similar artists found"); } else { no_artists_pane.HeaderIcon = Gdk.Pixbuf.LoadFromResource("no-results.png"); no_results_message = "No one likes your music, fool!"; } no_artists_pane.HeaderMarkup = String.Format("<big><b>{0}</b></big>", GLib.Markup.EscapeText(no_results_message)); artist_box.PackEnd(no_artists_pane, true, true, 0); main_box.PackStart(artist_box, true, true, 5); main_box.PackStart(new VSeparator(), false, false, 0); main_box.PackStart(album_box, false, false, 5); main_box.PackStart(new VSeparator(), false, false, 0); main_box.PackStart(track_box, false, false, 5); no_artists_pane.Hide(); }
private void UpdateForArtist(string artist_name, LastfmData <SimilarArtist> similar_artists, LastfmData <ArtistTopAlbum> top_albums, LastfmData <ArtistTopTrack> top_tracks) { Banshee.Base.ThreadAssist.ProxyToMain(delegate { album_box.Title = String.Format(album_title_format, artist); track_box.Title = String.Format(track_title_format, artist); similar_artists_view.ClearWidgets(); ClearBox(album_list); ClearBox(track_list); // Similar Artists for (int i = 0; i < Math.Min(20, similar_artists.Count); i++) { SimilarArtistTile tile = new SimilarArtistTile(similar_artists[i]); tile.ShowAll(); similar_artists_view.AddWidget(tile); } if (similar_artists.Count > 0) { no_artists_pane.Hide(); similar_artists_view_sw.ShowAll(); } else { similar_artists_view_sw.Hide(); no_artists_pane.ShowAll(); } for (int i = 0; i < Math.Min(5, top_albums.Count); i++) { ArtistTopAlbum album = top_albums[i]; Button album_button = new Button(); album_button.Relief = ReliefStyle.None; Label label = new Label(); label.ModifyFg(StateType.Normal, Style.Text(StateType.Normal)); label.Ellipsize = Pango.EllipsizeMode.End; label.Xalign = 0; label.Markup = String.Format("{0}. {1}", i + 1, GLib.Markup.EscapeText(album.Name)); album_button.Add(label); album_button.Clicked += delegate { Banshee.Web.Browser.Open(album.Url); }; album_list.PackStart(album_button, false, true, 0); } album_box.ShowAll(); for (int i = 0; i < Math.Min(5, top_tracks.Count); i++) { ArtistTopTrack track = top_tracks[i]; Button track_button = new Button(); track_button.Relief = ReliefStyle.None; HBox box = new HBox(); Label label = new Label(); label.ModifyFg(StateType.Normal, Style.Text(StateType.Normal)); label.Ellipsize = Pango.EllipsizeMode.End; label.Xalign = 0; label.Markup = String.Format("{0}. {1}", i + 1, GLib.Markup.EscapeText(track.Name)); /*if(node.SelectSingleNode("track_id") != null) { * box.PackEnd(new Image(now_playing_arrow), false, false, 0); * track_button.Clicked += delegate { * //PlayerEngineCore.OpenPlay(Globals.Library.GetTrack( * //Convert.ToInt32(node.SelectSingleNode("track_id").InnerText))); * }; * } else {*/ track_button.Clicked += delegate { Banshee.Web.Browser.Open(track.Url); }; //} box.PackStart(label, true, true, 0); track_button.Add(box); track_list.PackStart(track_button, false, true, 0); } track_box.ShowAll(); ready = true; refreshing = false; context_page.SetState(Banshee.ContextPane.ContextState.Loaded); }); }
public RecommendationPane(ContextPage contextPage) : base() { this.context_page = contextPage; main_box = this; main_box.BorderWidth = 5; artist_box = new TitledList (Catalog.GetString ("Recommended Artists")); artist_box.ShowAll (); similar_artists_view = new TileView (2); similar_artists_view_sw = new Gtk.ScrolledWindow (); similar_artists_view_sw.SetPolicy (PolicyType.Never, PolicyType.Automatic); similar_artists_view_sw.Add (similar_artists_view); similar_artists_view_sw.ShowAll (); artist_box.PackStart (similar_artists_view_sw, true, true, 0); album_box = new TitledList (null); album_box.TitleWidthChars = 25; album_box.SizeAllocated += OnSideSizeAllocated; album_list = new VBox (); album_box.PackStart (album_list, false, false, 0); track_box = new TitledList (null); track_box.SizeAllocated += OnSideSizeAllocated; track_box.TitleWidthChars = 25; track_list = new VBox (); track_box.PackStart (track_list, true, true, 0); no_artists_pane = new MessagePane (); no_artists_pane.NoShowAll = true; no_artists_pane.Visible = false; string no_results_message; if (!ApplicationContext.Debugging) { no_artists_pane.HeaderIcon = IconThemeUtils.LoadIcon (48, "face-sad", Stock.DialogError); no_results_message = Catalog.GetString("No similar artists found"); } else { no_artists_pane.HeaderIcon = Gdk.Pixbuf.LoadFromResource ("no-results.png"); no_results_message = "No one likes your music, fool!"; } no_artists_pane.HeaderMarkup = String.Format ("<big><b>{0}</b></big>", GLib.Markup.EscapeText (no_results_message)); artist_box.PackEnd (no_artists_pane, true, true, 0); main_box.PackStart (artist_box, true, true, 5); main_box.PackStart (new VSeparator (), false, false, 0); main_box.PackStart (album_box, false, false, 5); main_box.PackStart (new VSeparator (), false, false, 0); main_box.PackStart (track_box, false, false, 5); no_artists_pane.Hide (); }
private void RenderRecommendationData(string artist, XmlNodeList artistsXmlList, XmlNodeList tracksXmlList, XmlNodeList albumsXmlList) { // Wipe the old recommendations here, we keep them around in case // where the the artist is the same as the last song. similar_artists_view.ClearWidgets(); foreach (Widget child in tracks_items_box.Children) { tracks_items_box.Remove(child); } foreach (Widget child in albums_items_box.Children) { albums_items_box.Remove(child); } // Display recommendations and artist information current_artist = artist; tracks_header.Markup = "<b>" + String.Format(Catalog.GetString("Top Tracks by {0}"), GLib.Markup.EscapeText(artist)) + "</b>"; albums_header.Markup = "<b>" + String.Format(Catalog.GetString("Top Albums by {0}"), GLib.Markup.EscapeText(artist)) + "</b>"; artists_widgets_list.Clear(); ShowAll(); if (artistsXmlList != null && artistsXmlList.Count > 0) { for (int i = 0; i < artistsXmlList.Count && i < NUM_MAX_ARTISTS; i++) { artists_widgets_list.Add(RenderSimilarArtist(artistsXmlList[i])); } RenderSimilarArtists(); no_artists_pane.Hide(); similar_artists_view_sw.ShowAll(); } else { similar_artists_view_sw.Hide(); no_artists_pane.ShowAll(); } if (tracksXmlList != null) { for (int i = 0; i < tracksXmlList.Count && i < NUM_TRACKS; i++) { tracks_items_box.PackStart(RenderTrack(tracksXmlList[i], i + 1), false, true, 0); } tracks_items_box.ShowAll(); } if (albumsXmlList != null) { for (int i = 0; i < albumsXmlList.Count && i < NUM_ALBUMS; i++) { albums_items_box.PackStart(RenderAlbum(albumsXmlList[i], i + 1), false, true, 0); } albums_items_box.ShowAll(); } }