diff --git a/gtk/calllogs.c b/gtk/calllogs.c
index 0c2c8dde7..f956c6e6b 100644
--- a/gtk/calllogs.c
+++ b/gtk/calllogs.c
@@ -154,10 +154,11 @@ static void linphone_gtk_call_selected(GtkTreeView *treeview){
}
static GtkWidget *linphone_gtk_create_call_log_menu(GtkWidget *call_log){
- GtkWidget *menu=gtk_menu_new();
+ GtkWidget *menu=NULL;
GtkWidget *menu_item;
gchar *call_label=NULL;
gchar *text_label=NULL;
+ gchar *add_contact_label=NULL;
gchar *name=NULL;
GtkWidget *image;
GtkTreeSelection *select;
@@ -176,34 +177,44 @@ static GtkWidget *linphone_gtk_create_call_log_menu(GtkWidget *call_log){
name=linphone_address_as_string(la);
call_label=g_strdup_printf(_("Call %s"),name);
text_label=g_strdup_printf(_("Send text to %s"),name);
+ add_contact_label=g_strdup_printf(_("Add %s to your contact list"),name);
ms_free(name);
+ menu=gtk_menu_new();
}
}
- if (call_label){
+ if (menu && call_label){
menu_item=gtk_image_menu_item_new_with_label(call_label);
- image=gtk_image_new_from_stock(GTK_STOCK_NETWORK,GTK_ICON_SIZE_MENU);
+ image=gtk_image_new_from_icon_name("linphone-start-call",GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
gtk_widget_show(image);
gtk_widget_show(menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_call_selected,call_log);
}
- if (text_label){
+ if (menu && text_label){
menu_item=gtk_image_menu_item_new_with_label(text_label);
- image=gtk_image_new_from_stock(GTK_STOCK_NETWORK,GTK_ICON_SIZE_MENU);
+ image=gtk_image_new_from_icon_name("linphone-start-chat",GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
gtk_widget_show(image);
gtk_widget_show(menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_call_log_chat_selected,call_log);
}
- menu_item=gtk_image_menu_item_new_from_stock(GTK_STOCK_ADD,NULL);
- gtk_widget_show(menu_item);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
- g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_call_log_add_contact,call_log);
- gtk_widget_show(menu);
- gtk_menu_attach_to_widget(GTK_MENU(menu),call_log, NULL);
+ if (menu && add_contact_label){
+ menu_item=gtk_image_menu_item_new_with_label(add_contact_label);
+ image=gtk_image_new_from_icon_name("linphone-contact-add",GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
+ gtk_widget_show(image);
+ gtk_widget_show(menu_item);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
+ g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_call_log_add_contact,call_log);
+ }
+ if (menu) {
+ gtk_widget_show(menu);
+ gtk_menu_attach_to_widget(GTK_MENU(menu),call_log, NULL);
+ }
+ if (add_contact_label) g_free(add_contact_label);
if (call_label) g_free(call_label);
if (text_label) g_free(text_label);
return menu;
@@ -211,9 +222,12 @@ static GtkWidget *linphone_gtk_create_call_log_menu(GtkWidget *call_log){
gboolean linphone_gtk_call_log_popup_contact(GtkWidget *list, GdkEventButton *event){
GtkWidget *m=linphone_gtk_create_call_log_menu(list);
- gtk_menu_popup (GTK_MENU (m), NULL, NULL, NULL, NULL,
- event ? event->button : 0, event ? event->time : gtk_get_current_event_time());
- return TRUE;
+ if (m) {
+ gtk_menu_popup (GTK_MENU (m), NULL, NULL, NULL, NULL,
+ event ? event->button : 0, event ? event->time : gtk_get_current_event_time());
+ return TRUE;
+ }
+ return FALSE;
}
gboolean linphone_gtk_call_log_button_pressed(GtkWidget *widget, GdkEventButton *event){
diff --git a/gtk/friendlist.c b/gtk/friendlist.c
index 812f1a15d..e7cbedf8b 100644
--- a/gtk/friendlist.c
+++ b/gtk/friendlist.c
@@ -844,6 +844,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
gchar *edit_label=NULL;
gchar *delete_label=NULL;
gchar *delete_hist_label=NULL;
+ gchar *add_contact_label=NULL;
gchar *name=NULL;
GtkTreeSelection *select;
GtkTreeIter iter;
@@ -852,6 +853,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
LinphoneCore *lc=linphone_gtk_get_core();
LinphoneProxyConfig *cfg=NULL;
SipSetupContext * ssc=NULL;
+ bool_t show_menu_separator=FALSE;
linphone_core_get_default_proxy(lc,&cfg);
if (cfg){
@@ -860,6 +862,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
g_signal_connect(G_OBJECT(menu), "selection-done", G_CALLBACK (gtk_widget_destroy), NULL);
select = gtk_tree_view_get_selection(GTK_TREE_VIEW(contact_list));
+ add_contact_label=g_strdup_printf(_("Add a new contact"));
if (gtk_tree_selection_get_selected (select, &model, &iter)){
gtk_tree_model_get(model, &iter,FRIEND_NAME , &name, -1);
call_label=g_strdup_printf(_("Call %s"),name);
@@ -868,10 +871,11 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
delete_label=g_strdup_printf(_("Delete contact '%s'"),name);
delete_hist_label=g_strdup_printf(_("Delete chat history of '%s'"),name);
g_free(name);
+ show_menu_separator=TRUE;
}
if (call_label){
menu_item=gtk_image_menu_item_new_with_label(call_label);
- image=gtk_image_new_from_stock(GTK_STOCK_NETWORK,GTK_ICON_SIZE_MENU);
+ image=gtk_image_new_from_icon_name("linphone-start-call",GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
gtk_widget_show(image);
gtk_widget_show(menu_item);
@@ -880,7 +884,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
}
if (text_label){
menu_item=gtk_image_menu_item_new_with_label(text_label);
- image=gtk_image_new_from_stock(GTK_STOCK_NETWORK,GTK_ICON_SIZE_MENU);
+ image=gtk_image_new_from_icon_name("linphone-start-chat",GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
gtk_widget_show(image);
gtk_widget_show(menu_item);
@@ -889,7 +893,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
}
if (edit_label){
menu_item=gtk_image_menu_item_new_with_label(edit_label);
- image=gtk_image_new_from_stock(GTK_STOCK_EDIT,GTK_ICON_SIZE_MENU);
+ image=gtk_image_new_from_icon_name("linphone-edit",GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
gtk_widget_show(image);
gtk_widget_show(menu_item);
@@ -898,7 +902,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
}
if (delete_label){
menu_item=gtk_image_menu_item_new_with_label(delete_label);
- image=gtk_image_new_from_stock(GTK_STOCK_DELETE,GTK_ICON_SIZE_MENU);
+ image=gtk_image_new_from_icon_name("linphone-delete",GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
gtk_widget_show(image);
gtk_widget_show(menu_item);
@@ -920,22 +924,31 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
gchar *tmp=g_strdup_printf(_("Add new contact from %s directory"),linphone_proxy_config_get_domain(cfg));
menu_item=gtk_image_menu_item_new_with_label(tmp);
g_free(tmp);
- image=gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_MENU);
+ image=gtk_image_new_from_icon_name("linphone-contact-add",GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
gtk_widget_show(image);
gtk_widget_show(menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_show_buddy_lookup_window,ssc);
- gtk_widget_show(menu);
}
- menu_item=gtk_image_menu_item_new_from_stock(GTK_STOCK_ADD,NULL);
+ if (show_menu_separator) {
+ GtkWidget *menu_item_separator=gtk_separator_menu_item_new();
+ gtk_widget_show(menu_item_separator);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_separator);
+ }
+
+ menu_item=gtk_image_menu_item_new_with_label(add_contact_label);
+ image=gtk_image_new_from_icon_name("linphone-contact-add",GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),image);
+ gtk_widget_show(image);
gtk_widget_show(menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_add_contact,contact_list);
gtk_widget_show(menu);
gtk_menu_attach_to_widget (GTK_MENU (menu), contact_list, NULL);
+ g_free(add_contact_label);
if (call_label) g_free(call_label);
if (text_label) g_free(text_label);
if (edit_label) g_free(edit_label);
diff --git a/gtk/main.ui b/gtk/main.ui
index a4c82af90..af5abb790 100644
--- a/gtk/main.ui
+++ b/gtk/main.ui
@@ -17,7 +17,9 @@