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 @@ True False - gtk-add + 2 + 2 + linphone-contact-add True @@ -78,7 +80,9 @@ True False - gtk-edit + 2 + 2 + linphone-edit True @@ -122,7 +126,9 @@ True False Delete - gtk-remove + 2 + 2 + linphone-delete True @@ -825,12 +831,13 @@ True False - gtk-refresh + linphone-history 1 True True + 4 0 diff --git a/pixmaps/CMakeLists.txt b/pixmaps/CMakeLists.txt index bc9722582..43941b9e4 100644 --- a/pixmaps/CMakeLists.txt +++ b/pixmaps/CMakeLists.txt @@ -54,6 +54,10 @@ install(FILES svg/linphone-hold-on.svg svg/linphone-start-call2.svg svg/linphone-start-chat.svg + svg/linphone-history.svg + svg/linphone-edit.svg + svg/linphone-delete.svg + svg/linphone-contact-add.svg DESTINATION ${ICONS_INSTALL_DIR}/scalable/actions PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) @@ -88,6 +92,10 @@ install(FILES linphone-stop-call.png linphone-hold-on.png linphone-hold-off.png + linphone-history.png + linphone-edit.png + linphone-delete.png + linphone-contact-add.png DESTINATION ${ICONS_INSTALL_DIR}/48x48/actions PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am index fa4c25257..0874cda0b 100644 --- a/pixmaps/Makefile.am +++ b/pixmaps/Makefile.am @@ -57,7 +57,11 @@ dist_actions48icons_DATA= \ linphone-start-chat.png \ linphone-stop-call.png \ linphone-hold-on.png \ - linphone-hold-off.png + linphone-hold-off.png \ + linphone-history.png \ + linphone-edit.png \ + linphone-delete.png \ + linphone-contact-add.png actionssvgiconsdir=$(iconsdir)/scalable/actions dist_actionssvgicons_DATA= \ @@ -66,4 +70,8 @@ dist_actionssvgicons_DATA= \ svg/linphone-hold-off.svg \ svg/linphone-hold-on.svg \ svg/linphone-start-call2.svg \ - svg/linphone-start-chat.svg + svg/linphone-start-chat.svg \ + svg/linphone-history.svg \ + svg/linphone-edit.svg \ + svg/linphone-delete.svg \ + svg/linphone-contact-add.svg diff --git a/pixmaps/linphone-contact-add.png b/pixmaps/linphone-contact-add.png new file mode 100644 index 000000000..f78852d01 Binary files /dev/null and b/pixmaps/linphone-contact-add.png differ diff --git a/pixmaps/linphone-delete.png b/pixmaps/linphone-delete.png new file mode 100644 index 000000000..d8ff8da4a Binary files /dev/null and b/pixmaps/linphone-delete.png differ diff --git a/pixmaps/linphone-edit.png b/pixmaps/linphone-edit.png new file mode 100644 index 000000000..772770988 Binary files /dev/null and b/pixmaps/linphone-edit.png differ diff --git a/pixmaps/linphone-history.png b/pixmaps/linphone-history.png new file mode 100644 index 000000000..825bdeb68 Binary files /dev/null and b/pixmaps/linphone-history.png differ diff --git a/pixmaps/svg/linphone-contact-add.svg b/pixmaps/svg/linphone-contact-add.svg new file mode 100644 index 000000000..08882723a --- /dev/null +++ b/pixmaps/svg/linphone-contact-add.svg @@ -0,0 +1,17 @@ + + + + contact_add + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/pixmaps/svg/linphone-delete.svg b/pixmaps/svg/linphone-delete.svg new file mode 100644 index 000000000..51b051ac0 --- /dev/null +++ b/pixmaps/svg/linphone-delete.svg @@ -0,0 +1,17 @@ + + + + delete + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/pixmaps/svg/linphone-edit.svg b/pixmaps/svg/linphone-edit.svg new file mode 100644 index 000000000..21d72cfbc --- /dev/null +++ b/pixmaps/svg/linphone-edit.svg @@ -0,0 +1,15 @@ + + + + edit + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/pixmaps/svg/linphone-history.svg b/pixmaps/svg/linphone-history.svg new file mode 100644 index 000000000..c4b4f4936 --- /dev/null +++ b/pixmaps/svg/linphone-history.svg @@ -0,0 +1,96 @@ + + + + + + image/svg+xml + + + + + + + footer_history + Created with Sketch. + + + + + + + + + +