From: Margaux Clerc Date: Thu, 18 Oct 2012 13:03:14 +0000 (+0200) Subject: work in progress: chat, new ui blabla X-Git-Url: http://sjero.net/git/?p=linphone;a=commitdiff_plain;h=389a9bcfd3a6912ddb5d6442d9c3d78638acbb45 work in progress: chat, new ui blabla --- 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 3e6ae3b7..fe9b13ef 100644 Binary files a/pixmaps/addcall-green.png and b/pixmaps/addcall-green.png differ diff --git a/pixmaps/call.png b/pixmaps/call.png new file mode 100644 index 00000000..0ae53360 Binary files /dev/null and b/pixmaps/call.png differ diff --git a/pixmaps/chat.png b/pixmaps/chat.png new file mode 100644 index 00000000..98f6fafc Binary files /dev/null and b/pixmaps/chat.png differ diff --git a/pixmaps/hold_off.png b/pixmaps/hold_off.png index 61ab330c..3ba6746f 100644 Binary files a/pixmaps/hold_off.png and b/pixmaps/hold_off.png differ diff --git a/pixmaps/hold_on.png b/pixmaps/hold_on.png index 94469b2d..776d5ddd 100644 Binary files a/pixmaps/hold_on.png and b/pixmaps/hold_on.png differ diff --git a/pixmaps/mic_active.png b/pixmaps/mic_active.png index 349daad4..ee6b9038 100644 Binary files a/pixmaps/mic_active.png and b/pixmaps/mic_active.png differ diff --git a/pixmaps/mic_muted.png b/pixmaps/mic_muted.png index e540d003..60fd1876 100644 Binary files a/pixmaps/mic_muted.png and b/pixmaps/mic_muted.png differ diff --git a/pixmaps/startcall-green.png b/pixmaps/startcall-green.png index 940802a0..56cf6e13 100644 Binary files a/pixmaps/startcall-green.png and b/pixmaps/startcall-green.png differ diff --git a/pixmaps/stopcall-red.png b/pixmaps/stopcall-red.png index 1004b8a0..de77592c 100644 Binary files a/pixmaps/stopcall-red.png and b/pixmaps/stopcall-red.png differ diff --git a/po/POTFILES.in b/po/POTFILES.in index ac50ac8a..683f1492 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -20,7 +20,6 @@ gtk/loginframe.c [type: gettext/glade]gtk/call_logs.ui [type: gettext/glade]gtk/main.ui [type: gettext/glade]gtk/sip_account.ui -[type: gettext/glade]gtk/chatroom.ui [type: gettext/glade]gtk/parameters.ui [type: gettext/glade]gtk/buddylookup.ui [type: gettext/glade]gtk/waiting.ui