private Alignment alignment;
private int count;
private MovieSource source;
+ private bool portrait_mode;
public MovieListWindow (MovieSource source_) {
source = source_;
alignment = new Alignment (0.0f, 0.0f, 1.0f, 1.0f);
alignment.top_padding = MARGIN_HALF;
- alignment.left_padding = MARGIN_DOUBLE;
- alignment.right_padding = MARGIN_DOUBLE;
+
+ // Reduced padding in portrait mode to fit 3 posters in width
+ int padding = portrait_mode ? MARGIN_DEFAULT : MARGIN_DOUBLE;
+ alignment.left_padding = padding;
+ alignment.right_padding = padding;
alignment.add (vbox);
add (alignment);
movie_list.movie_activated.connect (on_movie_activated);
store.row_deleted.connect (on_row_deleted);
store.row_inserted.connect (on_row_inserted);
+ Gdk.Screen.get_default ().size_changed.connect (on_orientation_changed);
store.search_finished.connect (on_search_finished);
store.notify["update-running"].connect (on_update_running_changed);
return false;
}
+ private void on_orientation_changed (Gdk.Screen screen) {
+ if (CinaestProgram.orientation.portrait == portrait_mode)
+ return;
+
+ portrait_mode = CinaestProgram.orientation.portrait;
+
+ // Reduced padding in portrait mode to fit 3 posters in width
+ int padding = portrait_mode ? MARGIN_DEFAULT : MARGIN_DOUBLE;
+ alignment.left_padding = padding;
+
+ // Make space for the pannable area's scroll position indicator
+ if (count > movies_per_screen ())
+ padding -= MARGIN_DEFAULT;
+ alignment.right_padding = padding;
+ }
+
private void on_search_finished (int movies) {
- if (movies > 6)
- alignment.right_padding = MARGIN_DEFAULT;
- else
- alignment.right_padding = MARGIN_DOUBLE;
+ int padding = portrait_mode ? MARGIN_DEFAULT : MARGIN_DOUBLE;
+
+ // Make space for the pannable area's scroll position indicator
+ if (count > movies_per_screen ())
+ padding -= MARGIN_DEFAULT;
+ alignment.right_padding = padding;
+ }
+
+ private int movies_per_screen () {
+ if (portrait_mode) {
+ // 3x3 full posters or 10 full list items
+ return movie_list.poster_mode ? 9 : 10;
+ } else {
+ // 5x2 posters or 6 list items
+ return movie_list.poster_mode ? 10 : 6;
+ }
}
private void on_movie_activated (Movie movie) {