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