DOuble click to place a call in the history tab

This commit is contained in:
Emmanuel Milou
2008-05-13 12:13:08 -04:00
parent eee9c6f9d2
commit 2ec7f41dc5
2 changed files with 111 additions and 87 deletions

View File

@ -40,7 +40,7 @@ GtkToolItem * mailboxButton;
guint transfertButtonConnId; //The button toggled signal connection ID guint transfertButtonConnId; //The button toggled signal connection ID
gboolean history_shown; gboolean history_shown;
void void
switch_tab() switch_tab()
{ {
(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(historyButton)))? gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(historyButton), FALSE):gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(historyButton), TRUE); (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(historyButton)))? gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(historyButton), FALSE):gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(historyButton), TRUE);
@ -96,7 +96,7 @@ call_button( GtkWidget *widget, gpointer data )
if( selectedCall) if( selectedCall)
{ {
printf("Calling a called num\n"); printf("Calling a called num\n");
newCall->to = g_strdup(call_get_number(selectedCall)); newCall->to = g_strdup(call_get_number(selectedCall));
newCall->from = g_strconcat("\"\" <", call_get_number(selectedCall), ">",NULL); newCall->from = g_strconcat("\"\" <", call_get_number(selectedCall), ">",NULL);
newCall->state = CALL_STATE_DIALING; newCall->state = CALL_STATE_DIALING;
@ -334,32 +334,56 @@ void row_activated(GtkTreeView *tree_view,
GtkTreeViewColumn *column, GtkTreeViewColumn *column,
void * data) void * data)
{ {
call_t * selectedCall = call_get_selected(current_calls); g_print("double click action\n");
call_t* selectedCall;
call_t* newCall;
selectedCall = call_get_selected( active_calltree );
if (selectedCall) if (selectedCall)
{ {
switch(selectedCall->state) // Get the right event from the right calltree
if( active_calltree == current_calls )
{ {
case CALL_STATE_INCOMING: switch(selectedCall->state)
dbus_accept(selectedCall); {
break; case CALL_STATE_INCOMING:
case CALL_STATE_HOLD: dbus_accept(selectedCall);
dbus_unhold(selectedCall); break;
break; case CALL_STATE_HOLD:
case CALL_STATE_RINGING: dbus_unhold(selectedCall);
case CALL_STATE_CURRENT: break;
case CALL_STATE_BUSY: case CALL_STATE_RINGING:
case CALL_STATE_FAILURE: case CALL_STATE_CURRENT:
break; case CALL_STATE_BUSY:
case CALL_STATE_DIALING: case CALL_STATE_FAILURE:
sflphone_place_call (selectedCall); break;
break; case CALL_STATE_DIALING:
default: sflphone_place_call (selectedCall);
g_warning("Should not happen!"); break;
break; default:
g_warning("Should not happen!");
break;
}
}
else
{
newCall = g_new0( call_t, 1 );
newCall->to = g_strdup(call_get_number(selectedCall));
newCall->from = g_strconcat("\"\" <", call_get_number(selectedCall), ">",NULL);
newCall->state = CALL_STATE_DIALING;
newCall->callID = g_new0(gchar, 30);
g_sprintf(newCall->callID, "%d", rand());
newCall->_start = 0;
newCall->_stop = 0;
printf("call : from : %s to %s\n", newCall->from, newCall->to);
call_list_add(current_calls, newCall);
update_call_tree_add(current_calls, newCall);
sflphone_place_call(newCall);
switch_tab();
} }
} }
} }
GtkWidget * GtkWidget *
create_toolbar () create_toolbar ()
@ -373,93 +397,93 @@ create_toolbar ()
gtk_toolbar_set_orientation(GTK_TOOLBAR(ret), GTK_ORIENTATION_HORIZONTAL); gtk_toolbar_set_orientation(GTK_TOOLBAR(ret), GTK_ORIENTATION_HORIZONTAL);
gtk_toolbar_set_style(GTK_TOOLBAR(ret), GTK_TOOLBAR_ICONS); gtk_toolbar_set_style(GTK_TOOLBAR(ret), GTK_TOOLBAR_ICONS);
image = gtk_image_new_from_file( ICONS_DIR "/call.svg"); image = gtk_image_new_from_file( ICONS_DIR "/call.svg");
callButton = gtk_tool_button_new (image, _("Place a call")); callButton = gtk_tool_button_new (image, _("Place a call"));
#if GTK_CHECK_VERSION(2,12,0) #if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(GTK_WIDGET(callButton), _("Place a call")); gtk_widget_set_tooltip_text(GTK_WIDGET(callButton), _("Place a call"));
#endif #endif
g_signal_connect (G_OBJECT (callButton), "clicked", g_signal_connect (G_OBJECT (callButton), "clicked",
G_CALLBACK (call_button), NULL); G_CALLBACK (call_button), NULL);
gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(callButton), -1); gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(callButton), -1);
image = gtk_image_new_from_file( ICONS_DIR "/accept.svg"); image = gtk_image_new_from_file( ICONS_DIR "/accept.svg");
pickupButton = gtk_tool_button_new(image, _("Pick up")); pickupButton = gtk_tool_button_new(image, _("Pick up"));
#if GTK_CHECK_VERSION(2,12,0) #if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(GTK_WIDGET(pickupButton), _("Pick up")); gtk_widget_set_tooltip_text(GTK_WIDGET(pickupButton), _("Pick up"));
#endif #endif
gtk_widget_set_state( GTK_WIDGET(pickupButton), GTK_STATE_INSENSITIVE); gtk_widget_set_state( GTK_WIDGET(pickupButton), GTK_STATE_INSENSITIVE);
g_signal_connect(G_OBJECT (pickupButton), "clicked", g_signal_connect(G_OBJECT (pickupButton), "clicked",
G_CALLBACK (call_button), NULL); G_CALLBACK (call_button), NULL);
gtk_widget_show_all(GTK_WIDGET(pickupButton)); gtk_widget_show_all(GTK_WIDGET(pickupButton));
image = gtk_image_new_from_file( ICONS_DIR "/hang_up.svg"); image = gtk_image_new_from_file( ICONS_DIR "/hang_up.svg");
hangupButton = gtk_tool_button_new (image, _("Hang up")); hangupButton = gtk_tool_button_new (image, _("Hang up"));
#if GTK_CHECK_VERSION(2,12,0) #if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(GTK_WIDGET(hangupButton), _("Hang up")); gtk_widget_set_tooltip_text(GTK_WIDGET(hangupButton), _("Hang up"));
#endif #endif
gtk_widget_set_state( GTK_WIDGET(hangupButton), GTK_STATE_INSENSITIVE); gtk_widget_set_state( GTK_WIDGET(hangupButton), GTK_STATE_INSENSITIVE);
g_signal_connect (G_OBJECT (hangupButton), "clicked", g_signal_connect (G_OBJECT (hangupButton), "clicked",
G_CALLBACK (hang_up), NULL); G_CALLBACK (hang_up), NULL);
gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(hangupButton), -1); gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(hangupButton), -1);
image = gtk_image_new_from_file( ICONS_DIR "/unhold.svg"); image = gtk_image_new_from_file( ICONS_DIR "/unhold.svg");
unholdButton = gtk_tool_button_new (image, _("Off Hold")); unholdButton = gtk_tool_button_new (image, _("Off Hold"));
#if GTK_CHECK_VERSION(2,12,0) #if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(GTK_WIDGET(unholdButton), _("Off Hold")); gtk_widget_set_tooltip_text(GTK_WIDGET(unholdButton), _("Off Hold"));
#endif #endif
gtk_widget_set_state( GTK_WIDGET(unholdButton), GTK_STATE_INSENSITIVE); gtk_widget_set_state( GTK_WIDGET(unholdButton), GTK_STATE_INSENSITIVE);
g_signal_connect (G_OBJECT (unholdButton), "clicked", g_signal_connect (G_OBJECT (unholdButton), "clicked",
G_CALLBACK (unhold), NULL); G_CALLBACK (unhold), NULL);
//gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(unholdButton), -1); //gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(unholdButton), -1);
gtk_widget_show_all(GTK_WIDGET(unholdButton)); gtk_widget_show_all(GTK_WIDGET(unholdButton));
image = gtk_image_new_from_file( ICONS_DIR "/hold.svg"); image = gtk_image_new_from_file( ICONS_DIR "/hold.svg");
holdButton = gtk_tool_button_new (image, _("On Hold")); holdButton = gtk_tool_button_new (image, _("On Hold"));
#if GTK_CHECK_VERSION(2,12,0) #if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(GTK_WIDGET(holdButton), _("On Hold")); gtk_widget_set_tooltip_text(GTK_WIDGET(holdButton), _("On Hold"));
#endif #endif
gtk_widget_set_state( GTK_WIDGET(holdButton), GTK_STATE_INSENSITIVE); gtk_widget_set_state( GTK_WIDGET(holdButton), GTK_STATE_INSENSITIVE);
g_signal_connect (G_OBJECT (holdButton), "clicked", g_signal_connect (G_OBJECT (holdButton), "clicked",
G_CALLBACK (hold), NULL); G_CALLBACK (hold), NULL);
gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(holdButton), -1); gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(holdButton), -1);
image = gtk_image_new_from_file( ICONS_DIR "/transfert.svg"); image = gtk_image_new_from_file( ICONS_DIR "/transfert.svg");
transfertButton = gtk_toggle_tool_button_new (); transfertButton = gtk_toggle_tool_button_new ();
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(transfertButton), image); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(transfertButton), image);
#if GTK_CHECK_VERSION(2,12,0) #if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(GTK_WIDGET(transfertButton), _("Transfer")); gtk_widget_set_tooltip_text(GTK_WIDGET(transfertButton), _("Transfer"));
#endif #endif
gtk_tool_button_set_label(GTK_TOOL_BUTTON(transfertButton), _("Transfer")); gtk_tool_button_set_label(GTK_TOOL_BUTTON(transfertButton), _("Transfer"));
gtk_widget_set_state( GTK_WIDGET(transfertButton), GTK_STATE_INSENSITIVE); gtk_widget_set_state( GTK_WIDGET(transfertButton), GTK_STATE_INSENSITIVE);
transfertButtonConnId = g_signal_connect (G_OBJECT (transfertButton), "toggled", transfertButtonConnId = g_signal_connect (G_OBJECT (transfertButton), "toggled",
G_CALLBACK (transfert), NULL); G_CALLBACK (transfert), NULL);
gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(transfertButton), -1); gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(transfertButton), -1);
image = gtk_image_new_from_file( ICONS_DIR "/history2.svg"); image = gtk_image_new_from_file( ICONS_DIR "/history2.svg");
historyButton = gtk_toggle_tool_button_new(); historyButton = gtk_toggle_tool_button_new();
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(historyButton), image); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(historyButton), image);
#if GTK_CHECK_VERSION(2,12,0) #if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(GTK_WIDGET(historyButton), _("History")); gtk_widget_set_tooltip_text(GTK_WIDGET(historyButton), _("History"));
#endif #endif
gtk_tool_button_set_label(GTK_TOOL_BUTTON(historyButton), _("History")); gtk_tool_button_set_label(GTK_TOOL_BUTTON(historyButton), _("History"));
g_signal_connect (G_OBJECT (historyButton), "toggled", g_signal_connect (G_OBJECT (historyButton), "toggled",
G_CALLBACK (toggle_history), NULL); G_CALLBACK (toggle_history), NULL);
gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(historyButton), -1); gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(historyButton), -1);
history_shown = FALSE; history_shown = FALSE;
active_calltree = current_calls; active_calltree = current_calls;
image = gtk_image_new_from_file( ICONS_DIR "/mailbox.svg"); image = gtk_image_new_from_file( ICONS_DIR "/mailbox.svg");
mailboxButton = gtk_tool_button_new( image , _("Voicemail box")); mailboxButton = gtk_tool_button_new( image , _("Voicemail box"));
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(mailboxButton), image); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(mailboxButton), image);
if( account_list_get_size() ==0 ) gtk_widget_set_state( GTK_WIDGET(mailboxButton), GTK_STATE_INSENSITIVE ); if( account_list_get_size() ==0 ) gtk_widget_set_state( GTK_WIDGET(mailboxButton), GTK_STATE_INSENSITIVE );
#if GTK_CHECK_VERSION(2,12,0) #if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(GTK_WIDGET(mailboxButton), _("Voicemail box")); gtk_widget_set_tooltip_text(GTK_WIDGET(mailboxButton), _("Voicemail box"));
#endif #endif
g_signal_connect (G_OBJECT (mailboxButton), "clicked", g_signal_connect (G_OBJECT (mailboxButton), "clicked",
G_CALLBACK (call_mailbox), NULL); G_CALLBACK (call_mailbox), NULL);
gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(mailboxButton), -1); gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(mailboxButton), -1);
return ret; return ret;
} }
@ -481,7 +505,6 @@ create_call_tree (calltab_t* tab)
tab->store = gtk_list_store_new (3, tab->store = gtk_list_store_new (3,
GDK_TYPE_PIXBUF,// Icon GDK_TYPE_PIXBUF,// Icon
G_TYPE_STRING, // Description G_TYPE_STRING, // Description
G_TYPE_POINTER // Pointer to the Object G_TYPE_POINTER // Pointer to the Object
); );

View File

@ -239,5 +239,6 @@ stop_notification( void )
g_object_unref( notification ); g_object_unref( notification );
notification = NULL; notification = NULL;
} }
notification = NULL;
} }
} }