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