From 389a9bcfd3a6912ddb5d6442d9c3d78638acbb45 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Thu, 18 Oct 2012 15:03:14 +0200 Subject: [PATCH] work in progress: chat, new ui blabla --- coreapi/chat.c | 2 +- gtk/Makefile.am | 1 - gtk/chat.c | 191 +++- gtk/chatroom.ui | 118 --- gtk/friendlist.c | 308 +++++-- gtk/incall_view.c | 12 +- gtk/linphone.h | 7 +- gtk/main.c | 32 +- gtk/main.ui | 1667 ++++++++++++++++++++++------------- pixmaps/Makefile.am | 2 + pixmaps/addcall-green.png | Bin 2629 -> 5887 bytes pixmaps/call.png | Bin 0 -> 3829 bytes pixmaps/chat.png | Bin 0 -> 3675 bytes pixmaps/hold_off.png | Bin 2280 -> 3897 bytes pixmaps/hold_on.png | Bin 1139 -> 2083 bytes pixmaps/mic_active.png | Bin 961 -> 3523 bytes pixmaps/mic_muted.png | Bin 1197 -> 3716 bytes pixmaps/startcall-green.png | Bin 3089 -> 6008 bytes pixmaps/stopcall-red.png | Bin 2960 -> 3764 bytes po/POTFILES.in | 1 - 20 files changed, 1428 insertions(+), 913 deletions(-) delete mode 100644 gtk/chatroom.ui create mode 100644 pixmaps/call.png create mode 100644 pixmaps/chat.png diff --git a/coreapi/chat.c b/coreapi/chat.c index 941cce42..2aca72ff 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -245,4 +245,4 @@ LinphoneChatMessage* linphone_chat_message_clone(const LinphoneChatMessage* msg) new_message->cb=msg->cb; if (msg->from) new_message->from=linphone_address_clone(msg->from); return new_message; -} \ No newline at end of file +} diff --git a/gtk/Makefile.am b/gtk/Makefile.am index ede08b90..70d4de88 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -4,7 +4,6 @@ UI_FILES= about.ui \ contact.ui \ parameters.ui \ sip_account.ui \ - chatroom.ui \ call_logs.ui \ log.ui \ buddylookup.ui \ diff --git a/gtk/chat.c b/gtk/chat.c index aa1e7dff..c434e4a6 100644 --- a/gtk/chat.c +++ b/gtk/chat.c @@ -24,38 +24,34 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #endif -GtkWidget * linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const char *with){ - GtkWidget *w; - GtkTextBuffer *b; - gchar *tmp; - w=linphone_gtk_create_window("chatroom"); - tmp=g_strdup_printf(_("Chat with %s"),with); - gtk_window_set_title(GTK_WINDOW(w),tmp); - g_free(tmp); - g_object_set_data(G_OBJECT(w),"cr",cr); - gtk_widget_show(w); - linphone_chat_room_set_user_data(cr,w); - b=gtk_text_view_get_buffer(GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textlog"))); - gtk_text_buffer_create_tag(b,"blue","foreground","blue",NULL); - gtk_text_buffer_create_tag(b,"green","foreground","green",NULL); - return w; +void linphone_gtk_quit_chatroom(LinphoneChatRoom *cr) { + GtkWidget *main_window=linphone_gtk_get_main_window (); + GtkWidget *w=linphone_gtk_get_widget(main_window,"chatroom_frame"); + GtkWidget *nb=linphone_gtk_get_widget(main_window,"viewswitch"); + int idx; + g_return_if_fail(w!=NULL); + idx=gtk_notebook_page_num(GTK_NOTEBOOK(nb),w); + gtk_notebook_remove_page (GTK_NOTEBOOK(nb),idx); + linphone_chat_room_set_user_data(cr,NULL); + gtk_widget_destroy(w); } -void linphone_gtk_create_chatroom(const char *with){ +GtkWidget *create_tab_chat_header(LinphoneChatRoom *cr){ + GtkWidget *w=gtk_hbox_new (FALSE,0); + GtkWidget *i=create_pixmap ("chat.png"); + GtkWidget *l; + GtkWidget *b=gtk_button_new_with_label("x"); + gtk_widget_set_size_request(b,20,20); + g_signal_connect_swapped(G_OBJECT(b),"clicked",G_CALLBACK(linphone_gtk_quit_chatroom),cr); - LinphoneChatRoom *cr=linphone_core_create_chat_room(linphone_gtk_get_core(),with); - if (!cr) return; - linphone_gtk_init_chatroom(cr,with); -} - -void linphone_gtk_chat_destroyed(GtkWidget *w){ - LinphoneChatRoom *cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(w),"cr"); - linphone_chat_room_destroy(cr); -} - -void linphone_gtk_chat_close(GtkWidget *button){ - GtkWidget *w=gtk_widget_get_toplevel(button); - gtk_widget_destroy(w); + gchar *text=g_strdup_printf("Chat "); + l=gtk_label_new (text); + gtk_box_pack_start (GTK_BOX(w),i,FALSE,FALSE,0); + gtk_box_pack_start (GTK_BOX(w),l,FALSE,FALSE,0); + gtk_box_pack_end(GTK_BOX(w),b,TRUE,TRUE,0); + gtk_widget_show_all(w); + + return w; } void linphone_gtk_push_text(GtkTextView *v, const char *from, const char *message, gboolean me){ @@ -69,7 +65,7 @@ void linphone_gtk_push_text(GtkTextView *v, const char *from, const char *messag gtk_text_buffer_insert(b,&iter,":\t",-1); gtk_text_buffer_get_end_iter(b,&iter); gtk_text_buffer_get_iter_at_offset(b,&begin,off); - gtk_text_buffer_apply_tag_by_name(b,me ? "green" : "blue" ,&begin,&iter); + //gtk_text_buffer_apply_tag_by_name(b,me ? "green" : "blue" ,&begin,&iter); gtk_text_buffer_insert(b,&iter,message,-1); gtk_text_buffer_get_end_iter(b,&iter); gtk_text_buffer_insert(b,&iter,"\n",-1); @@ -82,27 +78,61 @@ void linphone_gtk_push_text(GtkTextView *v, const char *from, const char *messag //gtk_text_view_scroll_to_iter(v,&iter,0,TRUE,1.0,1.0); } +/*void linphone_gtk_push_text_start(GtkTextView *v, const char *from, const char *message){ + GtkTextBuffer *b=gtk_text_view_get_buffer(v); + GtkTextIter iter,begin; + int off; + gtk_text_buffer_get_end_iter(b,&iter); + off=gtk_text_iter_get_offset(&iter); + gtk_text_buffer_insert(b,&iter,from,-1); + gtk_text_buffer_get_end_iter(b,&iter); + gtk_text_buffer_insert(b,&iter,":\t",-1); + gtk_text_buffer_get_end_iter(b,&iter); + gtk_text_buffer_get_iter_at_offset(b,&begin,off); + //gtk_text_buffer_apply_tag_by_name(b,me ? "green" : "blue" ,&begin,&iter); + gtk_text_buffer_insert(b,&iter,message,-1); + gtk_text_buffer_get_end_iter(b,&iter); + gtk_text_buffer_insert(b,&iter,"\n",-1); + gtk_text_buffer_get_end_iter(b,&iter); + + //GtkTextMark *mark=gtk_text_buffer_create_mark(b,NULL,&iter,FALSE); + //gtk_text_view_scroll_mark_onscreen(v,mark); + //gtk_text_buffer_get_end_iter(b,&iter); + //gtk_text_iter_forward_to_line_end(&iter); + //gtk_text_view_scroll_to_iter(v,&iter,0,TRUE,1.0,1.0); +}*/ + const char* linphone_gtk_get_used_identity(){ LinphoneCore *lc=linphone_gtk_get_core(); LinphoneProxyConfig *cfg; linphone_core_get_default_proxy(lc,&cfg); - if (cfg) return linphone_proxy_config_get_identity(cfg); - else return linphone_core_get_primary_contact(lc); + const char* display; + const LinphoneAddress* u; + if (cfg) { + u = linphone_address_new(linphone_proxy_config_get_identity(cfg)); + } else { + u = linphone_core_get_primary_contact_parsed(lc); + } + display=linphone_address_get_display_name(u); + if (display==NULL || display[0]=='\0') { + display=linphone_address_as_string(u); + } + return display; } static void on_chat_state_changed(LinphoneChatMessage *msg, LinphoneChatMessageState state, void *user_pointer){ g_message("chat message state is %s",linphone_chat_message_state_to_string(state)); } -void linphone_gtk_send_text(GtkWidget *button){ - GtkWidget *w=gtk_widget_get_toplevel(button); - GtkWidget *entry=linphone_gtk_get_widget(w,"text_entry"); - LinphoneChatRoom *cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(w),"cr"); +void linphone_gtk_send_text(LinphoneChatRoom *cr){ + GtkWidget *chat_view=(GtkWidget*)linphone_chat_room_get_user_data(cr); + GtkWidget *entry= linphone_gtk_get_widget(chat_view,"text_entry"); const gchar *entered; entered=gtk_entry_get_text(GTK_ENTRY(entry)); + if (strlen(entered)>0) { LinphoneChatMessage *msg; - linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textlog")), + linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview")), linphone_gtk_get_used_identity(), entered,TRUE); msg=linphone_chat_room_create_message(cr,entered); @@ -111,31 +141,98 @@ void linphone_gtk_send_text(GtkWidget *button){ } } + +void linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const char *with){ + GtkWidget *chat_view=linphone_gtk_create_widget("main","chatroom_frame"); + GtkWidget *main_window=linphone_gtk_get_main_window (); + GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch"); + GtkTextBuffer *b; + int idx; + + b=gtk_text_view_get_buffer(GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview"))); + gtk_text_buffer_create_tag(b,"blue","foreground","blue",NULL); + gtk_text_buffer_create_tag(b,"green","foreground","green",NULL); + gtk_notebook_append_page (notebook,chat_view,create_tab_chat_header(cr)); + idx = gtk_notebook_page_num(notebook, chat_view); + gtk_notebook_set_current_page(notebook, idx); + gtk_widget_show(chat_view); + g_object_set_data(G_OBJECT(chat_view),"cr",cr); + linphone_chat_room_set_user_data(cr,chat_view); + + //linphone_gtk_get_used_identity() + + GtkWidget *text=linphone_gtk_get_widget(chat_view,"textview"); + gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW(text),GTK_WRAP_WORD); + //linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview")),NULL, + // "Conversation avec moi",FALSE); + + //linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview")),with, + // "Conversation avec ",FALSE); + + //Initialisation des signaux + GtkWidget *button = linphone_gtk_get_widget(chat_view,"send"); + g_signal_connect_swapped(G_OBJECT(button),"clicked",(GCallback)linphone_gtk_send_text,cr); + + GtkWidget *entry = linphone_gtk_get_widget(chat_view,"text_entry"); + g_signal_connect_swapped(G_OBJECT(entry),"activate",(GCallback)linphone_gtk_send_text,cr); +} + + +LinphoneChatRoom * linphone_gtk_create_chatroom(const char *with){ + LinphoneChatRoom *cr=linphone_core_create_chat_room(linphone_gtk_get_core(),with); + if (!cr) return NULL; + linphone_gtk_init_chatroom(cr,with); + return cr; +} + +void linphone_gtk_load_chatroom(LinphoneChatRoom *cr,const char* uri){ + GtkWidget *w=(GtkWidget*)linphone_chat_room_get_user_data(cr); + if(w==NULL){ + linphone_gtk_init_chatroom(cr, uri); + } else { + //TODO + } +} + +void linphone_gtk_chat_destroyed(GtkWidget *w){ + LinphoneChatRoom *cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(w),"cr"); + linphone_chat_room_destroy(cr); +} + +void linphone_gtk_chat_close(GtkWidget *button){ + GtkWidget *w=gtk_widget_get_toplevel(button); + gtk_widget_destroy(w); +} + + void linphone_gtk_text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message){ GtkWidget *w=(GtkWidget*)linphone_chat_room_get_user_data(room); if (w==NULL){ - w=linphone_gtk_init_chatroom(room,linphone_address_as_string_uri_only(from)); - g_object_set_data(G_OBJECT(w),"is_notified",GINT_TO_POINTER(FALSE)); + linphone_gtk_init_chatroom(room,linphone_address_as_string_uri_only(from)); + w=(GtkWidget*)linphone_chat_room_get_user_data(room); } #ifdef HAVE_GTK_OSX /* Notified when a new message is sent */ linphone_gtk_status_icon_set_blinking(TRUE); #else - if (!gtk_window_is_active((GtkWindow*)w)){ - if(!GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w),"is_notified"))){ - linphone_gtk_notify(NULL,message); - g_object_set_data(G_OBJECT(w),"is_notified",GINT_TO_POINTER(TRUE)); - } + if(!GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w),"is_notified"))){ + linphone_gtk_notify(NULL,message); + g_object_set_data(G_OBJECT(w),"is_notified",GINT_TO_POINTER(TRUE)); } else { g_object_set_data(G_OBJECT(w),"is_notified",GINT_TO_POINTER(FALSE)); } #endif - linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textlog")), - linphone_address_as_string_uri_only(from), + + const char* display = linphone_address_get_display_name(from); + if(display==NULL){ + display = linphone_address_as_string(from); + } + linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textview")), + display, message,FALSE); - gtk_window_present(GTK_WINDOW(w)); + //gtk_window_present(GTK_WINDOW(w)); /*gtk_window_set_urgency_hint(GTK_WINDOW(w),TRUE);*/ } diff --git a/gtk/chatroom.ui b/gtk/chatroom.ui deleted file mode 100644 index dc392710..00000000 --- a/gtk/chatroom.ui +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - True - - - True - True - never - automatic - - - 400 - 200 - True - True - False - word - - - - - 0 - - - - - True - - - True - True - True - - - - 0 - - - - - True - True - True - - - - True - - - True - gtk-ok - - - 0 - - - - - True - Send - - - 7 - 1 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - end - - - gtk-close - True - True - True - True - - - - False - False - end - 0 - - - - - False - 2 - - - - - - diff --git a/gtk/friendlist.c b/gtk/friendlist.c index d5a056fe..114e931e 100644 --- a/gtk/friendlist.c +++ b/gtk/friendlist.c @@ -27,8 +27,11 @@ enum{ FRIEND_NAME, FRIEND_PRESENCE_STATUS, FRIEND_ID, + FRIEND_CHATROOM, FRIEND_SIP_ADDRESS, FRIEND_ICON, + FRIEND_CALL, + FRIEND_CHAT, FRIEND_LIST_NCOL }; @@ -67,6 +70,18 @@ static GdkPixbuf *create_status_picture(LinphoneOnlineStatus ss){ return NULL; } +static GdkPixbuf *create_call_picture(){ + GdkPixbuf *pixbuf; + pixbuf = create_pixbuf("call.png"); + return pixbuf; +} + +static GdkPixbuf *create_chat_picture(){ + GdkPixbuf *pixbuf; + pixbuf = create_pixbuf("chat.png"); + return pixbuf; +} + void linphone_gtk_set_friend_status(GtkWidget *friendlist , LinphoneFriend * fid, const gchar *url, const gchar *status, const gchar *img){ GtkTreeIter iter; LinphoneFriend *tmp=0; @@ -86,11 +101,9 @@ void linphone_gtk_set_friend_status(GtkWidget *friendlist , LinphoneFriend * fid } } }while(gtk_tree_model_iter_next(model,&iter)); - } - + } } - static void linphone_gtk_set_selection_to_uri_bar(GtkTreeView *treeview){ GtkTreeSelection *select; GtkTreeIter iter; @@ -107,6 +120,46 @@ static void linphone_gtk_set_selection_to_uri_bar(GtkTreeView *treeview){ } } +void linphone_gtk_add_contact(){ + GtkWidget *w=linphone_gtk_create_window("contact"); + int presence_enabled=linphone_gtk_get_ui_config_int("use_subscribe_notify",1); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"show_presence")),presence_enabled); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"allow_presence")), + presence_enabled); + gtk_widget_show(w); +} + +void linphone_gtk_edit_contact(GtkWidget *button){ + GtkWidget *w=gtk_widget_get_toplevel(button); + GtkTreeSelection *select; + GtkTreeIter iter; + GtkTreeModel *model; + LinphoneFriend *lf=NULL; + select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list"))); + if (gtk_tree_selection_get_selected (select, &model, &iter)) + { + gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1); + linphone_gtk_show_contact(lf); + } +} + + +void linphone_gtk_remove_contact(GtkWidget *button){ + GtkWidget *w=gtk_widget_get_toplevel(button); + GtkTreeSelection *select; + GtkTreeIter iter; + GtkTreeModel *model; + LinphoneFriend *lf=NULL; + select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list"))); + if (gtk_tree_selection_get_selected (select, &model, &iter)) + { + gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1); + linphone_core_remove_friend(linphone_gtk_get_core(),lf); + linphone_gtk_show_friends(); + } +} + static void linphone_gtk_call_selected(GtkTreeView *treeview){ linphone_gtk_set_selection_to_uri_bar(treeview); linphone_gtk_start_call(linphone_gtk_get_widget(gtk_widget_get_toplevel(GTK_WIDGET(treeview)), @@ -118,11 +171,25 @@ void linphone_gtk_contact_activated(GtkTreeView *treeview, GtkTreeViewColumn *column, gpointer user_data) { - linphone_gtk_call_selected(treeview); + //linphone_gtk_call_selected(treeview); } void linphone_gtk_contact_clicked(GtkTreeView *treeview){ linphone_gtk_set_selection_to_uri_bar(treeview); + +} + + +void linphone_gtk_add_button_clicked(void){ + linphone_gtk_add_contact(); +} + +void linphone_gtk_edit_button_clicked(GtkWidget *button){ + linphone_gtk_edit_contact(button); +} + +void linphone_gtk_remove_button_clicked(GtkWidget *button){ + linphone_gtk_remove_contact(button); } static GtkWidget * create_presence_menu(){ @@ -320,12 +387,12 @@ static int friend_compare_func(const LinphoneFriend *lf1, const LinphoneFriend * return w2-w1; } -static gint friend_sort_with_presence(GtkTreeModel *model, GtkTreeIter *a,GtkTreeIter *b,gpointer user_data){ +/*static gint friend_sort_with_presence(GtkTreeModel *model, GtkTreeIter *a,GtkTreeIter *b,gpointer user_data){ LinphoneFriend *lf1=NULL,*lf2=NULL; gtk_tree_model_get(model,a,FRIEND_ID,&lf1,-1); gtk_tree_model_get(model,b,FRIEND_ID,&lf2,-1); return friend_compare_func(lf1,lf2); -} +}*/ static MSList *sort_friend_list(const MSList *friends){ @@ -352,43 +419,51 @@ static void on_presence_column_clicked(GtkTreeModel *model){ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model),FRIEND_ID,st); } -static void linphone_gtk_friend_list_init(GtkWidget *friendlist) -{ +void create_button(){ + GtkWidget *main_window = linphone_gtk_get_main_window (); + GtkWidget *button_add = linphone_gtk_get_widget(main_window,"add_button"); + GtkWidget *image; + + image=gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_MENU); + gtk_container_add (GTK_CONTAINER (button_add), image); +} + +/* Creation of contact list*/ +static void linphone_gtk_friend_list_init(GtkWidget *friendlist){ GtkListStore *store; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeSelection *select; linphone_gtk_init_bookmark_icon(); + - store = gtk_list_store_new(FRIEND_LIST_NCOL, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, - G_TYPE_STRING, GDK_TYPE_PIXBUF); + store = gtk_list_store_new(FRIEND_LIST_NCOL,GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, + G_TYPE_POINTER, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF); gtk_tree_view_set_model(GTK_TREE_VIEW(friendlist),GTK_TREE_MODEL(store)); g_object_unref(G_OBJECT(store)); - + + /* Tree specification*/ + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(friendlist),FALSE); gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(friendlist),friend_search_func,NULL,NULL); gtk_tree_view_set_search_column(GTK_TREE_VIEW(friendlist),FRIEND_NAME); - gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store),FRIEND_NAME,friend_sort,NULL,NULL); - gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store),FRIEND_ID,friend_sort_with_presence,NULL,NULL); - renderer = gtk_cell_renderer_pixbuf_new (); + + /*Name and presence column*/ + + renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Name"), renderer, - "pixbuf", FRIEND_ICON, - NULL); + "text", FRIEND_NAME,NULL); g_object_set (G_OBJECT(column), "resizable", TRUE, NULL); g_signal_connect_swapped(G_OBJECT(column),"clicked",(GCallback)on_name_column_clicked,GTK_TREE_MODEL(store)); gtk_tree_view_column_set_clickable(column,TRUE); - - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start(column,renderer,FALSE); - gtk_tree_view_column_add_attribute (column,renderer, - "text", - FRIEND_NAME); - - gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column); + gtk_tree_view_column_set_expand(column,TRUE); + gtk_tree_view_column_set_max_width(column,60); + gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column); + column = gtk_tree_view_column_new_with_attributes (_("Presence status"), renderer, @@ -396,23 +471,38 @@ static void linphone_gtk_friend_list_init(GtkWidget *friendlist) NULL); g_object_set (G_OBJECT(column), "resizable", TRUE, NULL); g_signal_connect_swapped(G_OBJECT(column),"clicked",(GCallback)on_presence_column_clicked,GTK_TREE_MODEL(store)); - gtk_tree_view_column_set_clickable(column,TRUE); + gtk_tree_view_column_set_clickable(column,TRUE); gtk_tree_view_column_set_visible(column,linphone_gtk_get_ui_config_int("friendlist_status",1)); renderer = gtk_cell_renderer_pixbuf_new(); - gtk_tree_view_column_pack_start(column,renderer,FALSE); + gtk_tree_view_column_pack_start(column,renderer,TRUE); gtk_tree_view_column_add_attribute (column,renderer, "pixbuf", FRIEND_PRESENCE_IMG); gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column); + + /* Call column*/ + renderer = gtk_cell_renderer_pixbuf_new(); + column = gtk_tree_view_column_new_with_attributes (_("Call"),renderer,"pixbuf",FRIEND_CALL,NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column); + + /* chat column*/ + renderer = gtk_cell_renderer_pixbuf_new(); + column = gtk_tree_view_column_new_with_attributes (_("Chat"),renderer,"pixbuf",FRIEND_CHAT,NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column); + select = gtk_tree_view_get_selection (GTK_TREE_VIEW (friendlist)); gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE); + + gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(friendlist),GTK_TREE_VIEW_GRID_LINES_NONE); #if GTK_CHECK_VERSION(2,12,0) gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(friendlist),FRIEND_SIP_ADDRESS); #endif - gtk_combo_box_set_active(GTK_COMBO_BOX(linphone_gtk_get_widget( - gtk_widget_get_toplevel(friendlist),"show_category")),0); + + gtk_widget_set_size_request(friendlist,200,100); + /*gtk_combo_box_set_active(GTK_COMBO_BOX(linphone_gtk_get_widget( + gtk_widget_get_toplevel(friendlist),"show_category")),0);*/ } void linphone_gtk_show_directory_search(void){ @@ -468,18 +558,16 @@ void linphone_gtk_directory_search_button_clicked(GtkWidget *button){ linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"directory_search_entry")); } - void linphone_gtk_show_friends(void){ GtkWidget *mw=linphone_gtk_get_main_window(); GtkWidget *friendlist=linphone_gtk_get_widget(mw,"contact_list"); GtkListStore *store=NULL; GtkTreeIter iter; const MSList *itf; - GtkWidget *category=linphone_gtk_get_widget(mw,"show_category"); GtkWidget *filter=linphone_gtk_get_widget(mw,"search_bar"); LinphoneCore *core=linphone_gtk_get_core(); const gchar *search=NULL; - gboolean online_only=FALSE,lookup=FALSE; + gboolean lookup=FALSE; MSList *sorted; linphone_gtk_show_directory_search(); @@ -490,7 +578,6 @@ void linphone_gtk_show_friends(void){ store=GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(friendlist))); gtk_list_store_clear(store); - online_only=(gtk_combo_box_get_active(GTK_COMBO_BOX(category))==1); search=gtk_entry_get_text(GTK_ENTRY(filter)); if (search==NULL || search[0]=='\0') lookup=FALSE; @@ -511,60 +598,36 @@ void linphone_gtk_show_friends(void){ continue; } } - if (!online_only || (linphone_friend_get_status(lf)!=LinphoneStatusOffline)){ - BuddyInfo *bi; - gboolean send_subscribe=linphone_friend_get_send_subscribe(lf); - if (name==NULL || name[0]=='\0') display=uri; - gtk_list_store_append(store,&iter); - gtk_list_store_set(store,&iter,FRIEND_NAME, display, - FRIEND_PRESENCE_STATUS, - send_subscribe ? linphone_online_status_to_string(linphone_friend_get_status(lf)) : "", - FRIEND_ID,lf, - FRIEND_PRESENCE_IMG, send_subscribe ? create_status_picture(linphone_friend_get_status(lf)) : NULL, - -1); - escaped=g_markup_escape_text(uri,-1); - gtk_list_store_set(store,&iter,FRIEND_SIP_ADDRESS,escaped,-1); - g_free(escaped); - bi=linphone_friend_get_info(lf); - if (bi!=NULL && bi->image_data!=NULL){ - GdkPixbuf *pbuf= - _gdk_pixbuf_new_from_memory_at_scale(bi->image_data,bi->image_length,-1,40,TRUE); - if (pbuf) { - gtk_list_store_set(store,&iter,FRIEND_ICON,pbuf,-1); - g_object_unref(G_OBJECT(pbuf)); - } - } + //BuddyInfo *bi; + gboolean send_subscribe=linphone_friend_get_send_subscribe(lf); + if (name==NULL || name[0]=='\0') { + display=uri; } + gtk_list_store_append(store,&iter); + gtk_list_store_set(store,&iter,FRIEND_NAME, display,FRIEND_ID,lf, + FRIEND_PRESENCE_IMG, send_subscribe ? create_status_picture(linphone_friend_get_status(lf)) : NULL, + -1); + + gtk_list_store_set(store,&iter,FRIEND_CALL,create_call_picture(),-1); + gtk_list_store_set(store,&iter,FRIEND_CHAT,create_chat_picture(),-1); + + escaped=g_markup_escape_text(uri,-1); + gtk_list_store_set(store,&iter,FRIEND_SIP_ADDRESS,escaped,-1); + g_free(escaped); + //bi=linphone_friend_get_info(lf); + /*if (bi!=NULL && bi->image_data!=NULL){ + GdkPixbuf *pbuf= + _gdk_pixbuf_new_from_memory_at_scale(bi->image_data,bi->image_length,-1,40,TRUE); + if (pbuf) { + //gtk_list_store_set(store,&iter,FRIEND_ICON,pbuf,-1); + g_object_unref(G_OBJECT(pbuf)); + } + }*/ ms_free(uri); } ms_list_free(sorted); } -void linphone_gtk_add_contact(){ - GtkWidget *w=linphone_gtk_create_window("contact"); - int presence_enabled=linphone_gtk_get_ui_config_int("use_subscribe_notify",1); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"show_presence")),presence_enabled); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"allow_presence")), - presence_enabled); - gtk_widget_show(w); -} - -void linphone_gtk_remove_contact(GtkWidget *button){ - GtkWidget *w=gtk_widget_get_toplevel(button); - GtkTreeSelection *select; - GtkTreeIter iter; - GtkTreeModel *model; - LinphoneFriend *lf=NULL; - select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list"))); - if (gtk_tree_selection_get_selected (select, &model, &iter)) - { - gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1); - linphone_core_remove_friend(linphone_gtk_get_core(),lf); - linphone_gtk_show_friends(); - } -} - void linphone_gtk_show_contact(LinphoneFriend *lf){ GtkWidget *w=linphone_gtk_create_window("contact"); char *uri; @@ -587,35 +650,46 @@ void linphone_gtk_show_contact(LinphoneFriend *lf){ gtk_widget_show(w); } -void linphone_gtk_edit_contact(GtkWidget *button){ - GtkWidget *w=gtk_widget_get_toplevel(button); - GtkTreeSelection *select; - GtkTreeIter iter; - GtkTreeModel *model; - LinphoneFriend *lf=NULL; - select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list"))); - if (gtk_tree_selection_get_selected (select, &model, &iter)) - { - gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1); - linphone_gtk_show_contact(lf); - } +void linphone_gtk_init_chat(GtkWidget *w){ + //LinphoneCore *lc=linphone_gtk_get_core(); + + //GtkWidget *mw=gtk_widget_get_toplevel(w); + //GtkWidget *uri_bar=linphone_gtk_get_widget(mw,"uribar"); + + //g_timeout_add(100,(GSourceFunc)linphone_gtk_start_call_do,uri_bar); } + void linphone_gtk_chat_selected(GtkWidget *item){ + linphone_gtk_init_chat(item); + GtkWidget *w=gtk_widget_get_toplevel(item); GtkTreeSelection *select; + GtkListStore *store=NULL; GtkTreeIter iter; GtkTreeModel *model; LinphoneFriend *lf=NULL; + select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list"))); + store=GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(item))); + LinphoneChatRoom *cr=NULL; + if (gtk_tree_selection_get_selected (select, &model, &iter)) { + gtk_tree_model_get(model,&iter,FRIEND_CHATROOM,&cr,-1); char *uri; gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1); uri=linphone_address_as_string(linphone_friend_get_address(lf)); - linphone_gtk_create_chatroom(uri); + fprintf(stdout,"uri %s\n",uri); + if(cr == NULL){ + + LinphoneChatRoom *cr=linphone_gtk_create_chatroom(uri); + gtk_list_store_set(store,&iter,FRIEND_CHATROOM,cr,-1); + linphone_gtk_load_chatroom(cr,uri); + } + ms_free(uri); - } + } } void linphone_gtk_contact_cancel(GtkWidget *button){ @@ -678,7 +752,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){ LinphoneCore *lc=linphone_gtk_get_core(); LinphoneProxyConfig *cfg=NULL; SipSetupContext * ssc=NULL; - + linphone_core_get_default_proxy(lc,&cfg); if (cfg){ ssc=linphone_proxy_config_get_sip_setup_context(cfg); @@ -767,11 +841,55 @@ gboolean linphone_gtk_popup_contact_menu(GtkWidget *list, GdkEventButton *event) return TRUE; } + +gint get_col_number_from_tree_view_column (GtkTreeViewColumn *col){ + GList *cols; + gint num; + g_return_val_if_fail ( col != NULL, -1 ); + g_return_val_if_fail ( col->tree_view != NULL, -1 ); + cols = gtk_tree_view_get_columns(GTK_TREE_VIEW(col->tree_view)); + num = g_list_index(cols, (gpointer) col); + g_list_free(cols); + + return num; +} + + +static gboolean tree_view_get_cell_from_pos(GtkTreeView *view, guint x, guint y){ + GtkTreeViewColumn *col = NULL; + GList *node, *columns; + guint colx = 0; + + g_return_val_if_fail ( view != NULL, FALSE ); + columns = gtk_tree_view_get_columns(view); + + for (node = columns; node != NULL && col == NULL; node = node->next) + { + GtkTreeViewColumn *checkcol = (GtkTreeViewColumn*) node->data; + if (x >= colx && x < (colx + checkcol->width)){ + col = checkcol; + gint num = get_col_number_from_tree_view_column(col); + return num; + } + else + colx += checkcol->width; + } + g_list_free(columns); + return 0; +} + gboolean linphone_gtk_contact_list_button_pressed(GtkWidget *widget, GdkEventButton *event){ /* Ignore double-clicks and triple-clicks */ if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { return linphone_gtk_popup_contact_menu(widget, event); + } else if(event->button == 1 && event->type == GDK_BUTTON_PRESS){ + gint numcol = tree_view_get_cell_from_pos(GTK_TREE_VIEW(widget),event->x,event->y); + if(numcol==2){ + linphone_gtk_call_selected(GTK_TREE_VIEW(widget)); + } else if(numcol==3){ + linphone_gtk_chat_selected(widget); + } } return FALSE; } diff --git a/gtk/incall_view.c b/gtk/incall_view.c index 7e8eb683..25ee2348 100644 --- a/gtk/incall_view.c +++ b/gtk/incall_view.c @@ -107,7 +107,6 @@ static void linphone_gtk_in_call_set_animation_spinner(GtkWidget *callview){ #endif } - static void linphone_gtk_transfer_call(LinphoneCall *dest_call){ LinphoneCall *call=linphone_gtk_get_currently_displayed_call(NULL); if (call) linphone_core_transfer_call_to_another(linphone_gtk_get_core(),call,dest_call); @@ -141,8 +140,6 @@ static void transfer_button_clicked(GtkWidget *button, gpointer call_ref){ gtk_widget_show(menu); } - - void linphone_gtk_enable_transfer_button(LinphoneCore *lc, gboolean value){ const MSList *elem=linphone_core_get_calls(lc); for(;elem!=NULL;elem=elem->next){ @@ -217,6 +214,13 @@ void linphone_gtk_create_in_call_view(LinphoneCall *call){ linphone_gtk_enable_hold_button (call,FALSE,TRUE); linphone_gtk_enable_mute_button( GTK_BUTTON(linphone_gtk_get_widget(call_view,"incall_mute")),FALSE); + + GtkWidget *button=linphone_gtk_get_widget(call_view,"terminate_call"); + GtkWidget *image=create_pixmap("stopcall-red.png"); + gtk_button_set_label(GTK_BUTTON(button),_("Stop")); + gtk_button_set_image(GTK_BUTTON(button),image); + gtk_widget_show(image); + } static void video_button_clicked(GtkWidget *button, LinphoneCall *call){ @@ -570,6 +574,8 @@ void linphone_gtk_in_call_view_terminate(LinphoneCall *call, const char *error_m gtk_widget_hide(linphone_gtk_get_widget(callview,"answer_decline_panel")); gtk_widget_hide(linphone_gtk_get_widget(callview,"incall_audioview")); + gtk_widget_hide(linphone_gtk_get_widget(callview,"terminate_call")); + gtk_widget_hide(linphone_gtk_get_widget(callview,"video_button")); linphone_gtk_enable_mute_button( GTK_BUTTON(linphone_gtk_get_widget(callview,"incall_mute")),FALSE); linphone_gtk_enable_hold_button(call,FALSE,TRUE); diff --git a/gtk/linphone.h b/gtk/linphone.h index 97a4400c..5c2df5ea 100644 --- a/gtk/linphone.h +++ b/gtk/linphone.h @@ -70,7 +70,7 @@ void linphone_gtk_show_parameters(void); void linphone_gtk_fill_soundcards(GtkWidget *pb); void linphone_gtk_fill_webcams(GtkWidget *pb); void linphone_gtk_load_identities(void); -void linphone_gtk_create_chatroom(const char *with); +LinphoneChatRoom * linphone_gtk_create_chatroom(const char *with); void linphone_gtk_text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message); void linphone_gtk_call_log_update(GtkWidget *w); void linphone_gtk_create_log_window(void); @@ -95,10 +95,15 @@ GtkWidget * linphone_gtk_show_buddy_lookup_window(SipSetupContext *ctx); void linphone_gtk_buddy_lookup_set_keyword(GtkWidget *w, const char *kw); void * linphone_gtk_wait(LinphoneCore *lc, void *ctx, LinphoneWaitingState ws, const char *purpose, float progress); +void linphone_gtk_terminate_call(GtkWidget *button); + void linphone_gtk_show_directory_search(void); void linphone_gtk_status_icon_set_blinking(gboolean val); void linphone_gtk_notify(LinphoneCall *call, const char *msg); +LinphoneChatRoom *linphone_gtk_start_chat(GtkTreeView* t); +void linphone_gtk_load_chatroom(LinphoneChatRoom *cr,const char* uri); +void linphone_gtk_send_text(LinphoneChatRoom *cr); /*functions controlling the different views*/ gboolean linphone_gtk_use_in_call_view(); diff --git a/gtk/main.c b/gtk/main.c index 19380325..0acbf6d4 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -170,7 +170,6 @@ char *linphone_gtk_get_config_file(const char *filename){ return config_file; } - #define FACTORY_CONFIG_FILE "linphonerc.factory" static char _factory_config_file[1024]; static const char *linphone_gtk_get_factory_config_file(){ @@ -481,6 +480,7 @@ static void set_video_window_decorations(GdkWindow *w){ const char *icon_path=linphone_gtk_get_ui_config("icon",LINPHONE_ICON); char video_title[256]; GdkPixbuf *pbuf=create_pixbuf(icon_path); + if (!linphone_core_in_call(linphone_gtk_get_core())){ snprintf(video_title,sizeof(video_title),"%s video",title); /* When not in call, treat the video as a normal window */ @@ -688,7 +688,6 @@ void linphone_gtk_show_main_window(){ void linphone_gtk_call_terminated(LinphoneCall *call, const char *error){ GtkWidget *mw=linphone_gtk_get_main_window(); if (linphone_core_get_calls(linphone_gtk_get_core())==NULL){ - gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),FALSE); gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"start_call"),TRUE); } if (linphone_gtk_use_in_call_view() && call) @@ -702,15 +701,15 @@ static void linphone_gtk_update_call_buttons(LinphoneCall *call){ const MSList *calls=linphone_core_get_calls(lc); GtkWidget *button; bool_t start_active=TRUE; - bool_t stop_active=FALSE; + //bool_t stop_active=FALSE; bool_t add_call=FALSE; int call_list_size=ms_list_size(calls); if (calls==NULL){ start_active=TRUE; - stop_active=FALSE; + //stop_active=FALSE; }else{ - stop_active=TRUE; + //stop_active=TRUE; start_active=TRUE; add_call=TRUE; } @@ -726,7 +725,7 @@ static void linphone_gtk_update_call_buttons(LinphoneCall *call){ } gtk_widget_set_visible(button,add_call); - gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),stop_active); + //gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),stop_active); linphone_gtk_enable_transfer_button(lc,call_list_size>1); linphone_gtk_enable_conference_button(lc,call_list_size>1); @@ -967,6 +966,7 @@ static void linphone_gtk_auth_info_requested(LinphoneCore *lc, const char *realm static void linphone_gtk_display_status(LinphoneCore *lc, const char *status){ GtkWidget *w=linphone_gtk_get_main_window(); GtkWidget *status_bar=linphone_gtk_get_widget(w,"status_bar"); + gtk_statusbar_push(GTK_STATUSBAR(status_bar), gtk_statusbar_get_context_id(GTK_STATUSBAR(status_bar),""), status); @@ -1484,18 +1484,28 @@ static void linphone_gtk_configure_main_window(){ static const char *home; static const char *start_call_icon; static const char *add_call_icon; - static const char *stop_call_icon; + //static const char *stop_call_icon; static const char *search_icon; static gboolean update_check_menu; static gboolean buttons_have_borders; static gboolean show_abcd; GtkWidget *w=linphone_gtk_get_main_window(); + + //Change the color + GdkColor color; + //RGB(246^2,249^2,252^2) + color.pixel = 0; + color.red=65025; + color.green=46656; + color.blue=50625; + gtk_widget_modify_bg(GTK_WIDGET(w), GTK_STATE_NORMAL, &color); + if (!config_loaded){ title=linphone_gtk_get_ui_config("title","Linphone"); home=linphone_gtk_get_ui_config("home","http://www.linphone.org"); start_call_icon=linphone_gtk_get_ui_config("start_call_icon","startcall-green.png"); add_call_icon=linphone_gtk_get_ui_config("add_call_icon","addcall-green.png"); - stop_call_icon=linphone_gtk_get_ui_config("stop_call_icon","stopcall-red.png"); + //stop_call_icon=linphone_gtk_get_ui_config("stop_call_icon","stopcall-red.png"); search_icon=linphone_gtk_get_ui_config("directory_search_icon",NULL); update_check_menu=linphone_gtk_get_ui_config_int("update_check_menu",0); buttons_have_borders=linphone_gtk_get_ui_config_int("buttons_border",1); @@ -1518,12 +1528,6 @@ static void linphone_gtk_configure_main_window(){ if (!buttons_have_borders) gtk_button_set_relief(GTK_BUTTON(linphone_gtk_get_widget(w,"add_call")),GTK_RELIEF_NONE); } - if (stop_call_icon){ - gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"terminate_call")), - create_pixmap (stop_call_icon)); - if (!buttons_have_borders) - gtk_button_set_relief(GTK_BUTTON(linphone_gtk_get_widget(w,"terminate_call")),GTK_RELIEF_NONE); - } if (search_icon){ GdkPixbuf *pbuf=create_pixbuf(search_icon); gtk_image_set_from_pixbuf(GTK_IMAGE(linphone_gtk_get_widget(w,"directory_search_button_icon")),pbuf); diff --git a/gtk/main.ui b/gtk/main.ui index 9a458dbc..1b147fed 100644 --- a/gtk/main.ui +++ b/gtk/main.ui @@ -1,49 +1,175 @@ - + - + + + True + False + gtk-add + + + False + + + True + False + 0 + none + + + True + False + + + True + True + never + + + True + True + + + + + True + True + 0 + + + + + True + False + + + True + True + True + • + False + False + True + True + + + True + True + 0 + + + + + True + True + True + False + + + True + False + + + True + False + gtk-ok + + + True + True + 0 + + + + + True + False + Send + + + True + True + 7 + 1 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + + + + + + + False True + False 0 none True + False 12 True + False True - - - True - True - - - False - False - 1 - - + False True + False <b>Callee name</b> True right end + True + True end 0 + + + True + True + False + + + False + False + 1 + + + True + True 0 @@ -52,6 +178,7 @@ 170 30 True + False False @@ -71,21 +198,27 @@ + False + False + cursor 0.5 none True + False 12 12 True + False True + False @@ -99,18 +232,23 @@ True + False label center + True + True 1 + False True + False gtk-dialog-authentication 1 @@ -123,6 +261,7 @@ True + False gtk-apply @@ -134,9 +273,12 @@ True + False label + True + True 2 @@ -146,7 +288,8 @@ True True True - + False + False @@ -157,27 +300,34 @@ False - False + True 2 + False + True True True + False half - + + False False 0 + 90 + 10 True + False False @@ -186,19 +336,24 @@ - + + 90 True - gtk-missing-image - 1 + False + False False + end 2 - + True + False + gtk-missing-image + 1 False @@ -210,12 +365,13 @@ False - False + True 3 + False spread @@ -223,7 +379,8 @@ True True True - + False + False @@ -237,7 +394,8 @@ True True True - + False + False @@ -255,6 +413,7 @@ True + False True spread @@ -262,7 +421,8 @@ Pause True True - + False + False @@ -270,17 +430,34 @@ 0 + + + Stop + True + True + True + False + + + + + False + False + 1 + + Video True True True + False False False - 1 + 2 @@ -297,34 +474,45 @@ True + False True True + False In call True center + True + True 0 True + False Duration center + True + True 1 + 90 True + False Call quality rating + True + True 2 @@ -333,175 +521,157 @@ + + True + False + gtk-edit + True + False gtk-info True + False gtk-add True + False gtk-clear True + False gtk-connect True + False gtk-refresh True + False gtk-properties True + False gtk-home True + False gtk-execute True + False gtk-add True + False gtk-add True + False gtk-add True + False gtk-add - - - - - - - - All users - - - Online users - - - - - - - - - - - ADSL - - - Fiber Channel - - - - - - - - - - - Default - - - - - - - - - - - ADSL - - - Fiber Channel - - - + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True + False True + False + False _Options True - + True + False gtk-preferences True + False + False True True - + gtk-disconnect + False + False True True - + True + False True + False + False Always start video True - + True + False + False Enable self-view True True - + True + False gtk-quit + False + False True True - + @@ -511,54 +681,67 @@ True + False + False _Help True True + False gtk-about True + False + False True True - + Show debug window True + False + False image1 False - + _Homepage True + False + False True image4 False - + Check _Updates + False + False True image5 False - + Account assistant + False + False image12 False - + @@ -568,70 +751,57 @@ False + True 0 True + False True + False + 8 True - - - True - True - True - - - - False - False - 0 - - - - - True - True - Initiate a new call - - - - False - False - 1 - - + False True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 none True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 5 5 True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True True - True - Enter username, phone number, or full sip address - - + ● + True + False + False + True + True + + True + True 0 @@ -642,6 +812,7 @@ True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK SIP address or phone number: True @@ -649,662 +820,785 @@ - 2 + True + True + 0 - - True + True True - + Initiate a new call + False + False False - 3 + 1 + + + + + True + True + True + False + + + + False + True + 2 + + + False + True 8 0 - + True - True + False - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False - + True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + ● + none + True + False + False + True + True + + + + False + True + 4 + 0 + + + + + + + + True + True + automatic + automatic - + True - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Lookup: - - - 12 - 0 - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - True - - - - 4 - 1 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - in - - - 8 - 2 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - model1 - 0 - - - - - 0 - - - - - 4 - 3 - - + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + 0 + + + + + + + + + True + True + 2 + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + True + True + True + Add + immediate + False + add_image + 1 + False + False 0 - + True True - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - 0 - - - - - - + True + Edit + False + edit_image + + False + False 1 - - 0 - none + + True + True + True + False + remove_image + + + + False + False + 2 + + + + + False + False + 3 + + + + + False + False + 12 + 0 + + + + + True + True + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - True - True - - True - - - - - - - 0 - - + + True + False + 0.5 + none - + True - True - True - none - + False + 0 + 0 - + True + False + 0 - + True - gtk-find + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 4 + 4 + 4 + True + + + D + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 3 + 4 + 3 + 4 + + + + + # + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 2 + 3 + 3 + 4 + + + + + 0 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 1 + 2 + 3 + 4 + + + + + * + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 3 + 4 + + + + + C + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 3 + 4 + 2 + 3 + + + + + 9 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 2 + 3 + 2 + 3 + + + + + 8 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 1 + 2 + 2 + 3 + + + + + 7 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 2 + 3 + + + + + B + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 3 + 4 + 1 + 2 + + + + + 6 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 2 + 3 + 1 + 2 + + + + + 5 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 1 + 2 + 1 + 2 + + + + + 4 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 1 + 2 + + + + + A + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 3 + 4 + + + + + 3 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 2 + 3 + + + + + 2 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + 1 + 2 + + + + + 1 + 40 + 40 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + - - 0 - + + + + + + + + + + True + True + 0 + + + + + False + 0 + none + + + False + + + True + True + ● + True + False + False + True + True + + + + + + + True + True + 0 + + + + + True + True + True + False + none + - + True - Search + False + + + True + False + gtk-find + + + True + True + 0 + + + + + True + False + Search + + + True + True + 1 + + - - 1 - + + False + True + 1 + - - False - 1 - + + + + True + False + <b>Add contacts from directory</b> + True + + + False + False + 5 + 2 + - - - True - <b>Add contacts from directory</b> - True - - - - - False - False - 5 - 2 - - - - - True - - Add contact - True - True - image10 - + + True + False + + + Add contact + True + True + False + image10 + + + + False + False + 0 + + False False - 0 + 3 - False - False - 3 + True + True + 0 - - 0 - - - - - - - True - - - True - gtk-directory - 1 - - - 0 - - - - True - Contacts - - - 1 - - - - - False - - - - - True - - + + True - 2 + False - + True - True - never - - - True - True - False - - - - + False + gtk-missing-image + 1 - 1 + True + True + 0 - + True - end - - - gtk-clear - True - True - True - True - - - - False - False - 0 - - - - - - - - + False + Keypad - False - end - 0 + True + True + 1 - 0 - - - - - 1 - - - - - True - - - True - gtk-refresh - 1 - - - 0 + False - + True - 0.49000000953674316 - Recent calls - - - 1 - - - - - 1 - False - - - - - True - 0.5 - none - - - True - 0 - 0 + False - + True - 0 + False + 2 - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 4 - 4 - 4 - True - - - D - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 3 - 4 - 3 - 4 - - - - - # - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 2 - 3 - 3 - 4 - - - - - 0 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 1 - 2 - 3 - 4 - - - - - * - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 3 - 4 - - - - - C - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 3 - 4 - 2 - 3 - - - - - 9 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 2 - 3 - 2 - 3 - - + False + end - - 8 + + gtk-clear True True True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + True + - 1 - 2 - 2 - 3 - - - - - 7 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 2 - 3 - - - - - B - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 3 - 4 - 1 - 2 - - - - - 6 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 2 - 3 - 1 - 2 - - - - - 5 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 1 - 2 - 1 - 2 - - - - - 4 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 1 - 2 - - - - - A - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 3 - 4 + False + False + 0 - - 3 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 2 - 3 - + - - 2 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 1 - 2 - + + + + False + True + end + 0 + + + + + True + True + never - - 1 - 40 - 40 + + 266 True True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + + + + True + True + 1 + + + True + True + 0 + - - - - - - - 2 - - - - - True - - - True - gtk-missing-image - 1 - - 0 + 1 - - + + True - Keypad + False + + + True + False + gtk-refresh + 1 + + + True + True + 0 + + + + + True + False + 0.49000000953674316 + Recent calls + + + True + True + 1 + + 1 + False + + + + + + - 2 - False + True + True + 4 + 1 + True + True 1 True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 none True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK model3 0 - + @@ -1316,15 +1610,19 @@ True + False 5 True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK My current identity: True + True + True 0 @@ -1332,16 +1630,20 @@ True True + False none - + True + False gtk-refresh + True + True 1 @@ -1356,53 +1658,66 @@ + True + True 0 + False 0 etched-out True + False 12 True + False True + False gtk-missing-image + True + True 0 True + False 0 none True + False 12 12 True + False 4 2 True + False Username True + False Password @@ -1413,6 +1728,7 @@ True + False Internet connection: @@ -1424,7 +1740,11 @@ True True - + ● + False + False + True + True 1 @@ -1436,7 +1756,11 @@ True True False - + ● + False + False + True + True 1 @@ -1448,9 +1772,10 @@ True + False model4 0 - + @@ -1471,6 +1796,7 @@ True True False + False True @@ -1490,12 +1816,15 @@ True + False Login information True + True + True 10 1 @@ -1503,14 +1832,16 @@ True + False gtk-connect True True True + False True - + False @@ -1520,6 +1851,8 @@ + True + True 2 @@ -1530,30 +1863,39 @@ True + False <b>Welcome !</b> True + True + True 1 + True + True 1 True + False True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 2 + True + True 0 @@ -1562,11 +1904,13 @@ True True True + False none - + False + True 5 1 @@ -1581,4 +1925,63 @@ + + + + + + + + All users + + + Online users + + + + + + + + + + + ADSL + + + Fiber Channel + + + + + + + + + + + Default + + + + + + + + + + + ADSL + + + Fiber Channel + + + + + True + False + Delete + gtk-remove + diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am index 4e7c56ed..706a81cc 100644 --- a/pixmaps/Makefile.am +++ b/pixmaps/Makefile.am @@ -11,6 +11,8 @@ status-green.png \ status-orange.png \ status-red.png \ status-offline.png \ +call.png \ +chat.png \ contact-orange.png dialer-orange.png history-orange.png\ startcall-green.png stopcall-red.png addcall-green.png linphone.icns \ contact_starred.png contact_unstarred.png \ diff --git a/pixmaps/addcall-green.png b/pixmaps/addcall-green.png index 3e6ae3b7a8b30334482123a99c963bdbc787f559..fe9b13ef848cf1a9c297442dec20b7511068fc58 100644 GIT binary patch literal 5887 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 literal 2629 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 literal 0 HcmV?d00001 diff --git a/pixmaps/chat.png b/pixmaps/chat.png new file mode 100644 index 0000000000000000000000000000000000000000..98f6fafc9db9a050f12d34857965ff6d247e0550 GIT binary patch literal 3675 zcmV-h4y5skP)P000*V1^@s6{^R5m00004XF*Lt006O% z3;baP000U>X+uL$Nkc;*P;zf(X>4Tx07wm;mUmQB*%pV-y*Itk5+Wca^cs2zAksTX z6$DXM^`x7XQc?|s+008spb1j2M!0f022SQPH-!CVp(%f$Br7!UytSOLJ{W@ZFO z_(THK{JlMynW#v{v-a*TfMmPdEWc1DbJqWVks>!kBnAKqMb$PuekK>?0+ds;#ThdH z1j_W4DKdsJG8Ul;qO2n0#IJ1jr{*iW$(WZWsE0n`c;fQ!l&-AnmjxZO1uWyz`0VP>&nP`#i ztsL#`S=Q!g`M=rU9)45(J;-|dRq-b5&z?byo>|{)?5r=n76A4nTALlSzLiw~v~31J z<>9PP?;rs31pu_(obw)rY+jPY;tVGXi|p)da{-@gE-UCa`=5eu%D;v=_nFJ?`&K)q z7e9d`Nfk3?MdhZarb|T3%nS~f&t(1g5dY)AIcd$w!z`Siz!&j_=v7hZlnI21XuE|x zfmo0(WD10T)!}~_HYW!eew}L+XmwuzeT6wtxJd`dZ#@7*BLgIEKY9Xv>st^p3dp{^ zXswa2bB{85{^$B13tWnB;Y>jyQ|9&zk7RNsqAVGs--K+z0uqo1bf5|}fi5rtEMN^B zfHQCd-XH*kfJhJnmIE$G0%<@5vOzxB0181d*a3EfYH$G5fqKvcPJ%XY23!PJzzuK< z41h;K3WmW;Fah3yX$XSw5EY_9s*o0>51B&N5F1(uc|$=^I1~fLLy3?Ol0f;;Ca4%H zgQ}rJP(Ab`bQ-z{U4#0d2hboi2K@njgb|nm(_szR0JebHusa+GN5aeCM0gdP2N%HG z;Yzp`J`T6S7vUT504#-H!jlL<$Or?`Mpy_N@kBz9SR?@vA#0H$qyni$nvf2p8@Y{0 zk#Xb$28W?xm>3qu8RLgpjNxKdVb)?wFx8l2m{v>|<~C*!GlBVnrDD~wrdTJeKXwT= z5u1%I#8zOBU|X=4u>;s)>^mF|$G{ol9B_WP7+f-LHLe7=57&&lfa}8z;U@8Tyei%l z?}87(bMRt(A-)QK9Dg3)j~~XrCy)tR1Z#p1A(kK{Y$Q|=8VKhI{e%(1G*N-5Pjn)N z5P8I0VkxnX*g?EW941ba6iJ387g8iCnY4jaNopcpCOsy-A(P2EWJhusSwLP-t|Xrz zUnLKcKTwn?CKOLf97RIePB}`sKzTrUL#0v;sBY9)s+hW+T2H-1eM)^VN0T#`^Oxhv zt&^*fYnAJldnHel*OzyfUoM{~Um<@={-*r60#U(0!Bc^wuvVc);k3d%g-J!4qLpHZ zVwz%!VuRu}#Ze`^l7W)95>Kf>>9Eozr6C$Z)1`URxU@~QI@)F0FdauXr2Es8>BaOP z=)Lp_WhG@>R;lZ?BJkMlIuMhw8Ap ziF&yDYW2hFJ?fJhni{?u85&g@mo&yT8JcdI$(rSw=QPK(Xj%)k1X|@<=e1rim6`6$ zRAwc!i#egKuI;BS(LSWzt39n_sIypSqfWEV6J3%nTQ@-4ii$R;gsG*9XzhRzXqv2yCs*$VFDx+GXJH|L;wsDH_KI2;^ zu!)^Xl1YupO;gy^-c(?^&$Q1BYvyPsG^;hc$D**@Sy`+`)}T4VJji^bd7Jqw3q6Zi zi=7tT7GEswEK@D(EFW1ZSp`^awCb?>!`j4}Yh7b~$A)U-W3$et-R8BesV(1jzwLcH znq9En7Q0Tn&-M=XBKs!$F$X<|c!#|X_tWYh)GZit(Q)Cp9CDE^WG;+fcyOWARoj*0TI>4EP1lX*cEoMO-Pk?Z z{kZ!p4@(b`M~lalr<3Oz&kJ6Nm#vN_+kA5 z{dW4@^Vjg_`q%qU1ULk&3Fr!>1V#i_2R;ij2@(Z$1jE4r!MlPVFVbHmT+|iPIq0wy5aS{>yK?9ZAjVh%SOwMWgFja zir&;wpi!{CU}&@N=Eg#~LQ&zpEzVmGY{hI9Z0+4-0x zS$$Xe-OToc?Y*V;rTcf_b_jRe-RZjXSeas3UfIyD;9afd%<`i0x4T#DzE)vdabOQ= zk7SRuGN`h>O0Q~1)u-yD>VX=Mn&!Rgd$;YK+Q-}1zu#?t(*cbG#Ronf6db&N$oEid ztwC+YVcg-Y!_VuY>bk#Ye_ww@?MU&F&qswvrN_dLb=5o6*Egs)ls3YRlE$&)amR1{ z;Ppd$6RYV^Go!iq1UMl%@#4q$AMc(FJlT1QeX8jv{h#)>&{~RGq1N2iiMFIRX?sk2 z-|2wUogK~{EkB$8eDsX=nVPf8XG_nK&J~=SIiGia@9y}|z3FhX{g&gc zj=lwb=lWgyFW&aLedUh-of`v-2Kw$UzI*>(+&$@i-u=-BsSjR1%z8NeX#HdC`Hh-Z(6xI-`hmHDqv!v)W&&nrf>M(RhcN6(D;jNN*% z^u_SYjF;2ng}*8Ow)d6MtDk;%`@Lsk$;9w$(d(H%O5UixIr`T2ZRcd@F&PHGqbbZHYRSe+jr;ddFErML7or1_f)yYUJ7|o z(c@?~kXO$mGf2%V0z#H$rPdIut{@Q<9;P>kfE7y8vrQm3bS85yq{xg_p@vZumBy+! zPF3sbS@qs$G#m~KFz6LjKnyjGV#@N2u6x&%W~oHUbI+`DzVQo&o^pQIDrvrIye_^uD&dxbtjn_m|Rz;H3dEGQw4{+;~V_AdmI@M~hZHUj+RgX?jzfhym zkl?}sYSJp9O;_b2P{fjZg3 z0NB`gNu5qd29ZZ=LW+@gBj2W019n< tS+1(-zs@LUtrm+4|2_Y^U=ISQ%wI7Lr literal 0 HcmV?d00001 diff --git a/pixmaps/hold_off.png b/pixmaps/hold_off.png index 61ab330c6de2599eacbd98cf8d46f8682dd3e174..3ba6746fb28361a89d09449796577ca2d3a2923e 100644 GIT binary patch literal 3897 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 Hu0mjfA$)ce literal 2280 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 delta 1134 zcmV-!1d;or5c3E;iBL{Q4GJ0x0000DNk~Le0000W0000W2m}BC0NHc0e*gdg0drDE zLIAGL9O(c600Lr5M??VshmXv^lVJoGe*gz`Nliru+5{R55GpM;rZE5j1NTWpK~zY` zt<_DaUPl=R@ZZci=e_sl%}4E(ge+V&(nM*6DriB3YN-ffH*PFc5X5$23x(E_x)2wx zq8m{P60lGNL1?J9QqYZY(YgrIh$#_kiQWcDKa!gJ-uu4ioSAWPPEKxJxY2pwf6ScW zng8>DKIR$z#}RHWPaobmP$~aKvLb8CmA4LVpDgbKc=j{oL2a9Tm&;z4@0N zlU&~Y<(a=fd3I|8IDPLuFCLu*6erzo054V+c5U0WZDGf*xBOn#x#qcxXFhxWGLh%1 z+nzo$E0SI>NU|)AR(rixr?aw>f9zPwHr#jn2cNvBrsi)SeehVG{5)qN$sms8nVUN- zxM(@;eBukwf5)|&#gQmYetyJ5)+Eu6f>tZ*1k`?EHO8Vic+1swYH~=z6u7q)D+IkB zomSRMin%SVJc%#>NLX4)l7n8eX}_qo6eOKqua}&2t1U%Rn@b8JS?4_qf2~&UVW%wZ zYK3v9m-ITFU%OvtrS&gwY84}cm5hR-_GN!?+@=i+ova^S__>FqvFM_la~@Vx_->3Z zdeu2wR%%yW^`3>!Gahk7qY}m8SR2C#Q1;YzrTCr?`;qG!Gwk!O-+IcrB&t*@QOMfL z1P~^vG@{S>sb`#X*gk)Bf5{W}38KWvprp8%SO3AFQcneRzz<#Wwrw+y36tf4Lo6YO z_5%&|4S+D+tc;+NJ>^SyUZ>HIT2T>{5_8P!mBC~gj|W8&(F``7by8>P>yCQV>xy8ev1ZMNc?dZ~g9}64hf0j1m;K5U zHuYA5m5({$j9WY~HL(yTOPb~S1B)tVsmd09pmZg%6}`H*Nw@P?%5M%OYPb;`GeA-y5R zWxG@M#9#>L3%;U}1idUxz!Wo;wXr`pp)}Xptx}W9P!@w)Bkn1xN|6no7Og{?QFA@) z%-?OPNtd@r0E$EAZWR=pvNAT<8w}?f&}+(@%j+v@x{JR#e}DYWW`uavm9ZxWS*O#F zO)bgZ@%Yd`%Nz0h+5OkAs5#x=`OVv2{QQCa3O?od6pxi{3ky5rylW;2rS@k}U%2$+ z-QDp5el@=Q$-BS%>AMeYWIv0em!*`P`;yCGJB1>LK0J`S_}6z{dFe0TKla*%wC8dC z_{OEpI1hUsDBJSBSGY`bF8$8ItMkRh;{P%J4LQRY6}j-~761SM07*qoM6N<$g5z>0 A^8f$< diff --git a/pixmaps/mic_active.png b/pixmaps/mic_active.png index 349daad4b1907b349f31bc59826e39156b6be9d1..ee6b9038c4df8945da8ea80203ef8a4e1101b4d2 100644 GIT binary patch literal 3523 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 delta 954 zcmV;r14aD98^H%aiBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD0drDE zLIAGL9O(c600v@9M??Vs0RI60puMM)lYR;pe*gz`Nliru+X)*K5f*|6X-)tD13^hd zK~y-)m6T0SBvllKpL^@xs-n6ZXQqeXj0+PI$b{G?F4RSb4JP;}fThI5z42q`niX3D z3pSGsA+Al>@C!uUNUNBz0F|b-n~$NZ?l~@?YG`IPC%H-0ty53VdCvy`TU%S)G5dxG ze}K8UIRM=H`Z`NXOKfg#emOrs|CRUNhzLbd5JDh?Kv5KkNcCRcg%CJCKE7UCTl;Kp zZ}0n7tAzpB-roLhVPWB0=bWl4s%lgf5vf2Tf-wdW;noKcQB^gaPKTA1l}`^24t_9= zMkDTYI^D6cv6_gO5>kS!wTzFC6GGtRf8+#J1*jqw5uzw!V`JmT)z#GxT&vZJMT9)h zUxP(a#Q69)s)DhGCr{p{)AO;PB5w ztg)3}p6AqRHS#=H0B4Nh^70Z@eXS6Ao|6|js)CAwf$NtqiQ{BM+kU^#a5%iFe{!kE zT~pQDJEbUc6ukv%_1#)a6h-&^!Iqj?Yca-Pt;IRV)YKG%^8q0ggd!(|oDd4KETi@Q zdl+Nz-s7CZdyj~`0+y9C#!yO7Z`2s{`{W@GgVCUtd?SyFgd=mbJF( zuQW{&Q6d+Sr5P^rIPXY&LS!8we*|i^8s2-ND60Asz?F~^2oOaPssZm}8uhnu&f}fO z`xxgPszMyc#Bp4;R|PCnE(I>N>2|y1c|k3!y>9~0S5+>7 zchmpp?=DkQ@ABfsHZwCboS&a_bacc=AAiWtKm9_jRx8I3=iF$@0N#6wf17s;W#*PBIt_c=+HE-R>E2 zobdGNJ0m_KH+sU&qH+8C``1@jS0qWIMNybC;_`<^qk)K$Bngd1gEUP?fB;F7aD06H zA3y}i)zy`0x7(jIn@zm;a8(84I3`IF&d$!r^PI`aNwO>>NfOdDB~4SZEMs?fm$kLE z&xga|ucjQgcDwz>;^N{r^?E%iXS7_bcbDtEXLE3H(A(MB`MTflKL=oWd6|0_z2T{X cnw_2He=yZjJV_B~nE(I)07*qoM6N<$f*%sU9smFU diff --git a/pixmaps/mic_muted.png b/pixmaps/mic_muted.png index e540d00312a56fba38d8126a55c91333fbf3a84e..60fd187611676958aacee6bbbb942533c7784242 100644 GIT binary patch literal 3716 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 i|1HktGJzyNw!Z<(Gv*&o7Db={0000I52Zy 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