1 #ifndef GBEMOL_MPD_H
2 #define GBEMOL_MPD_H
3 
4 #include <gtk/gtk.h>
5 #include "libmpdclient.h"
6 /*
7  * Type macros.
8  */
9 
10 G_BEGIN_DECLS
11 
12 #define GBEMOL_TYPE_MPD         (gbemol_mpd_get_type ())
13 #define GBEMOL_MPD(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GBEMOL_TYPE_MPD, GbemolMpd))
14 #define GBEMOL_MPD_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GBEMOL_TYPE_MPD, GbemolMpdClass))
15 #define GBEMOL_IS_MPD(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GBEMOL_TYPE_MPD))
16 #define GBEMOL_IS_MPD_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GBEMOL_TYPE_MPD))
17 #define GBEMOL_MPD_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GBEMOL_TYPE_MPD, GbemolMpdClass))
18 
19 typedef struct _GbemolMpd GbemolMpd;
20 typedef struct _GbemolMpdClass GbemolMpdClass;
21 typedef struct _GbemolMpdPrivate GbemolMpdPrivate;
22 
23 /* Naming conventions typedefs */
24 typedef mpd_Status GbemolMpdStatus;
25 typedef mpd_Song GbemolMpdSong;
26 typedef mpd_InfoEntity GbemolMpdInfo;
27 typedef mpd_OutputEntity GbemolMpdOutput;
28 
29 struct _GbemolMpd {
30   GObject parent;
31   GbemolMpdStatus *status;
32   GbemolMpdPrivate *priv;
33 };
34 
35 
36 struct _GbemolMpdClass {
37   GObjectClass parent;
38 };
39 
40 GType gbemol_mpd_get_type (void);
41 
42 /* Methods */
43 
44 /* New GbemolMpd with default values */
45 GbemolMpd* gbemol_mpd_new_with_defaults (void);
46 GbemolMpd* gbemol_mpd_new (const gchar *host, const gchar *pass, int port, float timeout);
47 
48 /* Connection Methods */
49 gboolean gbemol_mpd_connect (GbemolMpd *obj);
50 gboolean gbemol_mpd_connect_and_authenticate (GbemolMpd* obj);
51 void gbemol_mpd_disconnect (GbemolMpd *obj);
52 gboolean gbemol_mpd_is_connected (GbemolMpd *obj);
53 gchar* gbemol_mpd_get_version (GbemolMpd* obj);
54 
55 /* Authenticate the connection with the password */
56 gboolean gbemol_mpd_authenticate (GbemolMpd *obj);
57 
58 /* Property set methods */
59 void gbemol_mpd_set_host (GbemolMpd *obj, const gchar *host);
60 void gbemol_mpd_set_pass (GbemolMpd *obj, const gchar *pass);
61 void gbemol_mpd_set_port (GbemolMpd *obj, guint port);
62 void gbemol_mpd_set_timeout (GbemolMpd *obj, gfloat timeout);
63 
64 /* Player Methods */
65 void gbemol_mpd_player_next (GbemolMpd *obj);
66 void gbemol_mpd_player_previous (GbemolMpd *obj);
67 void gbemol_mpd_player_pause (GbemolMpd *obj);
68 void gbemol_mpd_player_stop (GbemolMpd *obj);
69 void gbemol_mpd_player_play_song_by_id (GbemolMpd *obj, int id);
70 void gbemol_mpd_player_play_song_by_pos (GbemolMpd *obj, int pos);
71 void gbemol_mpd_set_random (GbemolMpd *obj, gboolean random);
72 void gbemol_mpd_set_repeat (GbemolMpd *obj, gboolean repeat);
73 void gbemol_mpd_seek (GbemolMpd *obj, int id, int sec);
74 void gbemol_mpd_crossfade (GbemolMpd *obj, int fade);
75 void gbemol_mpd_set_volume (GbemolMpd *obj, int vol);
76 GbemolMpdSong* gbemol_mpd_get_current_song (GbemolMpd *obj);
77 
78 gboolean gbemol_mpd_song_is_stream (GbemolMpdSong* song);
79 
80 /* playlist methods */
81 GList* gbemol_mpd_playlist_get_songs (GbemolMpd *obj);
82 GbemolMpdSong* gbemol_mpd_playlist_get_song_by_id (GbemolMpd *obj, gint id);
83 void gbemol_mpd_playlist_clear (GbemolMpd *obj);
84 void gbemol_mpd_playlist_shuffle (GbemolMpd *obj);
85 void gbemol_mpd_playlist_remove_song_by_id (GbemolMpd *obj, gint id);
86 void gbemol_mpd_playlist_remove_song_by_pos (GbemolMpd *obj, gint pos);
87 void gbemol_mpd_playlist_add_song (GbemolMpd* obj, gchar* path);
88 
89 /* playlist files methods */
90 GList* gbemol_mpd_get_playlists (GbemolMpd *obj);
91 GList* gbemol_mpd_preview_playlist (GbemolMpd *obj, gchar *path);
92 void gbemol_mpd_load_playlist (GbemolMpd *obj, gchar *path);
93 void gbemol_mpd_delete_playlist (GbemolMpd *obj, gchar *path);
94 gboolean gbemol_mpd_save_playlist (GbemolMpd *obj, gchar *path);
95 
96 /* Memory methods */
97 void gbemol_mpd_free_song (GbemolMpdSong *song);
98 void gbemol_mpd_free_song_list (GList *songs);
99 void gbemol_mpd_free_char_list (GList *l);
100 void gbemol_mpd_free_output_list (GList *l);
101 GbemolMpdSong* gbemol_mpd_songdup(GbemolMpdSong* song);
102 
103 /* Queue functions */
104 void gbemol_mpd_queue_start (GbemolMpd *obj);
105 void gbemol_mpd_queue_finish (GbemolMpd* obj);
106 void gbemol_mpd_queue_remove_song (GbemolMpd* obj, gint id);
107 void gbemol_mpd_queue_add_song (GbemolMpd *obj, gchar* path);
108 
109 /* Search functions */
110 void gbemol_mpd_search_field_start (GbemolMpd* obj, gint field);
111 void gbemol_mpd_search_add_constraint (GbemolMpd* obj, gint tag, gchar* value);
112 GList* gbemol_mpd_search_field_get_results (GbemolMpd* obj, gint tag);
113 GList* gbemol_mpd_search_get_results (GbemolMpd* obj);
114 void gbemol_mpd_search_start (GbemolMpd* obj);
115 void gbemol_mpd_search_commit (GbemolMpd* obj);
116 
117 /* DB Functions */
118 GList* gbemol_mpd_database_get_all_songs (GbemolMpd* obj);
119 void gbemol_mpd_database_update (GbemolMpd* obj, gchar* path);
120 
121 /* Output functions */
122 void gbemol_mpd_output_set_active (GbemolMpd* obj, gint id, gboolean active);
123 GList* gbemol_mpd_output_get_list (GbemolMpd* obj);
124 
125 /* Status retrieval functions */
126 gint gbemol_mpd_get_crossfade (GbemolMpd* obj);
127 gint gbemol_mpd_get_state (GbemolMpd* obj);
128 gint gbemol_mpd_get_current_id (GbemolMpd* obj);
129 gint gbemol_mpd_get_total_time (GbemolMpd* obj);
130 
131 
132 gboolean gbemol_mpd_check_permission (GbemolMpd *obj, gchar *command);
133 
134 
135 
136 G_END_DECLS
137 
138 
139 #endif
140