17
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
21
20
#ifndef __CD_APPLET_STRUCT__
22
21
#define __CD_APPLET_STRUCT__
24
23
#include <cairo-dock.h>
27
typedef struct _MusicPlayerHandeler MusicPlayerHandeler;
26
typedef struct _MusicPlayerHandler MusicPlayerHandler;
78
57
typedef void (*MusicPlayerGetDataFunc) (void); // acquisition des donnees, threade.
79
typedef void (*MusicPlayerFreeDataFunc) (void); // libere les ressources specifiques au backend (deconnexion des signaux, etc)
80
typedef void (*MusicPlayerConfigureFunc) (void); // initialise le backend (connexion des signaux, etc)
58
typedef void (*MusicPlayerStopFunc) (void); // libere les ressources specifiques au backend (deconnexion des signaux, etc)
59
typedef void (*MusicPlayerStartFunc) (void); // initialise le backend (connexion des signaux, etc)
81
60
typedef void (*MusicPlayerControlerFunc) (MyPlayerControl pControl, const gchar *cFile); // controle du lecteur (play/pause/next/etc)
82
61
typedef void (*MusicPlayerGetCoverFunc) (void); // pour les lecteurs buggues, recupere la couverture. Renseigner ce champ fera que si le lecteur n'a pas renvoye de couverture au changement de chanson, on retentera 2 secondes plus tard avec cette fonction.
84
//A remplir lors du configure pour les players utilisant DBus.
63
struct _MusicPlayerHandler {
64
const gchar *name; // nom du backend.
65
MusicPlayerGetDataFunc get_data;
66
MusicPlayerStopFunc stop;
67
MusicPlayerStartFunc start;
68
MusicPlayerControlerFunc control;
69
MusicPlayerGetCoverFunc get_cover;
70
const gchar *cMprisService; // old Dbus service name
71
const gchar *path; // Player object
88
72
const gchar *interface;
73
const gchar *path2; // TrackList object.
90
74
const gchar *interface2;
93
const gchar *play_pause;
96
const gchar *previous;
97
const gchar *get_status;
98
const gchar *get_title;
99
const gchar *get_artist;
100
const gchar *get_album;
101
const gchar *get_cover_path;
102
const gchar *duration;
103
const gchar *current_position;
106
struct _MusicPlayerHandeler {
107
MusicPlayerGetDataFunc read_data;
108
MusicPlayerFreeDataFunc free_data;
109
MusicPlayerConfigureFunc configure;
110
MusicPlayerControlerFunc control;
111
MusicPlayerGetCoverFunc get_cover;
112
const gchar *cMprisService; // nom du service DBus si le lecteur respecte la norme MPRIS.
113
75
const gchar *appclass; // classe de l'appli.
114
const gchar *name; // nom du backend.
115
76
const gchar *launch; // commande lancant le lecteur.
116
77
gchar *cCoverDir; // repertoire utilisateur de l'appli, contenant les couvertures.
117
gboolean bSeparateAcquisition; // Sert a activer le thread ou pas (TRUE = activé; False = désactivé)
118
MySupportedPlayers iPlayer; // ID du backend.
78
gboolean bSeparateAcquisition; // Sert a activer le thread ou pas (TRUE = active; False = desactive)
119
79
MyPlayerControl iPlayerControls; // un masque "OU" de MyPlayerControl.
135
95
#define MP_DBUS_TYPE_SONG_METADATA (dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE))
97
#define CD_MPRIS2_SERVICE_BASE "org.mpris.MediaPlayer2"
98
#define CD_MPRIS2_OBJ /org/mpris/MediaPlayer2
99
#define CD_MPRIS2_MAIN_IFACE org.mpris.MediaPlayer2
138
101
struct _AppletConfig {
139
102
gboolean bEnableDialogs;
171
135
gchar* cPlayingUri;
172
137
MyPlayerStatus iPlayingStatus, pPreviousPlayingStatus;
173
138
gint iTrackNumber, iPreviousTrackNumber; // track number = position dans la play-list, et non pas numero de piste dans l'album (qui ne nous interesse pas).
174
139
gint iCurrentTime, iPreviousCurrentTime, iGetTimeFailed;