+static void
+setup_model_from_metadata (EvWindow *window)
+{
+ gint page;
+ gchar *sizing_mode;
+ gdouble zoom;
+ gint rotation;
+ gboolean inverted_colors = FALSE;
+ gboolean continuous = FALSE;
+ gboolean dual_page = FALSE;
+ gboolean fullscreen = FALSE;
+
+ if (!window->priv->metadata)
+ return;
+
+ /* Current page */
+ if (!window->priv->dest &&
+ ev_metadata_get_int (window->priv->metadata, "page", &page)) {
+ ev_document_model_set_page (window->priv->model, page);
+ }
+
+ /* Sizing mode */
+ if (ev_metadata_get_string (window->priv->metadata, "sizing_mode", &sizing_mode)) {
+ GEnumValue *enum_value;
+
+ enum_value = g_enum_get_value_by_nick
+ (g_type_class_peek (EV_TYPE_SIZING_MODE), sizing_mode);
+ ev_document_model_set_sizing_mode (window->priv->model, enum_value->value);
+ }
+
+ /* Zoom */
+ if (ev_document_model_get_sizing_mode (window->priv->model) == EV_SIZING_FREE &&
+ ev_metadata_get_double (window->priv->metadata, "zoom", &zoom)) {
+ zoom *= get_screen_dpi (window) / 72.0;
+ ev_document_model_set_scale (window->priv->model, zoom);
+ }
+
+ /* Rotation */
+ if (ev_metadata_get_int (window->priv->metadata, "rotation", &rotation)) {
+ switch (rotation) {
+ case 90:
+ rotation = 90;
+ break;
+ case 180:
+ rotation = 180;
+ break;
+ case 270:
+ rotation = 270;
+ break;
+ default:
+ rotation = 0;
+ break;
+ }
+ ev_document_model_set_rotation (window->priv->model, rotation);
+ }
+
+ /* Inverted Colors */
+ if (ev_metadata_get_boolean (window->priv->metadata, "inverted-colors", &inverted_colors))
+ ev_document_model_set_inverted_colors (window->priv->model, inverted_colors);
+
+ /* Continuous */
+ if (ev_metadata_get_boolean (window->priv->metadata, "continuous", &continuous)) {
+ ev_document_model_set_continuous (window->priv->model, continuous);
+ }
+
+ /* Dual page */
+ if (ev_metadata_get_boolean (window->priv->metadata, "dual-page", &dual_page)) {
+ ev_document_model_set_dual_page (window->priv->model, dual_page);
+ }
+
+ /* Fullscreen */
+ if (ev_metadata_get_boolean (window->priv->metadata, "fullscreen", &fullscreen)) {
+ if (fullscreen) {
+ ev_window_run_fullscreen (window);
+ }
+ }
+}
+