diff --git a/sflphone-client-gnome/src/contacts/calltab.c b/sflphone-client-gnome/src/contacts/calltab.c index f832d6c561f5c65baa091b0e13b80c1c48d2cfe6..b8376f4a9cb7e99d5b7bab626bfeaa4f46567e2c 100644 --- a/sflphone-client-gnome/src/contacts/calltab.c +++ b/sflphone-client-gnome/src/contacts/calltab.c @@ -50,6 +50,7 @@ calltab_select_call (calltab_t* tab, callable_obj_t * c ) { tab->selectedType = A_CALL; tab->selectedCall = c; + current_calls->selectedConf = NULL; } @@ -58,6 +59,7 @@ calltab_select_conf (conference_obj_t * c ) { current_calls->selectedType = A_CONFERENCE; current_calls->selectedConf = c; + current_calls->selectedCall = NULL; } gint diff --git a/sflphone-client-gnome/src/contacts/calltree.c b/sflphone-client-gnome/src/contacts/calltree.c index fd84153eba3290718b1788fc8d8627db91951b2e..c01a3e890731593e65ef8afa698220240ec42a4d 100644 --- a/sflphone-client-gnome/src/contacts/calltree.c +++ b/sflphone-client-gnome/src/contacts/calltree.c @@ -116,9 +116,12 @@ call_selected_cb(GtkTreeSelection *sel, void* data UNUSED ) selected_call_id = selected_conf->_confID; selected_path = string_path; + selected_call = NULL; } + DEBUG(" selected_path %s, selected_call_id %s, selected_path_depth %i\n", selected_path, selected_call_id, selected_path_depth); + } else { @@ -133,12 +136,16 @@ call_selected_cb(GtkTreeSelection *sel, void* data UNUSED ) selected_call = (callable_obj_t*)g_value_get_pointer(&val); - selected_call_id = selected_call->_callID; - selected_path = string_path; + if(selected_call) { + + selected_call_id = selected_call->_callID; + selected_path = string_path; + selected_conf = NULL; + } + + DEBUG(" selected_path %s, selected_call_id %s, selected_path_depth %i\n", selected_path, selected_call_id, selected_path_depth); } - DEBUG("selected_cb\n"); - DEBUG(" selected_path %s, selected_call_id %s, selected_path_depth %i\n", selected_path, selected_call_id, selected_path_depth); // conferencelist_reset (); // sflphone_fill_conference_list(); diff --git a/sflphone-client-gnome/src/uimanager.c b/sflphone-client-gnome/src/uimanager.c index 78cfc6aa74534ccc548f17867ee1a5afd17fe53d..c6895161296e7d0e9e1d0d01bc815483d276e3cd 100644 --- a/sflphone-client-gnome/src/uimanager.c +++ b/sflphone-client-gnome/src/uimanager.c @@ -69,6 +69,8 @@ static gboolean is_inserted (GtkWidget* button, GtkWidget *current_toolbar) void update_actions() { + DEBUG("Update action"); + gtk_action_set_sensitive( GTK_ACTION (newCallAction), TRUE); gtk_action_set_sensitive (GTK_ACTION (pickUpAction), FALSE); gtk_action_set_sensitive (GTK_ACTION (hangUpAction), FALSE); @@ -145,6 +147,7 @@ void update_actions() if (selectedCall) { + // DEBUG("------------------------- selected call ---------------------------\n"); gtk_action_set_sensitive (GTK_ACTION (copyAction), TRUE); switch(selectedCall->_state) @@ -220,9 +223,48 @@ void update_actions() break; } } + else if (selectedConf){ - else - { + // DEBUG("------------------------- selected conf ---------------------------\n"); + + switch(selectedConf->_state) { + + case CONFERENCE_STATE_ACTIVE_ATACHED: + gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE); + gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 2); + break; + + case CONFERENCE_STATE_ACTIVE_DETACHED: + gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE); + gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 2); + break; + + case CONFERENCE_STATE_RECORD: + gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE); + gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 2); + break; + + case CONFERENCE_STATE_HOLD: + gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE); + gtk_widget_set_sensitive (GTK_WIDGET (offHoldToolbar), TRUE); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (offHoldToolbar), 2); + break; + + default: + WARN("Should not happen in update_action()!"); + break; + + } + } + + else { if( account_list_get_size() > 0 && current_account_has_mailbox ()) { gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (voicemailToolbar), -2);