diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c index ea6076d0fb7418ae58cafdb3dc420dfdc54bec97..77fcb0f8bde64c55672bd286da94c7330012ed4c 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 62b9d5db61d013b94d7b115468cba8e2b62ca188..f627cd73ddeb292360637af8f7408d269dad1c7e 100644 --- a/sflphone-client-gnome/src/dbus/callmanager-introspec.xml +++ b/sflphone-client-gnome/src/dbus/callmanager-introspec.xml @@ -61,6 +61,14 @@ <arg type="s" name="drag_callID" direction="in"/> </method> + <method name="detachParticipant"> + <arg type="s" name="callID" direction="in"/> + </method> + + <signal name="displayCoference"> + <arg type="s" name="confID" direction="out"/> + </signal> + <method name="setRecording"> <arg type="s" name="callID" direction="in"/> </method> diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c index 02cbc3fad4ea130bfc09fe7b24075f4d197ba2b8..bf3a03d2bbe26aef31e78d103f5aeb7a4c620c50 100644 --- a/sflphone-client-gnome/src/dbus/dbus.c +++ b/sflphone-client-gnome/src/dbus/dbus.c @@ -1242,17 +1242,19 @@ dbus_set_volume_controls( ) } } - void -dbus_add_participant(const callable_obj_t * c) + +dbus_join_participant(const callable_obj_t * c_sel, const callable_obj_t * c_drag) { - DEBUG("dbus_add_participant %s\n", c->_callID); + DEBUG("dbus_join_participant %s and %s\n", c_sel->_callID, c_drag->_callID); GError* error = NULL; - org_sflphone_SFLphone_CallManager_add_participant( - callManagerProxy, - c->_callID, - &error); + + org_sflphone_SFLphone_CallManager_join_participant ( + callManagerProxy, + c_sel->_callID, + c_drag->_callID, + &error); if(error) { g_error_free(error); @@ -1260,19 +1262,17 @@ dbus_add_participant(const callable_obj_t * c) } - -dbus_join_participant(const callable_obj_t * c_sel, const callable_obj_t * c_drag) + void +dbus_detach_participant(const callable_obj_t * c) { - DEBUG("dbus_join_participant %s and %s\n", c_sel->_callID, c_drag->_callID); + DEBUG("dbus_detach_participant %s\n", c->_callID); GError* error = NULL; - - org_sflphone_SFLphone_CallManager_join_participant ( - callManagerProxy, - c_sel->_callID, - c_drag->_callID, - &error); + 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 b88d67fd130aee3f1e95e933bf0eaf2533d66ef2..35995dbb2e8d402f29c795ef6f46873dffdb13e3 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 fa9c1b8c233f64bd76ea1cff02cf278c61c464d2..7c539f34fa95d480a6aeeff2f503a9d0bbd1f094 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 fe0e6ee099c1fb11d65eb1aed273af97e1d09797..8777adce856d1a9b7168abcc45fb79b2aea83164 100644 --- a/sflphone-common/src/dbus/callmanager-introspec.xml +++ b/sflphone-common/src/dbus/callmanager-introspec.xml @@ -61,6 +61,14 @@ <arg type="s" name="drag_callID" direction="in"/> </method> + <method name="detachParticipant"> + <arg type="s" name="callID" direction="in"/> + </method> + + <signal name="displayCoference"> + <arg type="s" name="confID" direction="out"/> + </signal> + <method name="setRecording"> <arg type="s" name="callID" direction="in"/> </method> diff --git a/sflphone-common/src/dbus/callmanager.cpp b/sflphone-common/src/dbus/callmanager.cpp index ed4ebe37419cb477f7d656129225e3cd4eead5f0..f8d7593fb09a3d5c77e03c420da70c3d37342e8d 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 31da18b4557c04b13758ed9eac3dc3de81bf96df..ea54252e14c552515bc4fb4c0e72b7bf5bbe1bff 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 59f1a428883a555030504f810a33022b2009855d..828bff1c2f44ae7142c4d7818bdf9d2d69ad1c77 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); }