Macro qtTrIdx() replaced by tr() and QT_TRANSLATE_NOOP()
[mafwsubrenderer] / mafw-gst-subtitles-renderer / libmafw-gst-renderer / mafw-gst-renderer-state.h
1 /*
2  * This file is a part of MAFW
3  *
4  * Copyright (C) 2007, 2008, 2009 Nokia Corporation, all rights reserved.
5  *
6  * Contact: Visa Smolander <visa.smolander@nokia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * as published by the Free Software Foundation; version 2.1 of
11  * the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21  * 02110-1301 USA
22  *
23  */
24
25 #ifndef MAFW_GST_RENDERER_STATE_H
26 #define MAFW_GST_RENDERER_STATE_H
27
28
29 #include <glib-object.h>
30 #include "mafw-gst-renderer-worker.h"
31
32 /* Solving the cyclic dependencies */
33 typedef struct _MafwGstRendererState MafwGstRendererState;
34 typedef struct _MafwGstRendererStateClass MafwGstRendererStateClass;
35 #include "mafw-gst-renderer.h"
36
37 G_BEGIN_DECLS
38
39 /*----------------------------------------------------------------------------
40   GObject type conversion macros
41   ----------------------------------------------------------------------------*/
42
43 #define MAFW_TYPE_GST_RENDERER_STATE            \
44         (mafw_gst_renderer_state_get_type())
45 #define MAFW_GST_RENDERER_STATE(obj)                                    \
46         (G_TYPE_CHECK_INSTANCE_CAST((obj), MAFW_TYPE_GST_RENDERER_STATE, \
47                                     MafwGstRendererState))
48 #define MAFW_IS_GST_RENDERER_STATE(obj)                                 \
49         (G_TYPE_CHECK_INSTANCE_TYPE((obj), MAFW_TYPE_GST_RENDERER_STATE))
50 #define MAFW_GST_RENDERER_STATE_CLASS(klass)                            \
51         (G_TYPE_CHECK_CLASS_CAST((klass), MAFW_TYPE_GST_RENDERER_STATE, \
52                                  MafwGstRendererStateClass))
53 #define MAFW_GST_RENDERER_STATE_GET_CLASS(obj)                          \
54         (G_TYPE_INSTANCE_GET_CLASS((obj), MAFW_TYPE_GST_RENDERER_STATE, \
55                                    MafwGstRendererStateClass))
56 #define MAFW_IS_GST_RENDERER_STATE_CLASS(klass)                         \
57         (G_TYPE_CHECK_CLASS_TYPE((klass), MAFW_TYPE_GST_RENDERER_STATE))
58
59 /*----------------------------------------------------------------------------
60   Type definitions
61   ----------------------------------------------------------------------------*/
62
63
64 struct _MafwGstRendererStateClass {
65         GObjectClass parent_class;
66         const gchar* name;
67
68         /* Playback */
69
70         void (*play)(MafwGstRendererState *self, GError **error);
71         void (*play_object)(MafwGstRendererState *self, const gchar *object_id,
72                             GError **error);
73         void (*stop)(MafwGstRendererState *self, GError **error);
74         void (*pause)(MafwGstRendererState *self, GError **error);
75         void (*resume)(MafwGstRendererState *self, GError **error);
76         void (*set_position) (MafwGstRendererState *self,
77                               MafwRendererSeekMode mode, gint seconds,
78                               GError **error);
79         void (*get_position) (MafwGstRendererState *self,
80                               gint *seconds,
81                               GError **error);
82
83         /* Playlist */
84
85         void (*next)(MafwGstRendererState *self, GError **error);
86         void (*previous)(MafwGstRendererState *self, GError **error);
87         void (*goto_index)(MafwGstRendererState *self, guint index,
88                            GError **error);
89
90         /* Notification metadata */
91
92         void (*notify_metadata)(MafwGstRendererState *self,
93                                 const gchar *object_id,
94                                 GHashTable *metadata,
95                                 GError **error);
96
97
98         /* Notifications */
99
100         void (*notify_play)(MafwGstRendererState *self, GError **error);
101         void (*notify_pause)(MafwGstRendererState *self, GError **error);
102         void (*notify_seek)(MafwGstRendererState *self, GError **error);
103         void (*notify_buffer_status)(MafwGstRendererState *self, gdouble percent,
104                                      GError **error);
105         void (*notify_eos) (MafwGstRendererState *self, GError **error);
106
107         /* Playlist editing signals */
108
109         void (*playlist_contents_changed)(MafwGstRendererState *self,
110                                           gboolean clip_changed,
111                                           GError **error);
112         /* Property methods */
113
114         GValue* (*get_property_value)(MafwGstRendererState *self,
115                                       const gchar *name);
116
117         /* Memory card event handlers */
118
119         void (*handle_pre_unmount)(MafwGstRendererState *self,
120                                    const gchar *mount_point);
121 };
122
123 struct _MafwGstRendererState {
124         GObject parent;
125
126         MafwGstRenderer *renderer;
127 };
128
129 GType mafw_gst_renderer_state_get_type(void);
130
131
132 /*----------------------------------------------------------------------------
133   Playback
134   ----------------------------------------------------------------------------*/
135
136 void mafw_gst_renderer_state_play(MafwGstRendererState *self, GError **error);
137 void mafw_gst_renderer_state_play_object(MafwGstRendererState *self,
138                                          const gchar *object_id,
139                                          GError **error);
140 void mafw_gst_renderer_state_stop(MafwGstRendererState *self, GError **error);
141 void mafw_gst_renderer_state_pause(MafwGstRendererState *self, GError **error);
142 void mafw_gst_renderer_state_resume(MafwGstRendererState *self, GError **error);
143 void mafw_gst_renderer_state_set_position(MafwGstRendererState *self,
144                                           MafwRendererSeekMode mode, gint seconds,
145                                           GError **error);
146 void mafw_gst_renderer_state_get_position(MafwGstRendererState *self,
147                                           gint *seconds,
148                                           GError **error);
149
150 /*----------------------------------------------------------------------------
151   Playlist
152   ----------------------------------------------------------------------------*/
153
154 void mafw_gst_renderer_state_next(MafwGstRendererState *self, GError **error);
155 void mafw_gst_renderer_state_previous(MafwGstRendererState *self, GError **error);
156 void mafw_gst_renderer_state_goto_index(MafwGstRendererState *self, guint index,
157                                         GError **error);
158
159
160 /*----------------------------------------------------------------------------
161   Notification metatada
162   ----------------------------------------------------------------------------*/
163
164 void mafw_gst_renderer_state_notify_metadata(MafwGstRendererState *self,
165                                              const gchar *object_id,
166                                              GHashTable *metadata,
167                                              GError **error);
168
169 /*----------------------------------------------------------------------------
170   Notification worker
171   ----------------------------------------------------------------------------*/
172
173 void mafw_gst_renderer_state_notify_play(MafwGstRendererState *self,
174                                          GError **error);
175 void mafw_gst_renderer_state_notify_pause(MafwGstRendererState *self,
176                                           GError **error);
177 void mafw_gst_renderer_state_notify_seek(MafwGstRendererState *self,
178                                          GError **error);
179 void mafw_gst_renderer_state_notify_buffer_status(MafwGstRendererState *self,
180                                                   gdouble percent,
181                                                   GError **error);
182 void mafw_gst_renderer_state_notify_eos(MafwGstRendererState *self,
183                                         GError **error);
184
185 /*----------------------------------------------------------------------------
186   Playlist editing handlers
187   ----------------------------------------------------------------------------*/
188
189 void mafw_gst_renderer_state_playlist_contents_changed_handler(
190         MafwGstRendererState *self,
191         gboolean clip_changed,
192         GError **error);
193
194 /*----------------------------------------------------------------------------
195   Property methods
196   ----------------------------------------------------------------------------*/
197
198 GValue* mafw_gst_renderer_state_get_property_value(MafwGstRendererState *self,
199                                                    const gchar *name);
200
201 /*----------------------------------------------------------------------------
202   Memory card event handlers
203   ----------------------------------------------------------------------------*/
204
205 void mafw_gst_renderer_state_handle_pre_unmount(MafwGstRendererState *self,
206                                                 const gchar *mount_point);
207
208 /*----------------------------------------------------------------------------
209   Helpers
210   ----------------------------------------------------------------------------*/
211
212 void mafw_gst_renderer_state_do_play(MafwGstRendererState *self, GError **error);
213 void mafw_gst_renderer_state_do_play_object(MafwGstRendererState *self,
214                                             const gchar *object_id,
215                                             GError **error);
216 void mafw_gst_renderer_state_do_stop(MafwGstRendererState *self,
217                                      GError **error);
218 void mafw_gst_renderer_state_do_next(MafwGstRendererState *self,
219                                      GError **error);
220 void mafw_gst_renderer_state_do_prev(MafwGstRendererState *self,
221                                      GError **error);
222 void mafw_gst_renderer_state_do_goto_index(MafwGstRendererState *self,
223                                            guint index,
224                                            GError **error);
225 void mafw_gst_renderer_state_do_set_position(MafwGstRendererState *self,
226                                              MafwRendererSeekMode mode, gint seconds,
227                                              GError **error);
228 void mafw_gst_renderer_state_do_get_position(MafwGstRendererState *self,
229                                              gint *seconds,
230                                              GError **error);
231 void mafw_gst_renderer_state_do_notify_seek(MafwGstRendererState *self,
232                                             GError **error);
233 void mafw_gst_renderer_state_do_notify_buffer_status(MafwGstRendererState *self,
234                                                      gdouble percent,
235                                                      GError **error);
236
237 G_END_DECLS
238
239 #endif