mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-22 13:48:09 +00:00
git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@1 3f6dc0c8-ddfe-455d-9043-3cd528dc4637
707 lines
19 KiB
C
707 lines
19 KiB
C
/*
|
|
linphone
|
|
Copyright (C) 2000 Simon MORLAT (simon.morlat@free.fr)
|
|
|
|
callbacks.c -- gtk callbacks, and osipua callbacks.
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
#include "linphone.h"
|
|
#include <gdk/gdkkeysyms.h>
|
|
|
|
#define get_core() (uiobj->core)
|
|
#define get_main_window() (&uiobj->main_window)
|
|
#define get_uiobj() (uiobj)
|
|
|
|
void
|
|
on_about1_activate (GtkMenuItem *menuitem,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *about2;
|
|
about2 = create_about2 ();
|
|
gtk_widget_show (about2);
|
|
}
|
|
|
|
|
|
gint
|
|
on_prop1_close (GtkDialog *gnomedialog,
|
|
gpointer user_data)
|
|
{
|
|
#ifdef NOTYET
|
|
LinphoneMainWindow *obj=get_main_window();
|
|
gnome_appbar_clear_stack( GNOME_APPBAR(obj->status_bar));
|
|
#endif
|
|
|
|
return(FALSE);
|
|
}
|
|
|
|
void
|
|
on_parametres1_activate (GtkMenuItem *menuitem,
|
|
gpointer user_data)
|
|
{
|
|
LinphoneGnomeUI *ui=get_uiobj();
|
|
linphone_property_box_init(&ui->propbox);
|
|
}
|
|
|
|
|
|
|
|
void
|
|
on_user_manual1_activate (GtkMenuItem *menuitem,
|
|
gpointer user_data)
|
|
{
|
|
#ifdef NOTYET
|
|
gnome_help_display("index.xml",NULL,NULL);
|
|
#endif
|
|
}
|
|
|
|
|
|
gboolean
|
|
on_play_vol_button_release_event (GtkWidget *widget,
|
|
GdkEventButton *event,
|
|
gpointer user_data)
|
|
{
|
|
int vol;
|
|
vol=(gtk_range_get_adjustment(GTK_RANGE(widget)))->value;
|
|
linphone_core_set_play_level(get_core(),vol);
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
gboolean
|
|
on_rec_vol_button_release_event (GtkWidget *widget,
|
|
GdkEventButton *event,
|
|
gpointer user_data)
|
|
{
|
|
int vol;
|
|
vol=(gtk_range_get_adjustment(GTK_RANGE(widget)))->value;
|
|
linphone_core_set_rec_level(get_core(),vol);
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
gboolean
|
|
on_ring_vol_button_release_event (GtkWidget *widget,
|
|
GdkEventButton *event,
|
|
gpointer user_data)
|
|
{
|
|
int vol;
|
|
vol=(gtk_range_get_adjustment(GTK_RANGE(widget)))->value;
|
|
linphone_core_set_ring_level(get_core(),vol);
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
void
|
|
on_prop1_help (GtkDialog *gnomepropertybox,
|
|
gint arg1,
|
|
gpointer user_data)
|
|
{
|
|
#ifdef NOTYET
|
|
gnome_help_display("index.html",NULL,NULL);
|
|
#endif
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
on_fermer1_activate (GtkMenuItem *menuitem,
|
|
gpointer user_data)
|
|
{
|
|
linphone_gnome_ui_hide(get_uiobj());
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
|
/*this is when the panel size changes*/
|
|
void applet_change_pixel_size(GtkWidget *w, int size, gpointer data)
|
|
{
|
|
GtkWidget *pixmap,*button;
|
|
|
|
pixmap=gtk_object_get_data(GTK_OBJECT(applet),"applet_pixmap");
|
|
button=(GtkWidget*)gtk_object_get_data(GTK_OBJECT(applet),"applet_button");
|
|
if (button==NULL)
|
|
{
|
|
printf("Cannot find applet button\n");
|
|
return;
|
|
}
|
|
if (pixmap!=NULL) gtk_widget_destroy(pixmap);
|
|
pixmap = gnome_pixmap_new_from_xpm_d_at_size(linphone2_xpm,
|
|
size-4, size-4);
|
|
gtk_object_set_data(GTK_OBJECT(applet),"applet_pixmap",pixmap);
|
|
gtk_widget_show(pixmap);
|
|
gtk_container_add(GTK_CONTAINER(button), pixmap);
|
|
}
|
|
#endif
|
|
|
|
void
|
|
on_adresse_activate (GtkMenuItem *menuitem,
|
|
gpointer user_data)
|
|
{
|
|
show_address_book();
|
|
}
|
|
|
|
void on_address_book_show(GtkWidget *widget,gpointer user_data)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
on_showmore_toggled (GtkToggleButton *togglebutton,
|
|
gpointer user_data)
|
|
{
|
|
gint state;
|
|
GtkWidget *optioncontrols=get_main_window()->optioncontrols;
|
|
state=gtk_toggle_button_get_active(togglebutton);
|
|
if (state) gtk_widget_show(optioncontrols);
|
|
else {
|
|
gtk_widget_hide(optioncontrols);
|
|
}
|
|
}
|
|
|
|
|
|
void
|
|
on_useRPC_toggled (GtkToggleButton *togglebutton,
|
|
gpointer user_data)
|
|
{
|
|
#ifdef VINCENT_MAURY_RSVP
|
|
LinphoneCore *lc=get_core();
|
|
gboolean state;
|
|
state=gtk_toggle_button_get_active(togglebutton);
|
|
/* change RPC settings according to state */
|
|
if (state)
|
|
{
|
|
if (linphone_core_set_rpc_mode(lc,1)!=0) /* set rpc on */
|
|
{
|
|
printf("RPC error. unable to set rpc on !\n");
|
|
printf("Check to see if RPC server is running\n");
|
|
gtk_toggle_button_set_active(togglebutton,FALSE);
|
|
/*linphone_core_set_rpc_mode(lc,0);*/
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (linphone_core_set_rpc_mode(lc,0)!=0) /* set rpc off */
|
|
printf("RPC error. That's impossible !!\n");
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void
|
|
on_useRSVP_toggled (GtkToggleButton *togglebutton,
|
|
gpointer user_data)
|
|
{
|
|
#ifdef VINCENT_MAURY_RSVP
|
|
LinphoneCore *lc=get_core();
|
|
LinphoneGnomeUI *ui=get_uiobj();
|
|
gboolean state;
|
|
state=gtk_toggle_button_get_active(togglebutton);
|
|
/* change the QoS settings function of the state */
|
|
if (state)
|
|
{
|
|
linphone_core_set_rsvp_mode(lc,1); /* set RSVP on */
|
|
gtk_widget_show(lookup_widget(ui->propbox.prop,"useRPC")); /* show RPC checkbox */
|
|
}
|
|
else
|
|
{
|
|
linphone_core_set_rsvp_mode(lc,0); /* set RSVP off */
|
|
/* uncheck RPC if necessary and hide RPC checkbox */
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
|
|
lookup_widget(ui->propbox.prop,"useRPC")),FALSE);
|
|
gtk_widget_hide(lookup_widget(ui->propbox.prop,"useRPC"));
|
|
}
|
|
#endif
|
|
}
|
|
|
|
#ifdef VINCENT_MAURY_RSVP
|
|
/* callback called when you click the yes/no dialog box
|
|
* send yes or no to the core_change_qos which knows the question
|
|
* and will be able to ajust qos */
|
|
void dialog_click (GtkDialog *dialog,gint arg1,gpointer user_data)
|
|
{
|
|
LinphoneCore *lc=get_core();
|
|
if (lc->call==NULL)
|
|
return;
|
|
|
|
if (arg1==GTK_RESPONSE_YES)
|
|
{
|
|
printf("YES\n");
|
|
linphone_core_change_qos(lc, 1); /* 1 = yes */
|
|
}
|
|
else
|
|
{
|
|
printf("NO\n");
|
|
linphone_core_change_qos(lc, 0); /* 0 = no */
|
|
}
|
|
gtk_widget_destroy((GtkWidget*)dialog);
|
|
}
|
|
#endif
|
|
|
|
|
|
void
|
|
on_alt_href_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
#ifdef NOTYET
|
|
gchar *url;
|
|
GtkWidget *label;
|
|
osip_from_t * from;
|
|
LinphoneGnomeUI *ui=get_uiobj();
|
|
label=GTK_BIN(button)->child;
|
|
gtk_label_get(GTK_LABEL(label),&url);
|
|
osip_from_init(&from);
|
|
if ( osip_from_parse(from,url) <0){
|
|
/* do something here */
|
|
}else
|
|
{ /* it was a sip url, so display it in the entry*/
|
|
gtk_entry_set_text(GTK_ENTRY(gnome_entry_gtk_entry(GNOME_ENTRY(ui->main_window.addressentry))),url);
|
|
}
|
|
osip_from_free(from);
|
|
#endif
|
|
}
|
|
|
|
void
|
|
on_alt_href_realize (GtkWidget *widget,
|
|
gpointer user_data)
|
|
{
|
|
GdkCursor *cursor = gdk_cursor_new(GDK_HAND2);
|
|
gdk_window_set_cursor(widget->window, cursor);
|
|
gdk_cursor_destroy(cursor);
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_3_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"3");
|
|
}
|
|
|
|
|
|
void
|
|
on_dmtf_2_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"2");
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_1_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"1");
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_4_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"4");
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_5_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"5");
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_6_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"6");
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_7_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"7");
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_8_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"8");
|
|
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_9_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"9");
|
|
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_star_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"*");
|
|
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_0_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"0");
|
|
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_pound_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
GtkWidget *dtmf_entry=get_main_window()->dtmfentry;
|
|
gtk_entry_append_text(GTK_ENTRY(dtmf_entry),"#");
|
|
|
|
}
|
|
|
|
|
|
void
|
|
on_dtmf_entry_changed (GtkEditable *editable,
|
|
gpointer user_data)
|
|
{
|
|
gchar *dtmfs;
|
|
gint len;
|
|
/* get the last entry in the text box and plays it */
|
|
dtmfs=gtk_editable_get_chars(editable,0,-1);
|
|
g_return_if_fail(dtmfs!=NULL);
|
|
len=strlen(dtmfs);
|
|
if (len>0){
|
|
g_message("Sending dtmf %c",dtmfs[len-1]);
|
|
linphone_core_send_dtmf(get_uiobj()->core,dtmfs[len-1]);
|
|
}
|
|
g_free(dtmfs);
|
|
}
|
|
|
|
|
|
void
|
|
on_exit1_activate (GtkMenuItem *menuitem,
|
|
gpointer user_data)
|
|
{
|
|
#ifdef LINPHONE_APPLET
|
|
#else
|
|
gtk_widget_destroy(get_uiobj()->main_window.window);
|
|
#endif
|
|
}
|
|
|
|
|
|
void on_app1_destroy(GtkWidget *app1, gpointer user_data)
|
|
{
|
|
#ifdef LINPHONE_APPLET
|
|
#else
|
|
gtk_main_quit();
|
|
#endif
|
|
}
|
|
|
|
void
|
|
on_display_ab_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
show_address_book();
|
|
}
|
|
|
|
|
|
void
|
|
on_inc_subscr_dialog_response (GtkDialog *dialog,
|
|
gint response_id,
|
|
gpointer user_data)
|
|
{
|
|
LinphoneFriend *lf=(LinphoneFriend*)g_object_get_data(G_OBJECT(dialog),"friend_ref");
|
|
switch(response_id){
|
|
case GTK_RESPONSE_ACCEPT:
|
|
subscriber_edit(lf);
|
|
break;
|
|
case GTK_RESPONSE_REJECT:
|
|
linphone_core_reject_subscriber(get_core(),lf);
|
|
break;
|
|
}
|
|
gtk_widget_destroy(GTK_WIDGET(dialog));
|
|
}
|
|
|
|
void authentication_dialog_ok(GtkWidget *w)
|
|
{
|
|
gchar *realm,*username,*userid,*passwd;
|
|
LinphoneAuthInfo *info;
|
|
realm=gtk_editable_get_chars(GTK_EDITABLE(lookup_widget(w,"realm")),0,-1);
|
|
username=gtk_editable_get_chars(GTK_EDITABLE(lookup_widget(w,"username")),0,-1);
|
|
userid=gtk_editable_get_chars(GTK_EDITABLE(lookup_widget(w,"userid")),0,-1);
|
|
passwd=gtk_editable_get_chars(GTK_EDITABLE(lookup_widget(w,"passwd")),0,-1);
|
|
info=linphone_auth_info_new(username,userid,passwd,NULL,realm);
|
|
linphone_core_add_auth_info(get_core(),info);
|
|
g_free(username);
|
|
g_free(userid);
|
|
g_free(passwd);
|
|
g_free(realm);
|
|
}
|
|
|
|
void
|
|
on_authentication_dialog_response (GtkDialog *dialog,
|
|
gint response_id,
|
|
gpointer user_data)
|
|
{
|
|
switch(response_id){
|
|
case GTK_RESPONSE_OK:
|
|
authentication_dialog_ok(GTK_WIDGET(dialog));
|
|
gtk_widget_destroy(GTK_WIDGET(dialog));
|
|
break;
|
|
case GTK_RESPONSE_CANCEL:
|
|
gtk_widget_destroy(GTK_WIDGET(dialog));
|
|
}
|
|
}
|
|
|
|
void
|
|
on_clear_auth_info_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
linphone_core_clear_all_auth_info(get_core());
|
|
}
|
|
|
|
|
|
void
|
|
on_call_history_activate (GtkMenuItem *menuitem,
|
|
gpointer user_data)
|
|
{
|
|
linphone_gnome_show_call_logs_window(get_uiobj());
|
|
}
|
|
|
|
|
|
void
|
|
on_call_logs_response (GtkDialog *dialog,
|
|
gint response_id,
|
|
gpointer user_data)
|
|
{
|
|
gtk_widget_destroy(GTK_WIDGET(dialog));
|
|
}
|
|
|
|
|
|
void
|
|
on_call_logs_destroy (GtkObject *object,
|
|
gpointer user_data)
|
|
{
|
|
get_uiobj()->logs=NULL;
|
|
}
|
|
|
|
|
|
static void completion_add_text(GtkEntry *entry, const char *text){
|
|
GtkTreeIter iter;
|
|
GtkTreeModel *model=gtk_entry_completion_get_model(gtk_entry_get_completion(entry));
|
|
|
|
if (gtk_tree_model_get_iter_first(model,&iter)){
|
|
do {
|
|
gchar *uri=NULL;
|
|
gtk_tree_model_get(model,&iter,0,&uri,-1);
|
|
if (uri!=NULL){
|
|
if (strcmp(uri,text)==0) {
|
|
/*remove text */
|
|
gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
|
|
g_free(uri);
|
|
break;
|
|
}
|
|
g_free(uri);
|
|
}
|
|
}while (gtk_tree_model_iter_next(model,&iter));
|
|
}
|
|
/* and prepend it on top of the list */
|
|
gtk_list_store_prepend(GTK_LIST_STORE(model),&iter);
|
|
gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,text,-1);
|
|
}
|
|
|
|
|
|
void
|
|
on_callbutton_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
LinphoneGnomeUI *ui=get_uiobj();
|
|
LinphoneCore *lc=get_core();
|
|
GtkEntry *entry=GTK_ENTRY(ui->main_window.addressentry);
|
|
|
|
if (lc->call==NULL){
|
|
const gchar *sipurl=NULL;
|
|
int err;
|
|
/* we have no dialog in progress */
|
|
/* get the url to call */
|
|
sipurl=gtk_entry_get_text(entry);
|
|
err=linphone_core_invite(lc,sipurl);
|
|
if (err==0) completion_add_text(entry,sipurl);
|
|
}else {
|
|
linphone_core_accept_call(lc,NULL);
|
|
gdk_window_set_keep_above (ui->main_window.window->window, 0);
|
|
}
|
|
}
|
|
|
|
void
|
|
on_hangup_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
LinphoneGnomeUI *ui=get_uiobj();
|
|
LinphoneCore *lc=get_core();
|
|
gdk_window_set_keep_above (ui->main_window.window->window, 0);
|
|
if (lc->call!=NULL){
|
|
gtk_window_set_title(GTK_WINDOW(ui->main_window.window),"linphone");
|
|
linphone_core_terminate_call(lc,NULL);
|
|
}
|
|
}
|
|
|
|
GtkWidget *chatroom_new(const gchar *url, LinphoneChatRoom *cr){
|
|
GtkWidget *gcr=NULL;
|
|
if (cr==NULL)
|
|
cr=linphone_core_create_chat_room(get_core(),url);
|
|
if (cr!=NULL){
|
|
gchar *tmp;
|
|
gcr=create_chatroom();
|
|
g_object_set_data(G_OBJECT(gcr),"chatroom",(gpointer)cr);
|
|
linphone_chat_room_set_user_data(cr,(gpointer)gcr);
|
|
tmp=g_strdup_printf(_("Chat with %s"),url);
|
|
gtk_window_set_title(GTK_WINDOW(gcr),tmp);
|
|
g_free(tmp);
|
|
}
|
|
return gcr;
|
|
}
|
|
|
|
void chatroom_append(GtkWidget *gcr, const gchar *from, const gchar *message){
|
|
GtkTextBuffer *tb;
|
|
gchar *str;
|
|
GtkTextIter enditer;
|
|
GtkTextView *tv=GTK_TEXT_VIEW(lookup_widget(gcr,"chattext"));
|
|
tb=gtk_text_view_get_buffer(tv);
|
|
g_return_if_fail(tb!=NULL);
|
|
gtk_text_buffer_get_end_iter(tb,&enditer);
|
|
str=g_strdup_printf("[%s]\t:%s\n",from,message);
|
|
gtk_text_buffer_insert(tb,&enditer,str,strlen(str));
|
|
g_free(str);
|
|
}
|
|
|
|
void chatroom_close(GtkWidget *gcr){
|
|
LinphoneChatRoom *cr;
|
|
cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(gcr),"chatroom");
|
|
linphone_chat_room_destroy(cr);
|
|
}
|
|
|
|
|
|
void
|
|
on_chat_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
gchar *sipurl;
|
|
|
|
sipurl=gtk_editable_get_chars(GTK_EDITABLE(get_main_window()->addressentry),0,-1);
|
|
GtkWidget *gcr=chatroom_new(sipurl,NULL);
|
|
if (gcr!=NULL) gtk_widget_show(gcr);
|
|
g_free(sipurl);
|
|
}
|
|
|
|
|
|
void
|
|
on_chatbox_clicked (GtkButton *button,
|
|
gpointer user_data)
|
|
{
|
|
gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(button)));
|
|
}
|
|
|
|
|
|
|
|
void
|
|
on_chatentry_activate (GtkEntry *entry,
|
|
gpointer user_data)
|
|
{
|
|
LinphoneChatRoom *cr;
|
|
gchar *text;
|
|
text=gtk_editable_get_chars(GTK_EDITABLE(entry),0,-1);
|
|
if (strlen(text)>0){
|
|
GtkWidget *gcr=gtk_widget_get_toplevel(GTK_WIDGET(entry));
|
|
cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(gcr),"chatroom");
|
|
linphone_chat_room_send_message(cr,text);
|
|
chatroom_append(gcr,linphone_core_get_primary_contact(get_core()),text);
|
|
gtk_editable_delete_text(GTK_EDITABLE(entry),0,-1);
|
|
}
|
|
}
|
|
|
|
void
|
|
on_chatroom_destroy (GtkObject *object,
|
|
gpointer user_data)
|
|
{
|
|
chatroom_close(GTK_WIDGET(object));
|
|
}
|
|
|
|
|
|
|
|
void
|
|
on_addressentry_activate (GtkEntry *entry,
|
|
gpointer user_data)
|
|
{
|
|
on_callbutton_clicked(NULL,NULL);
|
|
}
|
|
|
|
void
|
|
on_addressentry_destroy (GtkObject *object,
|
|
gpointer user_data)
|
|
{
|
|
linphone_gnome_save_uri_history(get_uiobj());
|
|
}
|
|
|
|
void
|
|
on_video_enabled_toggled (GtkToggleButton *togglebutton,
|
|
gpointer user_data)
|
|
{
|
|
bool_t enabled=gtk_toggle_button_get_active(togglebutton);
|
|
linphone_core_enable_video(get_core(),enabled,enabled);
|
|
}
|
|
|
|
|
|
void
|
|
on_echocancelation_toggled (GtkToggleButton *togglebutton,
|
|
gpointer user_data)
|
|
{
|
|
linphone_core_enable_echo_cancelation(get_core(),
|
|
gtk_toggle_button_get_active(togglebutton));
|
|
}
|
|
|
|
|
|
|
|
|