private PannableArea pannable;
private Label title_label;
private Label rating_label;
+ private Label cast_label;
private Label plot;
private bool portrait_mode;
// Poster
image = new Image ();
- if (movie.poster != null && movie.poster.large != null) {
- image.pixbuf = movie.poster.large;
- } else {
- if (movie.poster != null && movie.poster.icon != null) {
- // FIXME
- image.pixbuf = movie.poster.icon.scale_simple (268, 424, Gdk.InterpType.BILINEAR);
- } else {
- // FIXME
- if (no_poster == null) try {
- no_poster = new Gdk.Pixbuf.from_file ("/usr/share/icons/hicolor/64x64/hildon/imageviewer_no_pic.png");
- } catch (Error e) {
- critical ("Missing general_video icon: %s\n", e.message);
- }
- image.pixbuf = no_poster;
- }
- try {
- poster_factory = MoviePoster.Factory.get_instance ();
- poster_factory.queue (movie, receive_poster);
- } catch (Error e) {
- warning ("Failed to queue poster request: %s\n", e.message);
- }
- }
-
title_label = new Label (title_label_markup (movie));
title_label.wrap = true;
title_label.use_markup = true;
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 ();
} else {
hbox.pack_start (image, false, false, MARGIN_DOUBLE);
hbox.reorder_child (image, 0);
- plot.set_size_request (800 - 268 /* image */ - 3 * MARGIN_DOUBLE, -1);
+ plot.set_size_request (800 - 288 /* image */ - 3 * MARGIN_DOUBLE, -1);
pannable.set_size_request (-1, 424);
}
menu.movie_deleted.connect (() => { destroy (); });
Gdk.Screen.get_default ().size_changed.connect (on_orientation_changed);
movie.notify.connect (this.on_movie_changed);
+
+ if (movie.poster != null && movie.poster.large != null) {
+ image.pixbuf = movie.poster.large;
+ } else {
+ if (movie.poster != null && movie.poster.small != null) {
+ // FIXME
+ image.pixbuf = movie.poster.small.scale_simple (288, 400, Gdk.InterpType.HYPER);
+ } else {
+ // FIXME
+ if (no_poster == null) try {
+ no_poster = new Gdk.Pixbuf.from_file ("/usr/share/icons/hicolor/64x64/hildon/general_no_thumbnail.png");
+ } catch (Error e) {
+ critical ("Missing general_no_thumbnail icon: %s\n", e.message);
+ }
+ image.pixbuf = no_poster;
+ }
+ try {
+ poster_factory = MoviePoster.Factory.get_instance ();
+ poster_factory.queue (movie, 288, 400, false, receive_poster);
+ } catch (Error e) {
+ warning ("Failed to queue poster request: %s\n", e.message);
+ }
+ }
}
private void update_title (Movie movie) {
return "";
}
+ private string cast_label_markup (Movie movie) {
+ List<Role> 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 <span size=\"small\" fgcolor=\"%s\">(%s)</span>", 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 <small>(%s)</small>", 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();
hbox.pack_start (image, false, false, MARGIN_DOUBLE);
hbox.reorder_child (image, 0);
pannable.set_size_request (-1, 424);
- plot.set_size_request (800 - 268 /* image */ - 3 * MARGIN_DOUBLE, -1);
+ plot.set_size_request (800 - 288 /* image */ - 3 * MARGIN_DOUBLE, -1);
}
}
}