X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmovie-window.vala;h=0aef80510d40be80bd1f3cde9f7cec15fece5c95;hb=433b60465a8acafd931aa3058c7d3f198b50dfe7;hp=755fad10155732a9cacc32f46b532d12c08cd5a1;hpb=4f27377fa3a0ebc74d71b5db495c71d270ece75a;p=cinaest diff --git a/src/movie-window.vala b/src/movie-window.vala index 755fad1..0aef805 100644 --- a/src/movie-window.vala +++ b/src/movie-window.vala @@ -23,7 +23,12 @@ public class MovieWindow : StackableWindow { private MovieMenu menu; private Gdk.Pixbuf no_poster; private MoviePoster.Factory poster_factory; + private HBox hbox; private Image image; + private VBox details; + private PannableArea pannable; + private Label plot; + private bool portrait_mode; public MovieWindow.with_movie (Movie movie, MovieListStore store) { set_title (movie.title); @@ -35,7 +40,6 @@ public class MovieWindow : StackableWindow { // Poster image = new Image (); - image.set_size_request (268, 424); if (movie.poster != null && movie.poster.pixbuf != null) { image.pixbuf = movie.poster.pixbuf; @@ -43,7 +47,7 @@ public class MovieWindow : StackableWindow { movie.notify.connect (this.on_movie_changed); if (movie.poster != null && movie.poster.thumbnail != null) { // FIXME - image.pixbuf = movie.poster.thumbnail.scale_simple (244, 400, Gdk.InterpType.BILINEAR); + image.pixbuf = movie.poster.thumbnail.scale_simple (268, 424, Gdk.InterpType.BILINEAR); } else { // FIXME if (no_poster == null) try { @@ -62,23 +66,58 @@ public class MovieWindow : StackableWindow { } // Text area - string genres = movie.genres.to_string (); string year = movie.year > 0 ? " (%d)".printf (movie.year) : ""; - string text = "%s%s".printf (genres, year); - + string text = "%s%s\n%s".printf (movie.title, year, movie.secondary); var label = new Label (text); label.wrap = true; label.use_markup = true; label.set_alignment (0.0f, 0.0f); - var hbox = new HBox (false, 0); - hbox.pack_start (image, false, true, 0); - hbox.pack_start (label, true, true, MARGIN_DOUBLE); + var header = new HBox (false, 0); + header.pack_start (label, true, true, 0); + if (movie.rating > 0) { + text = "%d.%d".printf (movie.rating / 10, movie.rating % 10); + var rating = new Label (text); + rating.use_markup = true; + rating.set_alignment (0.5f, 0.0f); + header.pack_start (rating, false, false, MARGIN_DOUBLE); + } + + 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 (plot, false, false, 0); - var vbox = new VBox (false, 0); - vbox.pack_start (hbox, true, true, MARGIN_DOUBLE); + var pannable = new PannableArea (); + var eventbox = new EventBox (); + eventbox.add (details); + eventbox.above_child = true; + pannable.add_with_viewport (eventbox); - add (vbox); + hbox = new HBox (false, 0); + hbox.pack_start (pannable, true, true, 0); + + portrait_mode = CinaestProgram.orientation.portrait; + if (portrait_mode) { + details.pack_start (image, false, false, 0); + details.reorder_child (image, 0); + plot.set_size_request (480 - 2 * MARGIN_DOUBLE, -1); + } 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); + pannable.set_size_request (-1, 424); + } + + hbox.show_all (); + add (hbox); + + // Connect signals + menu.movie_deleted.connect (() => { destroy (); }); + Gdk.Screen.get_default ().size_changed.connect (on_orientation_changed); } private void receive_poster (Gdk.Pixbuf pixbuf, Movie movie) { @@ -97,5 +136,25 @@ public class MovieWindow : StackableWindow { image.pixbuf = movie.poster.pixbuf; } } + + private void on_orientation_changed (Gdk.Screen screen) { + if (CinaestProgram.orientation.portrait == portrait_mode) + return; + + portrait_mode = CinaestProgram.orientation.portrait; + if (portrait_mode) { + hbox.remove (image); + details.pack_start (image, false, false, 0); + details.reorder_child (image, 0); + plot.set_size_request (480 - 2 * MARGIN_DOUBLE, -1); + pannable.set_size_request (-1, -1); + } else { + details.remove (image); + 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); + } + } }