glib: Expose movie play mode

With this patch the movie play mode can be queried via the glib
interface. An enum value is obtained that reports whether the movie
should be played once, in loop, and so forth...

https://bugs.freedesktop.org/show_bug.cgi?id=99625
diff --git a/glib/poppler-movie.cc b/glib/poppler-movie.cc
index cb5a2ad..be1d518 100644
--- a/glib/poppler-movie.cc
+++ b/glib/poppler-movie.cc
@@ -2,6 +2,7 @@
  *
  * Copyright (C) 2010 Carlos Garcia Campos <carlosgc@gnome.org>
  * Copyright (C) 2008 Hugo Mercier <hmercier31[@]gmail.com>
+ * Copyright (C) 2017 Francesco Poli <invernomuto@paranoici.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -36,6 +37,7 @@
   gchar   *filename;
   gboolean need_poster;
   gboolean show_controls;
+  PopplerMoviePlayMode mode;
 };
 
 struct _PopplerMovieClass
@@ -91,6 +93,21 @@
 
   movie->show_controls = poppler_movie->getActivationParameters()->showControls;
 
+  switch (poppler_movie->getActivationParameters()->repeatMode) {
+  case MovieActivationParameters::repeatModeOnce:
+    movie->mode = POPPLER_MOVIE_PLAY_MODE_ONCE;
+    break;
+  case MovieActivationParameters::repeatModeOpen:
+    movie->mode = POPPLER_MOVIE_PLAY_MODE_OPEN;
+    break;
+  case MovieActivationParameters::repeatModeRepeat:
+    movie->mode = POPPLER_MOVIE_PLAY_MODE_REPEAT;
+    break;
+  case MovieActivationParameters::repeatModePalindrome:
+    movie->mode = POPPLER_MOVIE_PLAY_MODE_PALINDROME;
+    break;
+  }
+
   return movie;
 }
 
@@ -150,3 +167,21 @@
 
   return poppler_movie->show_controls;
 }
+
+/**
+ * poppler_movie_get_play_mode:
+ * @poppler_movie: a #PopplerMovie
+ *
+ * Returns the play mode of @poppler_movie.
+ *
+ * Return value: a #PopplerMovieRepeatMode.
+ *
+ * Since: 0.54
+ */
+PopplerMoviePlayMode
+poppler_movie_get_play_mode (PopplerMovie *poppler_movie)
+{
+  g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), POPPLER_MOVIE_PLAY_MODE_ONCE);
+
+  return poppler_movie->mode;
+}
diff --git a/glib/poppler-movie.h b/glib/poppler-movie.h
index 9e1bc32..d76522a 100644
--- a/glib/poppler-movie.h
+++ b/glib/poppler-movie.h
@@ -2,6 +2,7 @@
  *
  * Copyright (C) 2010 Carlos Garcia Campos <carlosgc@gnome.org>
  * Copyright (C) 2008 Hugo Mercier <hmercier31[@]gmail.com>
+ * Copyright (C) 2017 Francesco Poli <invernomuto@paranoici.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -30,11 +31,31 @@
 #define POPPLER_MOVIE(obj)                   (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_MOVIE, PopplerMovie))
 #define POPPLER_IS_MOVIE(obj)                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), POPPLER_TYPE_MOVIE))
 
+/**
+ * PopplerMoviePlayMode:
+ * @POPPLER_MOVIE_PLAY_MODE_ONCE: the movie should be played once and controls should be closed at the end.
+ * @POPPLER_MOVIE_PLAY_MODE_OPEN: the movie should be played once, but controls should be left open.
+ * @POPPLER_MOVIE_PLAY_MODE_REPEAT: the movie should be played in loop, until manually stopped.
+ * @POPPLER_MOVIE_PLAY_MODE_PALINDROME: the movie should be played forward and backward, forward and backward,
+ *   and so forth, until manually stopped.
+ *
+ * Play mode enum values.
+ *
+ * Since: 0.54
+ */
+typedef enum
+{
+  POPPLER_MOVIE_PLAY_MODE_ONCE,
+  POPPLER_MOVIE_PLAY_MODE_OPEN,
+  POPPLER_MOVIE_PLAY_MODE_REPEAT,
+  POPPLER_MOVIE_PLAY_MODE_PALINDROME
+} PopplerMoviePlayMode;
 
-GType        poppler_movie_get_type      (void) G_GNUC_CONST;
-const gchar *poppler_movie_get_filename  (PopplerMovie *poppler_movie);
-gboolean     poppler_movie_need_poster   (PopplerMovie *poppler_movie);
-gboolean     poppler_movie_show_controls (PopplerMovie *poppler_movie);
+GType                poppler_movie_get_type      (void) G_GNUC_CONST;
+const gchar         *poppler_movie_get_filename  (PopplerMovie *poppler_movie);
+gboolean             poppler_movie_need_poster   (PopplerMovie *poppler_movie);
+gboolean             poppler_movie_show_controls (PopplerMovie *poppler_movie);
+PopplerMoviePlayMode poppler_movie_get_play_mode (PopplerMovie *poppler_movie);
 
 G_END_DECLS
 
diff --git a/glib/reference/poppler-sections.txt b/glib/reference/poppler-sections.txt
index d597c2d..af1bbba 100644
--- a/glib/reference/poppler-sections.txt
+++ b/glib/reference/poppler-sections.txt
@@ -555,16 +555,20 @@
 <FILE>poppler-movie</FILE>
 <TITLE>PopplerMovie</TITLE>
 PopplerMovie
+PopplerMoviePlayMode
 poppler_movie_get_filename
 poppler_movie_need_poster
 poppler_movie_show_controls
+poppler_movie_get_play_mode
 
 <SUBSECTION Standard>
 POPPLER_MOVIE
 POPPLER_IS_MOVIE
 POPPLER_TYPE_MOVIE
+POPPLER_TYPE_MOVIE_PLAY_MODE
 <SUBSECTION Private>
 poppler_movie_get_type
+poppler_movie_play_mode_get_type
 
 </SECTION>