/* * vim: softtabstop=4 shiftwidth=4 cindent foldmethod=marker expandtab * * $LastChangedDate$ * $Revision$ * $LastChangedBy$ * $URL$ * * Copyright 2009-2011 Eric Connell * * This file is part of Mangler. * * Mangler is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Mangler is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Mangler. If not, see . */ #ifndef _MANGLERINTEGRATION_H #define _MANGLERINTEGRATION_H #include "config.h" #ifdef HAVE_LIBMPDCLIENT # include "mpd/client.h" #endif #include #include #ifdef HAVE_DBUS # include # include # include #endif #include #include enum MusicClient { MusicClient_None = 0, #ifdef HAVE_LIBMPDCLIENT MusicClient_MPD, #endif #ifdef HAVE_DBUS MusicClient_Rhythmbox, MusicClient_Amarok, #endif }; class ManglerIntegration{ public: ~ManglerIntegration(); ManglerIntegration(); bool update (bool forceUpdate, const gchar *data = NULL); bool first(); void setClient (MusicClient); Glib::ustring format() const; bool first_sent; Glib::ustring artist; Glib::ustring album; Glib::ustring title; int get_mode() const { return mode; }; #ifdef HAVE_DBUS DBusGProxy * get_player() { return player; }; DBusGProxy * get_shell() { return shell; }; #endif #ifdef HAVE_LIBMPDCLIENT struct mpd_connection *mpd_connection; #endif gchar * get_current_uri_dbus(); void set_current_status (int _status) { current_status = _status; }; Glib::ustring dbus_namespace; Glib::ustring dbus_player; Glib::ustring dbus_player_path; Glib::ustring dbus_shell; Glib::ustring dbus_shell_path; Glib::ustring dbus_uri_changed; Glib::ustring dbus_playing_changed; Glib::ustring dbus_get_current_song; Glib::ustring dbus_get_song_properties; MusicClient client; private: // 0 = polling, 1 = listen int mode; int current_status; // DBus stuff #ifdef HAVE_DBUS DBusGConnection *bus; DBusGProxy *player; DBusGProxy *shell; #endif }; #ifdef HAVE_DBUS void dbus_uri_signal_callback (DBusGProxy *, const gchar *, gpointer); void dbus_playing_changed_callback (DBusGProxy *, gboolean, gpointer); #endif #endif