diff --git a/src/dbus/mmkeys.cpp b/src/dbus/mmkeys.cpp index 4754ce1..a4d8831 100644 --- a/src/dbus/mmkeys.cpp +++ b/src/dbus/mmkeys.cpp @@ -31,13 +31,55 @@ guMMKeys::guMMKeys( guDBusServer * server, guPlayerPanel * playerpanel ) : guDBu RegisterClient(); // Support for the MultimediaKeys - AddMatch( "type='signal',interface='org.gnome.SettingsDaemon'" ); +// AddMatch( "type='signal',interface='org.gnome.SettingsDaemon'" ); AddMatch( "type='signal',interface='org.gnome.SettingsDaemon.MediaKeys'" ); + + GrabMediaPlayerKeys( 0 ); } // -------------------------------------------------------------------------------- // guMMKeys::~guMMKeys() { + ReleaseMediaPlayerKeys(); +} + +// -------------------------------------------------------------------------------- // +void guMMKeys::GrabMediaPlayerKeys( const unsigned int time ) +{ + guDBusMethodCall * Msg = new guDBusMethodCall( "org.gnome.SettingsDaemon", + "/org/gnome/SettingsDaemon/MediaKeys", + "org.gnome.SettingsDaemon.MediaKeys", + "GrabMediaPlayerKeys" ); + + const char * AppId = "Guayadeque"; + + dbus_message_append_args( Msg->GetMessage(), + DBUS_TYPE_STRING, &AppId, + DBUS_TYPE_UINT32, &time, + DBUS_TYPE_INVALID ); + + SendWithReply( Msg ); + + delete Msg; +} + +// -------------------------------------------------------------------------------- // +void guMMKeys::ReleaseMediaPlayerKeys( void ) +{ + guDBusMethodCall * Msg = new guDBusMethodCall( "org.gnome.SettingsDaemon", + "/org/gnome/SettingsDaemon/MediaKeys", + "org.gnome.SettingsDaemon.MediaKeys", + "ReleaseMediaPlayerKeys" ); + + const char * AppId = "Guayadeque"; + + dbus_message_append_args( Msg->GetMessage(), + DBUS_TYPE_STRING, &AppId, + DBUS_TYPE_INVALID ); + + SendWithReply( Msg ); + + delete Msg; } // -------------------------------------------------------------------------------- // @@ -54,8 +96,13 @@ DBusHandlerResult guMMKeys::HandleMessages( guDBusMessage * msg, guDBusMessage * // MULTIMEDIA KEYS if( Type == DBUS_MESSAGE_TYPE_SIGNAL ) // If its a Signal message { - if( !strcmp( Path, "/org/gnome/SettingsDaemon" ) || - !strcmp( Path, "/org/gnome/SettingsDaemon/MediaKeys" ) ) + //guLogMessage( wxT( "**** Received Signal ****\n" ) + // wxT( "Path : '%s'\n" ) + // wxT( "Member : '%s'" ), + // wxString( Path, wxConvUTF8 ).c_str(), + // wxString( Member, wxConvUTF8 ).c_str() + // ); + if( !strcmp( Path, "/org/gnome/SettingsDaemon/MediaKeys" ) ) { if( !strcmp( Member, "MediaPlayerKeyPressed" ) ) { diff --git a/src/dbus/mmkeys.h b/src/dbus/mmkeys.h index a950e70..fa57f9d 100644 --- a/src/dbus/mmkeys.h +++ b/src/dbus/mmkeys.h @@ -28,13 +28,16 @@ class guMMKeys : public guDBusClient { protected : - guPlayerPanel * m_PlayerPanel; + guPlayerPanel * m_PlayerPanel; public : guMMKeys( guDBusServer * server, guPlayerPanel * playerpanel ); ~guMMKeys(); - virtual DBusHandlerResult HandleMessages( guDBusMessage * msg, guDBusMessage * reply = NULL ); + virtual DBusHandlerResult HandleMessages( guDBusMessage * msg, guDBusMessage * reply = NULL ); + + void GrabMediaPlayerKeys( const unsigned int time ); + void ReleaseMediaPlayerKeys( void ); };