1 /* 2 * * Copyright (C) 2009-2011 Ali <aliov@xfce.org> 3 * * Copyright (C) 2012-2017 Simon Steinbeiß <ochosi@xfce.org> 4 * * Copyright (C) 2012-2020 Sean Davis <bluesabre@xfce.org> 5 * 6 * Licensed under the GNU General Public License Version 2 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 */ 22 23 #if !defined (__PAROLE_H_INSIDE__) && !defined (PAROLE_COMPILATION) 24 #error "Only <parole.h> can be included directly." 25 #endif 26 27 #ifndef SRC_MISC_PAROLE_PROVIDER_PLAYER_H_ 28 #define SRC_MISC_PAROLE_PROVIDER_PLAYER_H_ 29 30 #include <gtk/gtk.h> 31 32 #include "src/misc/parole-stream.h" 33 34 #include "src/parole-player.h" 35 36 G_BEGIN_DECLS 37 38 #define PAROLE_TYPE_PROVIDER_PLAYER (parole_provider_player_get_type ()) 39 #define PAROLE_PROVIDER_PLAYER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_PROVIDER_PLAYER, ParoleProviderPlayer)) 40 #define PAROLE_IS_PROVIDER_PLAYER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_PROVIDER_PLAYER)) 41 #define PAROLE_PROVIDER_PLAYER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), PAROLE_TYPE_PROVIDER_PLAYER, ParoleProviderPlayerIface)) 42 43 /** 44 * ParoleProviderPlayerIface: 45 * 46 * Interface for #ParoleProviderPlayer 47 * 48 * Since: 0.2 49 */ 50 typedef struct _ParoleProviderPlayerIface ParoleProviderPlayerIface; 51 52 /** 53 * ParoleProviderPlayer: 54 * 55 * The player interface that the plugins should use in order to, issue playback 56 * commands to the Parole GStreamer backend or to get information about the 57 * current playback status. 58 * 59 * Since: 0.2 60 */ 61 typedef struct _ParoleProviderPlayer ParoleProviderPlayer; 62 63 /** 64 * ParolePluginContainer: 65 * @PAROLE_PLUGIN_CONTAINER_PLAYLIST: Playlist container 66 * @PAROLE_PLUGIN_CONTAINER_MAIN_VIEW: Main view container 67 * 68 * Available plugin widget containers. 69 * 70 **/ 71 typedef enum { 72 PAROLE_PLUGIN_CONTAINER_PLAYLIST, 73 PAROLE_PLUGIN_CONTAINER_MAIN_VIEW 74 } ParolePluginContainer; 75 76 77 78 struct _ParoleProviderPlayerIface { 79 GTypeInterface __parent__; 80 81 /*< private >*/ 82 GtkWidget *(*get_main_window) (ParoleProviderPlayer *player); 83 84 void (*pack) (ParoleProviderPlayer *player, 85 GtkWidget *widget, 86 const gchar *title, 87 ParolePluginContainer container); 88 89 ParoleState (*get_state) (ParoleProviderPlayer *player); 90 91 const ParoleStream *(*get_stream) (ParoleProviderPlayer *player); 92 93 gboolean (*play_uri) (ParoleProviderPlayer *player, 94 const gchar *uri); 95 96 gboolean (*pause) (ParoleProviderPlayer *player); 97 98 gboolean (*resume) (ParoleProviderPlayer *player); 99 100 gboolean (*stop) (ParoleProviderPlayer *player); 101 102 gboolean (*play_previous) (ParoleProviderPlayer *player); 103 104 gboolean (*play_next) (ParoleProviderPlayer *player); 105 106 gboolean (*seek) (ParoleProviderPlayer *player, 107 gdouble pos); 108 109 gdouble (*get_stream_position) (ParoleProviderPlayer *player); 110 111 gboolean (*get_fullscreen) (ParoleProviderPlayer *player); 112 113 gboolean (*set_fullscreen) (ParoleProviderPlayer *player, 114 gboolean fullscreen); 115 116 void (*open_media_chooser) (ParoleProviderPlayer *player); 117 118 GSimpleAction* (*get_action) (ParoleProviderPlayer *player, 119 ParolePlayerAction action); 120 121 /*< signals >*/ 122 void (*tag_message) (ParoleProviderPlayer *player, 123 const ParoleStream *stream); 124 125 void (*seeked) (ParoleProviderPlayer *player, 126 gdouble value); 127 128 void (*state_changed) (ParoleProviderPlayer *player, 129 const ParoleStream *stream, 130 ParoleState state); 131 }; 132 133 GType parole_provider_player_get_type (void) G_GNUC_CONST; 134 135 GtkWidget *parole_provider_player_get_main_window 136 (ParoleProviderPlayer *player); 137 138 void parole_provider_player_pack (ParoleProviderPlayer *player, 139 GtkWidget *widget, 140 const gchar *title, 141 ParolePluginContainer container); 142 143 ParoleState parole_provider_player_get_state (ParoleProviderPlayer *player); 144 145 const ParoleStream *parole_provider_player_get_stream 146 (ParoleProviderPlayer *player); 147 148 gboolean parole_provider_player_play_uri (ParoleProviderPlayer *player, 149 const gchar *uri); 150 151 gboolean parole_provider_player_pause (ParoleProviderPlayer *player); 152 153 gboolean parole_provider_player_resume (ParoleProviderPlayer *player); 154 155 gboolean parole_provider_player_stop (ParoleProviderPlayer *player); 156 157 gboolean parole_provider_player_play_previous(ParoleProviderPlayer *player); 158 159 gboolean parole_provider_player_play_next (ParoleProviderPlayer *player); 160 161 gboolean parole_provider_player_seek (ParoleProviderPlayer *player, 162 gdouble pos); 163 164 gdouble parole_provider_player_get_stream_position(ParoleProviderPlayer *player); 165 166 void 167 parole_provider_player_open_media_chooser (ParoleProviderPlayer *player); 168 169 GSimpleAction *parole_provider_player_get_action(ParoleProviderPlayer *player, ParolePlayerAction action); 170 171 gboolean parole_provider_player_get_fullscreen(ParoleProviderPlayer *player); 172 173 gboolean parole_provider_player_set_fullscreen(ParoleProviderPlayer *player, 174 gboolean fullscreen); 175 176 G_END_DECLS 177 178 #endif /* SRC_MISC_PAROLE_PROVIDER_PLAYER_H_ */ 179