X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmovie-window.vala;h=1c34ede4c302690da9555c1dbf5ef2f5ab8c270f;hb=563c736e29a8f3fddc13f00d917eff53c443e25b;hp=6e5b0602bab366b5fc0ac60702f767d70c6af9a0;hpb=f8c20622956655c2c564b643e32333170600cf3e;p=cinaest diff --git a/src/movie-window.vala b/src/movie-window.vala index 6e5b060..1c34ede 100644 --- a/src/movie-window.vala +++ b/src/movie-window.vala @@ -20,24 +20,25 @@ using Gtk; using Hildon; public class MovieWindow : StackableWindow { - private Movie movie; private MovieMenu menu; private Gdk.Pixbuf no_poster; private MoviePoster.Factory poster_factory; + private HBox landscape; + private VBox portrait; private Image image; + private Label label; + private bool portrait_mode; - public MovieWindow.with_movie (Movie movie_) { - movie = movie_; + public MovieWindow.with_movie (Movie movie, MovieListStore store) { set_title (movie.title); // View menu - menu = new MovieMenu (movie); + menu = new MovieMenu (movie, store, this); set_main_menu (menu); // Poster image = new Image (); - image.set_size_request (268, 424); if (movie.poster != null && movie.poster.pixbuf != null) { image.pixbuf = movie.poster.pixbuf; @@ -45,7 +46,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 { @@ -68,19 +69,33 @@ public class MovieWindow : StackableWindow { string year = movie.year > 0 ? " (%d)".printf (movie.year) : ""; string text = "%s%s".printf (genres, year); - var label = new Label (text); + 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); + landscape = new HBox (false, 0); + portrait = new VBox (false, 0); var vbox = new VBox (false, 0); - vbox.pack_start (hbox, true, true, MARGIN_DOUBLE); + vbox.pack_start (landscape, true, true, MARGIN_DOUBLE); + vbox.pack_start (portrait, true, true, MARGIN_DOUBLE); + portrait_mode = CinaestProgram.orientation.portrait; + if (portrait_mode) { + portrait.pack_start (image, false, false, 0); + portrait.pack_start (label, true, true, MARGIN_DOUBLE); + } else { + landscape.pack_start (image, false, true, 0); + landscape.pack_start (label, true, true, MARGIN_DOUBLE); + } + + vbox.show_all (); add (vbox); + + // 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) { @@ -99,5 +114,23 @@ 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) { + landscape.remove (label); + landscape.remove (image); + portrait.pack_start (image, false, false, 0); + portrait.pack_start (label, true, true, MARGIN_DOUBLE); + } else { + portrait.remove (label); + portrait.remove (image); + landscape.pack_start (image, false, true, 0); + landscape.pack_start (label, true, true, MARGIN_DOUBLE); + } + } }