diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c index ea6076d0f..77fcb0f8b 100644 --- a/sflphone-client-gnome/src/actions.c +++ b/sflphone-client-gnome/src/actions.c @@ -833,12 +833,12 @@ sflphone_get_current_codec_name() } void -sflphone_add_participant() +sflphone_detach_participant() { - DEBUG("sflphone add participant to conference"); + DEBUG("sflphone detach participant from conference"); callable_obj_t * selectedCall = calltab_get_selected_call(current_calls); - dbus_add_participant(selectedCall); + dbus_detach_participant(selectedCall); } void diff --git a/sflphone-client-gnome/src/dbus/callmanager-introspec.xml b/sflphone-client-gnome/src/dbus/callmanager-introspec.xml index 62b9d5db6..f627cd73d 100644 --- a/sflphone-client-gnome/src/dbus/callmanager-introspec.xml +++ b/sflphone-client-gnome/src/dbus/callmanager-introspec.xml @@ -61,6 +61,14 @@ + + + + + + + + diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c index 02cbc3fad..bf3a03d2b 100644 --- a/sflphone-client-gnome/src/dbus/dbus.c +++ b/sflphone-client-gnome/src/dbus/dbus.c @@ -1242,24 +1242,6 @@ dbus_set_volume_controls( ) } } - void -dbus_add_participant(const callable_obj_t * c) -{ - - DEBUG("dbus_add_participant %s\n", c->_callID); - - GError* error = NULL; - org_sflphone_SFLphone_CallManager_add_participant( - callManagerProxy, - c->_callID, - &error); - if(error) - { - g_error_free(error); - } - -} - dbus_join_participant(const callable_obj_t * c_sel, const callable_obj_t * c_drag) { @@ -1278,6 +1260,24 @@ dbus_join_participant(const callable_obj_t * c_sel, const callable_obj_t * c_dra g_error_free(error); } +} + + void +dbus_detach_participant(const callable_obj_t * c) +{ + + DEBUG("dbus_detach_participant %s\n", c->_callID); + + GError* error = NULL; + org_sflphone_SFLphone_CallManager_detach_participant( + callManagerProxy, + c->_callID, + &error); + if(error) + { + g_error_free(error); + } + } diff --git a/sflphone-client-gnome/src/toolbar.c b/sflphone-client-gnome/src/toolbar.c index b88d67fd1..35995dbb2 100644 --- a/sflphone-client-gnome/src/toolbar.c +++ b/sflphone-client-gnome/src/toolbar.c @@ -30,9 +30,9 @@ is_inserted( GtkWidget* button ) * Static create_conference */ static void -conference_button( GtkWidget *widget UNUSED, gpointer data UNUSED) +detach_button( GtkWidget *widget UNUSED, gpointer data UNUSED) { - sflphone_add_participant(); + sflphone_detach_participant(); } /** @@ -165,6 +165,7 @@ GtkWidget *create_toolbar () { GtkWidget *ret; GtkWidget *image; + const gchar *label_detach; ret = gtk_toolbar_new(); toolbar = ret; @@ -277,14 +278,16 @@ GtkWidget *create_toolbar () gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(recButton), -1); - conferenceButton = gtk_tool_button_new_from_stock (GTK_STOCK_MEDIA_RECORD); + detachButton = gtk_tool_button_new_from_stock (GTK_STOCK_MEDIA_RECORD); + label_detach = "Detach"; + gtk_button_set_label(GTK_BUTTON(detachButton), label_detach); #if GTK_CHECK_VERSION(2,12,0) - gtk_widget_set_tooltip_text(GTK_WIDGET(conferenceButton), _("Conference")); + gtk_widget_set_tooltip_text(GTK_WIDGET(detachButton), _("Detach")); #endif - gtk_widget_set_state( GTK_WIDGET(conferenceButton), GTK_STATE_INSENSITIVE); - g_signal_connect (G_OBJECT (conferenceButton), "clicked", - G_CALLBACK (conference_button), NULL); - gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(conferenceButton), -1); + gtk_widget_set_state( GTK_WIDGET(detachButton), GTK_STATE_INSENSITIVE); + g_signal_connect (G_OBJECT (detachButton), "clicked", + G_CALLBACK (detach_button), NULL); + gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(detachButton), -1); return ret; @@ -334,7 +337,7 @@ toolbar_update_buttons () case CALL_STATE_INCOMING: gtk_widget_set_sensitive( GTK_WIDGET(pickupButton), TRUE); gtk_widget_set_sensitive( GTK_WIDGET(hangupButton), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(conferenceButton), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(detachButton), TRUE); g_object_ref(callButton); gtk_container_remove(GTK_CONTAINER(toolbar), GTK_WIDGET(callButton)); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), pickupButton, 0); diff --git a/sflphone-client-gnome/src/toolbar.h b/sflphone-client-gnome/src/toolbar.h index fa9c1b8c2..7c539f34f 100644 --- a/sflphone-client-gnome/src/toolbar.h +++ b/sflphone-client-gnome/src/toolbar.h @@ -34,7 +34,7 @@ GtkToolItem * holdButton; GtkToolItem * transfertButton; GtkToolItem * unholdButton; GtkToolItem * mailboxButton; -GtkToolItem * conferenceButton; +GtkToolItem * detachButton; GtkToolItem * recButton; GtkToolItem * historyButton; GtkToolItem * contactButton; diff --git a/sflphone-common/src/dbus/callmanager-introspec.xml b/sflphone-common/src/dbus/callmanager-introspec.xml index fe0e6ee09..8777adce8 100644 --- a/sflphone-common/src/dbus/callmanager-introspec.xml +++ b/sflphone-common/src/dbus/callmanager-introspec.xml @@ -61,6 +61,14 @@ + + + + + + + + diff --git a/sflphone-common/src/dbus/callmanager.cpp b/sflphone-common/src/dbus/callmanager.cpp index ed4ebe374..f8d7593fb 100644 --- a/sflphone-common/src/dbus/callmanager.cpp +++ b/sflphone-common/src/dbus/callmanager.cpp @@ -131,6 +131,16 @@ CallManager::joinParticipant (const std::string& sel_callID, const std::string& Manager::instance().joinParticipant(sel_callID, drag_callID); } +void +CallManager::detachParticipant (const std::string& callID) +{ + _debug ("CallManager::detachParticipant received %s\n", callID.c_str()); + // Manager::instance().detachParticipant(callID); +} + + + + void CallManager::setRecording (const std::string& callID) { diff --git a/sflphone-common/src/dbus/callmanager.h b/sflphone-common/src/dbus/callmanager.h index 31da18b45..ea54252e1 100644 --- a/sflphone-common/src/dbus/callmanager.h +++ b/sflphone-common/src/dbus/callmanager.h @@ -50,6 +50,7 @@ public: double getVolume( const std::string& device ); void addParticipant( const std::string& callID ); void joinParticipant( const std::string& sel_callID, const std::string& drag_callID ); + void detachParticipant( const std::string& callID ); void setRecording( const std::string& callID ); bool getIsRecording(const std::string& callID); std::string getCurrentCodecName(const std::string& callID); diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index 59f1a4288..828bff1c2 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -775,7 +775,7 @@ ManagerImpl::joinParticipant(const CallID& call_id1, const CallID& call_id2) } else if(iter->second == "INCOMING") { - _debug(" INCOMING %s\n", call_id1.c_str()); + _debug(" ANSWER %s\n", call_id1.c_str()); answerCall(call_id1); } @@ -789,7 +789,7 @@ ManagerImpl::joinParticipant(const CallID& call_id1, const CallID& call_id2) } else if(iter->second == "INCOMING") { - _debug(" INCOMING %s\n", call_id2.c_str()); + _debug(" ANSWER %s\n", call_id2.c_str()); answerCall(call_id2); }