From fa15392c6bd8551fa1e9f5e359dd0821e19c11ed Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Sun, 15 Aug 2010 12:15:43 +0200 Subject: [PATCH] Movie window: display cast information --- src/movie-window.vala | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/movie-window.vala b/src/movie-window.vala index a4433b9..42409dd 100644 --- a/src/movie-window.vala +++ b/src/movie-window.vala @@ -29,6 +29,7 @@ public class MovieWindow : StackableWindow { private PannableArea pannable; private Label title_label; private Label rating_label; + private Label cast_label; private Label plot; private bool portrait_mode; @@ -56,12 +57,18 @@ public class MovieWindow : StackableWindow { rating_label.set_alignment (0.5f, 0.0f); header.pack_start (rating_label, false, false, MARGIN_DOUBLE); + cast_label = new Label (cast_label_markup (movie)); + cast_label.wrap = true; + cast_label.use_markup = true; + cast_label.set_alignment (0.0f, 0.0f); + plot = new Label (movie.get_plot ()); plot.wrap = true; plot.set_alignment (0.0f, 0.0f); details = new VBox (false, MARGIN_DOUBLE); details.pack_start (header, false, false, 0); + details.pack_start (cast_label, false, false, 0); details.pack_start (plot, false, false, 0); var pannable = new PannableArea (); @@ -148,6 +155,42 @@ public class MovieWindow : StackableWindow { return ""; } + private string cast_label_markup (Movie movie) { + List cast = movie.get_cast (); + var markup = new StringBuilder (); + Gdk.Color color; + this.ensure_style (); + + if (this.style.lookup_color ("SecondaryTextColor", out color)) { + foreach (Role role in cast) { + if (markup.len > 0) + markup.append (",\n"); + markup.append_printf ("%s (%s)", display_name (role.actor_name), color.to_string (), role.character); + } + } else { + foreach (Role role in cast) { + if (markup.len > 0) + markup.append (",\n"); + markup.append_printf ("%s (%s)", display_name (role.actor_name), role.character); + } + } + + return markup.str; + } + + private string display_name (string name) { + string[] parts; + if (name.has_suffix (")")) + parts = name.ndup (name.length - 4).split (", "); + else + parts = name.split (", "); + if (parts.length == 2) { + return parts[1] + " " + parts[0]; + } else { + return name; + } + } + private void receive_poster (Gdk.Pixbuf pixbuf, Movie movie) { var poster = new Poster(); -- 1.7.9.5