diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c index b7b1663ecb7316ea5530261678ceef8cbe0cb238..a2506dc62924c99ef2be59b710755a26994caea2 100644 --- a/sflphone-client-gnome/src/actions.c +++ b/sflphone-client-gnome/src/actions.c @@ -442,6 +442,9 @@ sflphone_pick_up() sflphone_on_hold () { callable_obj_t * selectedCall = calltab_get_selected_call(current_calls); + conference_obj_t * selectedConf = calltab_get_selected_conf(active_calltree); + + DEBUG("sflphone_on_hold"); if(selectedCall) { switch(selectedCall->_state) @@ -458,12 +461,18 @@ sflphone_on_hold () break; } } + else if (selectedConf) { + dbus_hold_conference(selectedConf); + } } void sflphone_off_hold () { + DEBUG("sflphone_off_hold"); callable_obj_t * selectedCall = calltab_get_selected_call(current_calls); + conference_obj_t * selectedConf = calltab_get_selected_conf(active_calltree); + if(selectedCall) { switch(selectedCall->_state) @@ -476,7 +485,12 @@ sflphone_off_hold () break; } } + else if (selectedConf) { + + dbus_unhold_conference(selectedConf); + } + /* if(dbus_get_is_recording(selectedCall)) { DEBUG("Currently recording!"); @@ -485,6 +499,7 @@ sflphone_off_hold () { DEBUG("Not recording currently"); } + */ } diff --git a/sflphone-client-gnome/src/uimanager.c b/sflphone-client-gnome/src/uimanager.c index c6895161296e7d0e9e1d0d01bc815483d276e3cd..1a4632c5898cb0c75e8c07bf5ce968830eeda8a6 100644 --- a/sflphone-client-gnome/src/uimanager.c +++ b/sflphone-client-gnome/src/uimanager.c @@ -385,6 +385,7 @@ switch_account( GtkWidget* item , gpointer data UNUSED) call_hold (void* foo UNUSED) { callable_obj_t * selectedCall = calltab_get_selected_call(current_calls); + conference_obj_t * selectedConf = calltab_get_selected_conf(); if(selectedCall) { @@ -397,6 +398,28 @@ call_hold (void* foo UNUSED) sflphone_on_hold(); } } + else if (selectedConf) { + + switch(selectedConf->_state) { + + case CONFERENCE_STATE_HOLD: + { + selectedConf->_state = CONFERENCE_STATE_ACTIVE_ATACHED; + sflphone_conference_off_hold(selectedConf); + } + break; + + case CONFERENCE_STATE_ACTIVE_ATACHED: + case CONFERENCE_STATE_ACTIVE_DETACHED: { + selectedConf->_state = CONFERENCE_STATE_HOLD; + sflphone_conference_on_hold(selectedConf); + } + break; + default: + break; + } + + } } static void