+ with_str=linphone_address_as_string_uri_only(with);
+ linphone_chat_room_mark_as_read(cr);
+ gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text),GTK_WRAP_WORD_CHAR);
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(text),FALSE);
+ gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text),FALSE);
+ gtk_notebook_append_page(notebook,chat_view,create_tab_chat_header(cr,with));
+ 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);
+ g_object_set_data(G_OBJECT(chat_view),"from_message",NULL);
+ g_object_set_data(G_OBJECT(chat_view),"list",list);
+ gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
+ "right","justification", GTK_JUSTIFY_RIGHT,NULL);
+ gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
+ "left","justification", GTK_JUSTIFY_LEFT,NULL);
+ gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
+ "bold","weight", PANGO_WEIGHT_BOLD,NULL);
+ gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
+ "italic","style", PANGO_STYLE_ITALIC,NULL);
+ gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
+ "small","size",9*PANGO_SCALE,NULL);
+ gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
+ "font_grey","foreground-gdk",&color,NULL);
+ gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
+ "margin","indent",10,NULL);
+ gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
+ "bg","paragraph-background-gdk",&colorb,NULL);
+ messages = linphone_chat_room_get_history(cr,NB_MSG_HIST);
+ display_history_message(chat_view,messages,with);
+ button = linphone_gtk_get_widget(chat_view,"send");
+ g_signal_connect_swapped(G_OBJECT(button),"clicked",(GCallback)linphone_gtk_send_text,NULL);
+ entry = linphone_gtk_get_widget(chat_view,"text_entry");
+ g_signal_connect_swapped(G_OBJECT(entry),"activate",(GCallback)linphone_gtk_send_text,NULL);
+ g_signal_connect(G_OBJECT(notebook),"switch_page",(GCallback)linphone_gtk_notebook_tab_select,NULL);
+ ms_free(with_str);
+ return chat_view;
+}
+
+LinphoneChatRoom * linphone_gtk_create_chatroom(const LinphoneAddress *with){
+ LinphoneChatRoom *cr=linphone_core_create_chat_room(linphone_gtk_get_core(),linphone_address_as_string(with));
+ if (!cr) return NULL;
+ return cr;
+}
+
+void linphone_gtk_load_chatroom(LinphoneChatRoom *cr,const LinphoneAddress *uri,GtkWidget *chat_view){
+ GtkWidget *main_window=linphone_gtk_get_main_window ();
+ LinphoneChatRoom *cr2=(LinphoneChatRoom *)g_object_get_data(G_OBJECT(chat_view),"cr");
+ const LinphoneAddress *from=linphone_chat_room_get_peer_address(cr2);
+ char *from_str=linphone_address_as_string_uri_only(from);
+ char *uri_str=linphone_address_as_string(uri);
+ char *uri_only=linphone_address_as_string_uri_only(uri);
+ MSList *messages=NULL;
+
+ if(g_strcmp0(from_str,uri_only)!=0){
+ GtkTextView *text_view=GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview"));
+ GtkTextIter start;
+ GtkTextIter end;
+ GtkTextBuffer *text_buffer;
+
+ linphone_chat_room_mark_as_read(cr);
+ text_buffer=gtk_text_view_get_buffer(text_view);
+ gtk_text_buffer_get_bounds(text_buffer, &start, &end);
+ gtk_text_buffer_delete (text_buffer, &start, &end);
+ udpate_tab_chat_header(chat_view,uri,cr);
+ g_object_set_data(G_OBJECT(chat_view),"cr",cr);
+ g_object_set_data(G_OBJECT(linphone_gtk_get_widget(main_window,"contact_list")),"chatview",(gpointer)chat_view);
+ messages=linphone_chat_room_get_history(cr,NB_MSG_HIST);
+ g_object_set_data(G_OBJECT(chat_view),"from_message",g_strdup(uri_str));
+ display_history_message(chat_view,messages,uri);
+ }
+ ms_free(from_str);
+ ms_free(uri_str);
+ ms_free(uri_only);
+}
+
+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);