Exemple #1
0
void linphone_gtk_remove_in_call_view(LinphoneCall *call) {
    GtkWidget *w=(GtkWidget*)linphone_call_get_user_pointer (call);
    GtkWidget *main_window=linphone_gtk_get_main_window ();
    GtkWidget *nb=linphone_gtk_get_widget(main_window,"viewswitch");
    gboolean in_conf=linphone_call_params_get_local_conference_mode(linphone_call_get_current_params(call));
    int idx;
    g_return_if_fail(w!=NULL);
    idx=gtk_notebook_page_num(GTK_NOTEBOOK(nb),w);
    if (in_conf) {
        linphone_gtk_unset_from_conference(call);
    }
    linphone_call_set_user_pointer (call,NULL);
    linphone_call_unref(call);
    call=linphone_core_get_current_call(linphone_gtk_get_core());
    if (call==NULL) {
        if (linphone_core_is_in_conference(linphone_gtk_get_core())) {
            /*show the conference*/
            gtk_notebook_set_current_page(GTK_NOTEBOOK(nb),gtk_notebook_page_num(GTK_NOTEBOOK(nb),
                                          g_object_get_data(G_OBJECT(main_window),"conf_frame")));
        } else gtk_notebook_prev_page(GTK_NOTEBOOK(nb));
    } else {
        /*show the active call*/
        gtk_notebook_set_current_page(GTK_NOTEBOOK(nb),gtk_notebook_page_num(GTK_NOTEBOOK(nb),                                                                     linphone_call_get_user_pointer(call)));
    }
    gtk_notebook_remove_page (GTK_NOTEBOOK(nb),idx);
    gtk_widget_destroy(w);
}
Exemple #2
0
const gchar *linphone_gtk_get_ui_config(const char *key, const char *def){
	LinphoneCore *lc=linphone_gtk_get_core();
	if (lc){
		LpConfig *cfg=linphone_core_get_config(linphone_gtk_get_core());
		return lp_config_get_string(cfg,"GtkUi",key,def);
	}else{
		g_error ("Cannot read config, no core created yet.");
		return NULL;
	}
}
Exemple #3
0
void linphone_gtk_hold_clicked(GtkButton *button){
	int active=GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button),"active"));
	LinphoneCall *call=linphone_gtk_get_currently_displayed_call ();
	if(!active)
	{
		linphone_core_pause_call(linphone_gtk_get_core(),call);
	}
	else
	{
		linphone_core_resume_call(linphone_gtk_get_core(),call);
	}
}
static void prepare(GtkAssistant *w){
	AudioStream *audio_stream = NULL;
	LinphoneCore *lc=linphone_gtk_get_core();
	int page = gtk_assistant_get_current_page(w);
	GtkWidget *mic_audiolevel = get_widget_from_assistant("mic_audiolevel");
	GtkWidget *label_audiolevel = get_widget_from_assistant("label_audiolevel");

	//Speaker page
	if(page == 1){
		MSSndCardManager *manager = ms_snd_card_manager_get();
		audio_stream = audio_stream_start_with_sndcards(&av_profile,9898,"127.0.0.1",19898,0,0,ms_snd_card_manager_get_card(manager,linphone_core_get_playback_device(lc)),ms_snd_card_manager_get_card(manager,linphone_core_get_capture_device(lc)),FALSE);
		if (mic_audiolevel != NULL && audio_stream != NULL){
			g_object_set_data(G_OBJECT(audio_assistant),"stream",audio_stream);
			linphone_gtk_init_audio_meter(mic_audiolevel,(get_volume_t)audio_stream_get_record_volume,audio_stream);
			linphone_gtk_init_audio_label(label_audiolevel,(get_volume_t)audio_stream_get_max_volume,audio_stream);
		}
	} else if(page == 2 || page == 0){
		if(mic_audiolevel != NULL && label_audiolevel != NULL){
			audio_stream = (AudioStream *)g_object_get_data(G_OBJECT(audio_assistant),"stream");
			if(audio_stream != NULL){
				linphone_gtk_uninit_audio_meter(mic_audiolevel);
				linphone_gtk_uninit_audio_label(label_audiolevel);
				audio_stream_stop(audio_stream);
				g_object_set_data(G_OBJECT(audio_assistant),"stream",NULL);
			}
		}
	}
}
static GtkWidget *create_speaker_page(){
	GtkWidget *vbox=gtk_table_new(3,2,FALSE);
	LinphoneCore *lc=linphone_gtk_get_core();

	GtkWidget *labelSpeakerChoice=gtk_label_new(_("Playback device"));
	GtkWidget *labelSpeakerLevel=gtk_label_new(_("Play three beeps"));
	GtkWidget *spk_button=gtk_button_new_from_stock(GTK_STOCK_MEDIA_PLAY);
	GtkWidget *playback_device=gtk_combo_box_new();
	GtkWidget *mixer_button=gtk_button_new_with_label("System sound preferences");
	GtkWidget *image;

	image=gtk_image_new_from_stock(GTK_STOCK_PREFERENCES,GTK_ICON_SIZE_MENU);
	gtk_button_set_image(GTK_BUTTON(mixer_button),image);

	gtk_table_attach_defaults(GTK_TABLE(vbox), labelSpeakerChoice, 0, 1, 0, 1);
	gtk_table_attach(GTK_TABLE(vbox), playback_device, 1, 2, 0, 1, GTK_SHRINK, GTK_SHRINK, 0,0);
	gtk_table_attach_defaults(GTK_TABLE(vbox), labelSpeakerLevel, 0, 1, 1, 2);
	gtk_table_attach(GTK_TABLE(vbox), spk_button, 1, 2, 1, 2, GTK_SHRINK, GTK_SHRINK, 0,0);
	gtk_table_attach(GTK_TABLE(vbox), mixer_button, 0, 2, 2, 3, GTK_SHRINK, GTK_SHRINK, 0,0);

	gtk_table_set_row_spacings(GTK_TABLE(vbox),10);

	const char **sound_devices=linphone_core_get_sound_devices(lc);
	linphone_gtk_fill_combo_box(playback_device, sound_devices,
					linphone_core_get_playback_device(lc),CAP_PLAYBACK);
	gtk_widget_show_all(vbox);

	set_widget_to_assistant("speaker_page",vbox);
	g_signal_connect(G_OBJECT(playback_device),"changed",(GCallback)playback_device_changed,playback_device);
	g_signal_connect(G_OBJECT(spk_button),"clicked",(GCallback)linphone_gtk_start_sound,vbox);
	g_signal_connect(G_OBJECT(mixer_button),"clicked",(GCallback)open_mixer,vbox);

	return vbox;
}
void linphone_gtk_start_record_sound(GtkWidget *w, gpointer data){
	LinphoneCore *lc = linphone_gtk_get_core();
	AudioStream *stream = NULL;
	MSSndCardManager *manager = ms_snd_card_manager_get();
	gboolean active=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));

	if(active){
		gchar *path = get_record_file();
		stream=audio_stream_new(8888, 8889, FALSE);
		if(stream != NULL){
			audio_stream_start_full(stream,&av_profile,"127.0.0.1",8888,"127.0.0.1",8889,0,0,NULL,
				path,NULL,ms_snd_card_manager_get_card(manager,linphone_core_get_capture_device(lc)),FALSE);
			g_object_set_data(G_OBJECT(audio_assistant),"record_stream",stream);
		}
		gint timeout_id = gtk_timeout_add(6000,(GtkFunction)linphone_gtk_stop_record,NULL);
		g_object_set_data(G_OBJECT(audio_assistant),"timeout_id",GINT_TO_POINTER(timeout_id));
		g_object_set_data(G_OBJECT(audio_assistant),"path",path);
	} else {
		stream = (AudioStream *)g_object_get_data(G_OBJECT(audio_assistant),"record_stream");
		gint timeout_id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(audio_assistant),"timeout_id"));
		gtk_timeout_remove(timeout_id);
		if(stream != NULL){
			audio_stream_stop(stream);
			g_object_set_data(G_OBJECT(audio_assistant),"record_stream",NULL);
		}
		update_record_button(FALSE);
		update_play_button(TRUE);
	}
}
const LinphoneAddress* linphone_gtk_get_used_identity(){
	LinphoneCore *lc=linphone_gtk_get_core();
	LinphoneProxyConfig *cfg;
	linphone_core_get_default_proxy(lc,&cfg);
	if (cfg) return linphone_address_new(linphone_proxy_config_get_identity(cfg));
	else  return linphone_core_get_primary_contact_parsed(lc);
}
Exemple #8
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);
}
Exemple #9
0
void linphone_gtk_log_scroll_to_end(GtkToggleButton *button) {
	if (gtk_toggle_button_get_active(button)){
		GtkTextView *v=GTK_TEXT_VIEW(linphone_gtk_get_widget(log_window,"textview"));
		stick_to_end(v);
	}
	lp_config_set_int(linphone_core_get_config(linphone_gtk_get_core()), "GtkUi", "logs_scroll_to_end", gtk_toggle_button_get_active(button) ? 1 : 0);
}
Exemple #10
0
void transfer_button_clicked(GtkWidget *button, gpointer call_ref) {
    GtkWidget *menu_item;
    GtkWidget *menu=gtk_menu_new();
    LinphoneCall *call=(LinphoneCall*)call_ref;
    LinphoneCore *lc=linphone_gtk_get_core();
    const MSList *elem=linphone_core_get_calls(lc);

    for(; elem!=NULL; elem=elem->next) {
        LinphoneCall *other_call=(LinphoneCall*)elem->data;
        GtkWidget *call_view=(GtkWidget*)linphone_call_get_user_pointer(other_call);
        if (other_call!=call) {
            int call_index=GPOINTER_TO_INT(g_object_get_data(G_OBJECT(call_view),"call_index"));
            char *remote_uri=linphone_call_get_remote_address_as_string (other_call);
            char *text=g_strdup_printf(_("Transfer to call #%i with %s"),call_index,remote_uri);
            menu_item=gtk_image_menu_item_new_with_label(text);
            ms_free(remote_uri);
            g_free(text);
            gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),create_pixmap("status-green.png"));
            gtk_widget_show(menu_item);
            gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
            g_signal_connect_swapped(G_OBJECT(menu_item),"activate",(GCallback)linphone_gtk_transfer_call,other_call);
        }
    }
    gtk_menu_popup(GTK_MENU(menu),NULL,NULL,NULL,NULL,0,gtk_get_current_event_time());
    gtk_widget_show(menu);
}
Exemple #11
0
void linphone_gtk_create_in_call_view(LinphoneCall *call){
	GtkWidget *call_view=linphone_gtk_create_widget("main","in_call_frame");
	GtkWidget *main_window=linphone_gtk_get_main_window ();
	GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch");
	static int call_index=1;
	int idx;

	if (ms_list_size(linphone_core_get_calls(linphone_gtk_get_core()))==1){
		/*this is the only call at this time */
		call_index=1;
	}
	g_object_set_data(G_OBJECT(call_view),"call",call);
	g_object_set_data(G_OBJECT(call_view),"call_index",GINT_TO_POINTER(call_index));

	linphone_call_set_user_pointer (call,call_view);
	linphone_call_ref(call);
	gtk_notebook_append_page (notebook,call_view,make_tab_header(call_index));
	gtk_widget_show(call_view);
	idx = gtk_notebook_page_num(notebook, call_view);
	gtk_notebook_set_current_page(notebook, idx);
	call_index++;
	linphone_gtk_enable_hold_button (call,FALSE,TRUE);
	linphone_gtk_enable_mute_button(
					GTK_BUTTON(linphone_gtk_get_widget(call_view,"incall_mute")),FALSE);
}
Exemple #12
0
void linphone_gtk_call_log_add_contact(GtkWidget *w){
	GtkWidget *main_window = gtk_widget_get_toplevel(w);
	GtkTreeSelection *select;
	GtkTreeIter iter;

	select=gtk_tree_view_get_selection(GTK_TREE_VIEW(w));
	if (select!=NULL){
		GtkTreeModel *model=NULL;
		if (gtk_tree_selection_get_selected (select,&model,&iter)){
			gpointer pcl;
			LinphoneAddress *la;
			LinphoneCallLog *cl;
			LinphoneFriend *lf;
			gtk_tree_model_get(model,&iter,2,&pcl,-1);
			cl = (LinphoneCallLog *)pcl;
			la = linphone_call_log_get_dir(cl)==LinphoneCallIncoming ? linphone_call_log_get_from(cl) : linphone_call_log_get_to(cl);
			if (la != NULL){
				char *uri=linphone_address_as_string(la);
				lf=linphone_core_create_friend_with_address(linphone_gtk_get_core(), uri);
				linphone_gtk_show_contact(lf, main_window);
				ms_free(uri);
			}
		}
	}
}
Exemple #13
0
static void on_controls_response(GtkWidget *dialog, int response_id, GtkWidget *video_window){

	gtk_widget_destroy(dialog);
	switch(response_id){
		case GTK_RESPONSE_YES:
			video_window_set_fullscreen(video_window,TRUE);
		break;
		case GTK_RESPONSE_NO:
			video_window_set_fullscreen(video_window,FALSE);
		break;
		case GTK_RESPONSE_REJECT:
		{
			LinphoneCall *call=(LinphoneCall*)g_object_get_data(G_OBJECT(video_window),"call");
			linphone_core_terminate_call(linphone_gtk_get_core(),call);
		}
		break;
		case GTK_RESPONSE_APPLY:
		{
			LinphoneCall *call=(LinphoneCall*)g_object_get_data(G_OBJECT(video_window),"call");
			char *path = (char *)linphone_gtk_get_snapshot_path();
			linphone_call_take_video_snapshot(call, path);
		}
	}

}
Exemple #14
0
void linphone_gtk_add_buddy_from_database(GtkWidget *button){
	GtkWidget *w=gtk_widget_get_toplevel(button);
	GtkTreeSelection *select;
	GtkTreeIter iter;
	GtkTreeModel *model;
	select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"search_results")));
	if (gtk_tree_selection_get_selected (select, &model, &iter))
	{
		char *uri;
		char *name;
		char *addr;
		LinphoneFriend *lf;
		int presence=linphone_gtk_get_ui_config_int("use_subscribe_notify",1);
		gtk_tree_model_get (model, &iter,LOOKUP_RESULT_SIP_URI , &uri,LOOKUP_RESULT_NAME, &name, -1);
		addr=g_strdup_printf("%s <%s>",name,uri);

		lf=linphone_friend_new_with_address(addr);
		linphone_friend_set_inc_subscribe_policy(lf,presence ? LinphoneSPAccept : LinphoneSPDeny);
		linphone_friend_send_subscribe(lf,presence);
		linphone_core_add_friend(linphone_gtk_get_core(),lf);
		linphone_gtk_show_friends();
		g_free(addr);
		g_free(uri);
		g_free(name);
	}
}
Exemple #15
0
void linphone_gtk_show_camera_preview_clicked(GtkButton *button){
	GtkWidget *mw=linphone_gtk_get_main_window();
	GtkWidget *video_preview=(GtkWidget *)g_object_get_data(G_OBJECT(mw),"video_preview");

	if (!video_preview){
		gchar *title;
		LinphoneCore *lc=linphone_gtk_get_core();
		GdkColor color;
		guint tid;

		video_preview=gtk_window_new(GTK_WINDOW_TOPLEVEL);
		title=g_strdup_printf("%s - Video preview",linphone_gtk_get_ui_config("title","Linphone"));
		gtk_window_set_title(GTK_WINDOW(video_preview),title);
		gdk_color_parse("black",&color);
		gtk_widget_modify_bg(video_preview,GTK_STATE_NORMAL,&color);
		g_free(title);
		g_object_set_data(G_OBJECT(mw),"video_preview",video_preview);
		g_signal_connect(video_preview,"destroy",(GCallback)on_video_preview_destroyed,mw);
		gtk_widget_show(video_preview);
		linphone_core_set_native_preview_window_id(lc,get_native_handle(gtk_widget_get_window(video_preview)));
		linphone_core_enable_video_preview(lc,TRUE);
		tid=g_timeout_add(100,(GSourceFunc)check_preview_size,video_preview);
		g_object_set_data(G_OBJECT(video_preview),"timeout-id",GINT_TO_POINTER(tid));
	}
}
Exemple #16
0
LinphoneCall *linphone_gtk_get_currently_displayed_call(gboolean *is_conf) {
    LinphoneCore *lc=linphone_gtk_get_core();
    GtkWidget *main_window=linphone_gtk_get_main_window ();
    GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch");
    const MSList *calls=linphone_core_get_calls(lc);
    if (is_conf) *is_conf=FALSE;
    if (!linphone_gtk_use_in_call_view() || ms_list_size(calls)==1) {
        if (calls) return (LinphoneCall*)calls->data;
    } else {
        int idx=gtk_notebook_get_current_page (notebook);
        GtkWidget *page=gtk_notebook_get_nth_page(notebook,idx);
        if (page!=NULL) {
            LinphoneCall *call=(LinphoneCall*)g_object_get_data(G_OBJECT(page),"call");
            if (call==NULL) {
                GtkWidget *conf_frame=(GtkWidget *)g_object_get_data(G_OBJECT(main_window),"conf_frame");
                if (conf_frame==page) {
                    if (is_conf)
                        *is_conf=TRUE;
                    return NULL;
                }
            }
            return call;
        }
    }
    return NULL;
}
Exemple #17
0
gboolean linphone_gtk_call_log_reset_missed_call(GtkWidget *w, GdkEvent *event,gpointer user_data){
	GtkWidget *mw=linphone_gtk_get_main_window();
	GtkNotebook *notebook=GTK_NOTEBOOK(linphone_gtk_get_widget(mw,"viewswitch"));
	gtk_notebook_set_current_page(notebook,0);
	linphone_core_reset_missed_calls_count(linphone_gtk_get_core());
	linphone_gtk_call_log_clear_missed_call();
	return TRUE;
}
Exemple #18
0
static void on_video_preview_destroyed(GtkWidget *video_preview, GtkWidget *mw){
	LinphoneCore *lc=linphone_gtk_get_core();
	guint timeout_id=GPOINTER_TO_INT(g_object_get_data(G_OBJECT(video_preview),"timeout-id"));
	g_object_set_data(G_OBJECT(mw),"video_preview",NULL);
	linphone_core_enable_video_preview(lc,FALSE);
	linphone_core_set_native_preview_window_id(lc,(void *)(unsigned long)-1);
	g_source_remove(timeout_id);
}
Exemple #19
0
gboolean linphone_gtk_friend_list_is_contact(const LinphoneAddress *addr){
	LinphoneFriend *lf;
	char *addr_str=linphone_address_as_string(addr);
	lf=linphone_core_get_friend_by_address(linphone_gtk_get_core(),addr_str);
	if(lf == NULL){
		return FALSE;
	} return TRUE;
}
Exemple #20
0
static gboolean check_preview_size(GtkWidget *video_preview){
	MSVideoSize vsize=linphone_core_get_current_preview_video_size(linphone_gtk_get_core());
	if (vsize.width && vsize.height){
		MSVideoSize cur;
		gtk_window_get_size(GTK_WINDOW(video_preview),&cur.width,&cur.height);
		if (cur.width!=vsize.width || cur.height!=vsize.height){
			gtk_window_resize(GTK_WINDOW(video_preview),vsize.width,vsize.height);
		}
	}
	return TRUE;
}
Exemple #21
0
void linphone_gtk_chat_add_contact(const LinphoneAddress *addr) {
    LinphoneFriend *lf=NULL;
    char *uri=linphone_address_as_string(addr);
    lf=linphone_friend_new_with_addr(uri);
    ms_free(uri);
    char *fixed_uri=NULL;
    gboolean show_presence=FALSE;

    linphone_friend_set_inc_subscribe_policy(lf,LinphoneSPDeny);
    linphone_friend_send_subscribe(lf,show_presence);

    linphone_core_interpret_friend_uri(linphone_gtk_get_core(),uri,&fixed_uri);
    if (fixed_uri==NULL) {
        linphone_gtk_display_something(GTK_MESSAGE_WARNING,_("Invalid sip contact !"));
        return ;
    }
    linphone_friend_set_addr(lf,addr);
    linphone_core_add_friend(linphone_gtk_get_core(),lf);
    ms_free(fixed_uri);
    linphone_gtk_show_friends();
}
Exemple #22
0
G_MODULE_EXPORT 
void linphone_gtk_internet_kind_changed(GtkWidget *combo){
	int netkind_id=gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
	LinphoneCore *lc=linphone_gtk_get_core();
	if (netkind_id==NetworkKindAdsl){
		linphone_core_set_upload_bandwidth(lc,256);
		linphone_core_set_download_bandwidth(lc,512);
	}else if (netkind_id==NetworkKindOpticalFiber){
		linphone_core_set_upload_bandwidth(lc,512);
		linphone_core_set_download_bandwidth(lc,512);
	}
}
Exemple #23
0
void linphone_gtk_call_log_response(GtkWidget *w, guint response_id){
	GtkWidget *mw=linphone_gtk_get_main_window();
	if (response_id==1){
		if (put_selection_to_uribar(linphone_gtk_get_widget(w,"logs_view")))
			linphone_gtk_start_call(linphone_gtk_get_widget(mw,"start_call"));
	}else if (response_id==2){
		linphone_core_clear_call_logs (linphone_gtk_get_core());
		linphone_gtk_call_log_update(w);
		return;
	}
	g_object_set_data(G_OBJECT(mw),"call_logs",NULL);
	gtk_widget_destroy(w);
}
Exemple #24
0
G_MODULE_EXPORT 
void linphone_gtk_logout_clicked(){
	LinphoneCore *lc=linphone_gtk_get_core();
	LinphoneProxyConfig *cfg=NULL;
	linphone_core_get_default_proxy(lc,&cfg);
	if (cfg){
		SipSetupContext *ss=linphone_proxy_config_get_sip_setup_context(cfg);
		if (ss){
			sip_setup_context_logout(ss);
			linphone_gtk_set_ui_config_int("automatic_login",FALSE);
			linphone_gtk_show_login_frame(cfg);
		}
	}
}
Exemple #25
0
void linphone_gtk_create_in_call_view(LinphoneCall *call){
	GtkWidget *call_view=linphone_gtk_create_widget("main","in_call_frame");
	GtkWidget *main_window=linphone_gtk_get_main_window ();
	GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch");
	static int call_index=1;
	int idx;
	GtkWidget *transfer;
	GtkWidget *conf;
	GtkWidget *button;
	GtkWidget *image;


	if (ms_list_size(linphone_core_get_calls(linphone_gtk_get_core()))==1){
		/*this is the only call at this time */
		call_index=1;
	}
	g_object_set_data(G_OBJECT(call_view),"call",call);
	g_object_set_data(G_OBJECT(call_view),"call_index",GINT_TO_POINTER(call_index));

	linphone_call_set_user_pointer (call,call_view);
	linphone_call_ref(call);
	gtk_notebook_append_page (notebook,call_view,make_tab_header(call_index));
	gtk_widget_show(call_view);
	idx = gtk_notebook_page_num(notebook, call_view);
	gtk_notebook_set_current_page(notebook, idx);
	call_index++;
	linphone_gtk_enable_hold_button (call,FALSE,TRUE);
	linphone_gtk_enable_video_button (call,FALSE,TRUE);
	linphone_gtk_enable_mute_button(
					GTK_BUTTON(linphone_gtk_get_widget(call_view,"incall_mute")),FALSE);

	transfer = linphone_gtk_get_widget(call_view,"transfer_button");
	gtk_button_set_image(GTK_BUTTON(transfer),gtk_image_new_from_stock
							 (GTK_STOCK_GO_FORWARD,GTK_ICON_SIZE_BUTTON));
	g_signal_connect(G_OBJECT(transfer),"clicked",(GCallback)transfer_button_clicked,call);
	gtk_widget_hide(transfer);

	conf = linphone_gtk_get_widget(call_view,"conference_button");
	gtk_button_set_image(GTK_BUTTON(conf),gtk_image_new_from_stock (GTK_STOCK_ADD,GTK_ICON_SIZE_BUTTON));
	g_signal_connect(G_OBJECT(conf),"clicked",(GCallback)conference_button_clicked,call);
	gtk_widget_hide(conf);

	button=linphone_gtk_get_widget(call_view,"terminate_call");
	image=create_pixmap (linphone_gtk_get_ui_config("stop_call_icon","stopcall-small.png"));
	gtk_button_set_label(GTK_BUTTON(button),_("Hang up"));
	gtk_button_set_image(GTK_BUTTON(button),image);
	gtk_widget_show(image);
	g_signal_connect_swapped(G_OBJECT(linphone_gtk_get_widget(call_view,"quality_indicator")),"button-press-event",(GCallback)linphone_gtk_show_call_stats,call);
}
Exemple #26
0
static gboolean execute_wakeup(char *uri){
	linphone_gtk_show_main_window();
	if (strlen(uri)>0)
	{
		//linphone_gtk_refer_received(linphone_gtk_get_core(),uri);
		char	szTemp[1024];
		char 	*pszAuPkgFile = NULL;
		char 	*pszSelectMedia = NULL;
		int		enabled_video = -1;
		
		strcpy(szTemp, uri);
		// uri 에서 uri 와 aupkg_file를 구분해야 한다.
		char *pszUri = strtok(szTemp, " \t\r\n");
		if(pszUri != NULL)
		{
			pszAuPkgFile = strtok(NULL, " \t\r\n");
			if(pszAuPkgFile != NULL)
			{
				strcpy(aupkg_file, pszAuPkgFile);
				pszSelectMedia = strtok(NULL, " \t\r\n");
				if(pszSelectMedia != NULL)
				{
					if(strcasecmp(pszSelectMedia, "audio") == 0)
					{
						enabled_video = FALSE;
					}
					else if(strcasecmp(pszSelectMedia, "video") == 0)
					{
						enabled_video = TRUE;
					}
				}
			}
			
			ms_message("execute_wakeup(%s), Uri=[%s], aupkg_file=[%s], enabled_video=[%d]", uri, pszUri, pszAuPkgFile, enabled_video);
			
			linphone_gtk_refer_received(linphone_gtk_get_core(), pszUri);
			if(enabled_video >= 0)
			{
				//LinphoneVideoPolicy policy = {0};
				//policy.automatically_initiate = policy.automatically_accept = (bool_t)enabled_video;
				//linphone_core_set_video_policy(linphone_gtk_get_core(), &policy);
				g_enable_video = (bool_t)enabled_video;
				linphone_gtk_set_menu_items(g_enable_video);
			}
		}
	}
	g_free(uri);
	return FALSE;
}
Exemple #27
0
static void linphone_gtk_chat_add_contact(const LinphoneAddress *addr){
	LinphoneFriend *lf=NULL;
	gboolean show_presence=FALSE;
	char *uri=linphone_address_as_string(addr);

	lf=linphone_friend_new_with_address(uri);
	ms_free(uri);

	linphone_friend_set_inc_subscribe_policy(lf,LinphoneSPWait);
	linphone_friend_send_subscribe(lf,show_presence);

	linphone_friend_set_address(lf,addr);
	linphone_core_add_friend(linphone_gtk_get_core(),lf);
	linphone_gtk_show_friends();
}
Exemple #28
0
void linphone_gtk_record_call_toggled(GtkWidget *button) {
    gboolean active=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
    gboolean is_conf=FALSE;
    const char *filepath;
    gchar *message;
    LinphoneCore *lc=linphone_gtk_get_core();
    LinphoneCall *call=linphone_gtk_get_currently_displayed_call(&is_conf);
    GtkWidget *callview;
    GtkWidget *label;
    if (call) {
        const LinphoneCallParams *params;
        callview=(GtkWidget*)linphone_call_get_user_pointer (call);
        params=linphone_call_get_current_params(call);
        filepath=linphone_call_params_get_record_file(params);
        label=linphone_gtk_get_widget(callview,"record_status");
    } else if (is_conf) {
        GtkWidget *mw=linphone_gtk_get_main_window();
        callview=(GtkWidget *)g_object_get_data(G_OBJECT(linphone_gtk_get_main_window()),"conf_frame");
        label=linphone_gtk_get_widget(callview,"conf_record_status");
        filepath=(const char*)g_object_get_data(G_OBJECT(mw),"conf_record_path");
        if (filepath==NULL) {
            filepath=linphone_gtk_get_record_path(NULL,TRUE);
            g_object_set_data_full(G_OBJECT(mw),"conf_record_path",(char*)filepath,g_free);
        }
    } else {
        g_warning("linphone_gtk_record_call_toggled(): bug.");
        return;
    }
    message=g_strdup_printf(_("<small><i>Recording into\n%s %s</i></small>"),filepath,active ? "" : _("(Paused)"));

    if (active) {
        if (call)
            linphone_call_start_recording(call);
        else
            linphone_core_start_conference_recording(lc,filepath);
    } else {
        if (call)
            linphone_call_stop_recording(call);
        else
            linphone_core_stop_conference_recording(lc);

    }
    gtk_label_set_markup(GTK_LABEL(label),message);
    g_free(message);
}
Exemple #29
0
void linphone_gtk_call_log_update(GtkWidget *w){
	GtkTreeView *v=GTK_TREE_VIEW(linphone_gtk_get_widget(w,"logs_view"));
	GtkListStore *store;
	const MSList *logs;

	store=(GtkListStore*)gtk_tree_view_get_model(v);
	if (store==NULL){
		store=gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING, G_TYPE_POINTER);
		gtk_tree_view_set_model(v,GTK_TREE_MODEL(store));
		g_object_unref(G_OBJECT(store));
	}
	gtk_list_store_clear (store);

	for (logs=linphone_core_get_call_logs(linphone_gtk_get_core());logs!=NULL;logs=logs->next){
		LinphoneCallLog *cl=(LinphoneCallLog*)logs->data;
		GtkTreeIter iter;
		LinphoneAddress *la=cl->dir==LinphoneCallIncoming ? cl->from : cl->to;
		char *addr= linphone_address_as_string_uri_only (la);
		const char *display;
		gchar *logtxt;
		gchar quality[20];
		
		display=linphone_address_get_display_name (la);
		if (display==NULL){
			display=linphone_address_get_username (la);
			if (display==NULL)
				display=linphone_address_get_domain (la);
		}
		if (cl->quality!=-1){
			snprintf(quality,sizeof(quality),"%.1f",cl->quality);
		}
		logtxt=g_markup_printf_escaped("<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
		                               "%s\t%i minutes %i seconds\t",display, addr, cl->quality!=-1 ? quality : _("n/a"),
		                               cl->start_date,
		                               cl->duration/60,cl->duration%60);
		gtk_list_store_append (store,&iter);
		gtk_list_store_set (store,&iter,
		               0, cl->dir==LinphoneCallOutgoing ? GTK_STOCK_GO_UP : GTK_STOCK_GO_DOWN,
		               1, logtxt,2,la,-1);
		ms_free(addr);
		g_free(logtxt);
	}
	
}
static void capture_device_changed(GtkWidget *capture_device){
	gchar *sel;
	GtkWidget *mic_audiolevel;
	GtkWidget *label_audiolevel;
	GtkWidget *assistant=gtk_widget_get_toplevel(capture_device);
	AudioStream *audio_stream;

	mic_audiolevel = get_widget_from_assistant("mic_audiolevel");
	label_audiolevel = get_widget_from_assistant("label_audiolevel");
	audio_stream = (AudioStream *) g_object_get_data(G_OBJECT(assistant),"stream");
	sel = gtk_combo_box_get_active_text(GTK_COMBO_BOX(capture_device));
	linphone_core_set_capture_device(linphone_gtk_get_core(),sel);
	linphone_gtk_uninit_audio_meter(mic_audiolevel);
	linphone_gtk_uninit_audio_label(label_audiolevel);
	audio_stream_stop(audio_stream);
	g_free(sel);
	/*now restart the audio stream*/
	prepare(GTK_ASSISTANT(assistant));
}