X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmovie-window.vala;h=0aef80510d40be80bd1f3cde9f7cec15fece5c95;hb=0a338328368f9042806158e32f98bebc6657a0ec;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);
+ }
+ }
}