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); }
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; } }
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); }
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); }
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); }
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); }
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); }
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); } } } }
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); } } }
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); } }
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)); } }
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; }
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; }
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); }
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; }
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; }
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(); }
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); } }
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); }
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); } } }
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); }
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; }
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(); }
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); }
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)); }