work in progress: chat, new ui blabla
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ UI_FILES= about.ui \
|
|||
contact.ui \
|
||||
parameters.ui \
|
||||
sip_account.ui \
|
||||
chatroom.ui \
|
||||
call_logs.ui \
|
||||
log.ui \
|
||||
buddylookup.ui \
|
||||
|
|
|
|||
195
gtk/chat.c
|
|
@ -24,40 +24,36 @@ 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_create_chatroom(const char *with){
|
||||
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
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){
|
||||
GtkTextBuffer *b=gtk_text_view_get_buffer(v);
|
||||
GtkTextIter iter,begin;
|
||||
|
|
@ -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);*/
|
||||
}
|
||||
|
||||
|
|
|
|||
118
gtk/chatroom.ui
|
|
@ -1,118 +0,0 @@
|
|||
<?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>
|
||||
308
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
32
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);
|
||||
|
|
|
|||
2751
gtk/main.ui
|
|
@ -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 \
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 5.7 KiB |
BIN
pixmaps/call.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
pixmaps/chat.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 961 B After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 3.7 KiB |
|
|
@ -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
|
||||
|
|
|
|||