Commit 389a9bcf authored by Margaux Clerc's avatar Margaux Clerc
Browse files

work in progress: chat, new ui blabla

parent 8761f481
......@@ -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
}
......@@ -4,7 +4,6 @@ UI_FILES= about.ui \
contact.ui \
parameters.ui \
sip_account.ui \
chatroom.ui \
call_logs.ui \
log.ui \
buddylookup.ui \
......
......@@ -24,38 +24,34 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <gtkosxapplication.h>
#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);*/
}
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 2.12 -->
<!-- interface-naming-policy toplevel-contextual -->
<object class="GtkWindow" id="chatroom">
<signal name="destroy" handler="linphone_gtk_chat_destroyed"/>
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTextView" id="textlog">
<property name="width_request">400</property>
<property name="height_request">200</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="wrap_mode">word</property>
</object>
</child>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<child>
<object class="GtkEntry" id="text_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has_focus">True</property>
<signal name="activate" handler="linphone_gtk_send_text"/>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="send">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="linphone_gtk_send_text"/>
<child>
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="stock">gtk-ok</property>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">Send</property>
</object>
<packing>
<property name="padding">7</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="button1">
<property name="label">gtk-close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="linphone_gtk_chat_close"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
......@@ -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