356
363
void linphone_gtk_contact_ok(GtkWidget *button){
357
364
GtkWidget *w=gtk_widget_get_toplevel(button);
358
365
LinphoneFriend *lf=(LinphoneFriend*)g_object_get_data(G_OBJECT(w),"friend_ref");
359
gboolean editing=FALSE,show_presence,allow_presence;
366
char *fixed_uri=NULL;
367
gboolean show_presence,allow_presence;
360
368
const gchar *name,*uri;
362
370
lf=linphone_friend_new();
366
372
name=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(w,"name")));
367
373
uri=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(w,"sip_address")));
368
374
show_presence=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"show_presence")));
369
375
allow_presence=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"allow_presence")));
370
linphone_friend_set_sip_addr(lf,uri);
376
linphone_core_interpret_friend_uri(linphone_gtk_get_core(),uri,&fixed_uri);
377
if (fixed_uri==NULL){
378
linphone_gtk_display_something(GTK_MESSAGE_WARNING,_("Invalid sip contact !"));
381
linphone_friend_set_sip_addr(lf,fixed_uri);
371
383
linphone_friend_set_name(lf,name);
372
384
linphone_friend_send_subscribe(lf,show_presence);
373
385
linphone_friend_set_inc_subscribe_policy(lf,allow_presence==TRUE ? LinphoneSPAccept : LinphoneSPDeny);
386
if (linphone_friend_in_list(lf)) {
375
387
linphone_friend_done(lf);
377
389
linphone_core_add_friend(linphone_gtk_get_core(),lf);
385
397
GtkWidget *menu_item;
386
398
gchar *call_label=NULL;
387
399
gchar *text_label=NULL;
400
gchar *edit_label=NULL;
401
gchar *delete_label=NULL;
388
402
gchar *name=NULL;
389
403
GtkTreeSelection *select;
390
404
GtkTreeIter iter;
391
405
GtkTreeModel *model;
392
406
GtkWidget *image;
407
LinphoneCore *lc=linphone_gtk_get_core();
408
LinphoneProxyConfig *cfg=NULL;
409
SipSetupContext * ssc=NULL;
411
linphone_core_get_default_proxy(lc,&cfg);
413
ssc=linphone_proxy_config_get_sip_setup_context(cfg);
393
416
g_signal_connect(G_OBJECT(menu), "selection-done", G_CALLBACK (gtk_widget_destroy), NULL);
394
417
select = gtk_tree_view_get_selection(GTK_TREE_VIEW(contact_list));
395
418
if (gtk_tree_selection_get_selected (select, &model, &iter)){
396
419
gtk_tree_model_get(model, &iter,FRIEND_NAME , &name, -1);
397
420
call_label=g_strdup_printf(_("Call %s"),name);
398
421
text_label=g_strdup_printf(_("Send text to %s"),name);
422
edit_label=g_strdup_printf(_("Edit contact '%s'"),name);
423
delete_label=g_strdup_printf(_("Delete contact '%s'"),name);
400
}else g_warning("No selection");
402
427
menu_item=gtk_image_menu_item_new_with_label(call_label);
403
428
image=gtk_image_new_from_stock(GTK_STOCK_NETWORK,GTK_ICON_SIZE_MENU);
416
441
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
417
442
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_chat_selected,contact_list);
419
menu_item=gtk_image_menu_item_new_from_stock(GTK_STOCK_EDIT,NULL);
420
gtk_widget_show(menu_item);
421
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
422
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_edit_contact,contact_list);
423
menu_item=gtk_image_menu_item_new_from_stock(GTK_STOCK_DELETE,NULL);
424
gtk_widget_show(menu_item);
425
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
426
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_remove_contact,contact_list);
445
menu_item=gtk_image_menu_item_new_with_label(edit_label);
446
image=gtk_image_new_from_stock(GTK_STOCK_EDIT,GTK_ICON_SIZE_MENU);
447
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
448
gtk_widget_show(image);
449
gtk_widget_show(menu_item);
450
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
451
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_edit_contact,contact_list);
454
menu_item=gtk_image_menu_item_new_with_label(delete_label);
455
image=gtk_image_new_from_stock(GTK_STOCK_DELETE,GTK_ICON_SIZE_MENU);
456
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
457
gtk_widget_show(image);
458
gtk_widget_show(menu_item);
459
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
460
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_remove_contact,contact_list);
464
if (ssc && (sip_setup_context_get_capabilities(ssc) & SIP_SETUP_CAP_BUDDY_LOOKUP)) {
465
gchar *tmp=g_strdup_printf(_("Add new contact from %s directory"),linphone_proxy_config_get_domain(cfg));
466
menu_item=gtk_image_menu_item_new_with_label(tmp);
468
image=gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_MENU);
469
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
470
gtk_widget_show(image);
471
gtk_widget_show(menu_item);
472
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
473
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_show_buddy_lookup_window,ssc);
474
gtk_widget_show(menu);
427
477
menu_item=gtk_image_menu_item_new_from_stock(GTK_STOCK_ADD,NULL);
428
478
gtk_widget_show(menu_item);
429
479
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
430
480
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_add_contact,contact_list);
431
481
gtk_widget_show(menu);
432
482
gtk_menu_attach_to_widget (GTK_MENU (menu), contact_list, NULL);
433
484
if (call_label) g_free(call_label);
434
485
if (text_label) g_free(text_label);
486
if (edit_label) g_free(edit_label);
487
if (delete_label) g_free(delete_label);