Merge branch 'master' into dev_bb10

Conflicts:
	mediastreamer2
	oRTP
This commit is contained in:
Sylvain Berfini 2015-07-31 16:14:15 +02:00
commit f64f845c5d
87 changed files with 3824 additions and 2937 deletions

View file

@ -40,7 +40,7 @@ Install `GTK`. It is recommended to use the `quartz` backend for better integrat
##### Linphone library (liblinphone)
brew install intltool libtool wget pkg-config automake libantlr3.4c \
antlr gettext speex ffmpeg readline libvpx opus
homebrew/versions/antlr3 gettext speex ffmpeg readline libvpx opus
ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
brew link --force gettext
#readline is required from linphonec.c otherwise compilation will fail

View file

@ -175,10 +175,10 @@
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<PreBuildEvent>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">version.bat</Command>
<Command>version.bat</Command>
</PreBuildEvent>
<PreBuildEvent>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Batch script to get the git version</Message>
<Message>Batch script to get the git version</Message>
</PreBuildEvent>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

View file

@ -632,7 +632,7 @@ AC_ARG_ENABLE(zrtp,
dnl this options are just for passing to mediastreamer2 subproject
AC_ARG_ENABLE(dtls,
[AS_HELP_STRING([--enable-dtls], [Turn on dtls support - requires polarssl > 1.4])],
[AS_HELP_STRING([--enable-dtls], [Turn on srtp-dtls support - requires polarssl > 1.4])],
[case "${enableval}" in
yes) dtls=true ;;
no) dtls=false ;;

View file

@ -2376,12 +2376,12 @@ static int lpc_cmd_rtp_no_xmit_on_audio_mute(LinphoneCore *lc, char *args)
#ifdef VIDEO_ENABLED
static int _lpc_cmd_video_window(LinphoneCore *lc, char *args, bool_t is_preview){
char subcommand[64];
int a,b;
long a,b;
int err;
VideoParams *params=is_preview ? &lpc_preview_params : &lpc_video_params;
if (!args) return 0;
err=sscanf(args,"%63s %i %i",subcommand,&a,&b);
err=sscanf(args,"%63s %ld %ld",subcommand,&a,&b);
if (err>=1){
if (strcmp(subcommand,"pos")==0){
if (err<3) return 0;
@ -2403,15 +2403,15 @@ static int _lpc_cmd_video_window(LinphoneCore *lc, char *args, bool_t is_preview
if (is_preview) linphone_core_enable_video_preview (lc,FALSE);
}else if (strcmp(subcommand,"id")==0){
if (err == 1){
linphonec_out("vwindow id: 0x%x\n",is_preview ? linphone_core_get_native_preview_window_id (lc) :
linphonec_out("vwindow id: 0x%p\n",is_preview ? linphone_core_get_native_preview_window_id (lc) :
linphone_core_get_native_video_window_id (lc));
return 1;
} else if (err != 2) return 0;
params->wid=a;
params->wid=(void *)a;
if (is_preview)
linphone_core_set_native_preview_window_id (lc,a);
linphone_core_set_native_preview_window_id(lc, (void *)a);
else
linphone_core_set_native_video_window_id(lc,a);
linphone_core_set_native_video_window_id(lc, (void *)a);
}else if (is_preview==TRUE){
if (strcmp(subcommand,"integrated")==0){
linphone_core_use_preview_window (lc,FALSE);

View file

@ -65,15 +65,6 @@
#endif /*_WIN32_WCE*/
#ifdef ENABLE_NLS
#include <libintl.h>
#ifndef _
#define _(String) gettext(String)
#endif
#else
#define _(something) (something)
#endif
#ifndef PACKAGE_DIR
#define PACKAGE_DIR ""
#endif
@ -164,7 +155,7 @@ static char zrtpsecrets[PATH_MAX];
static char usr_certificates_path[PATH_MAX];
static const char *factory_configfile_name=NULL;
static char *sip_addr_to_call = NULL; /* for autocall */
static int window_id = 0; /* 0=standalone window, or window id for embedding video */
static void *window_id = NULL; /* NULL=standalone window, or window id for embedding video */
#if !defined(_WIN32_WCE)
static ortp_pipe_t client_sock=ORTP_PIPE_INVALID;
#endif /*_WIN32_WCE*/
@ -714,16 +705,6 @@ linphonec_init(int argc, char **argv)
default:
break;
}
#ifdef ENABLE_NLS
if (NULL == bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR))
perror ("bindtextdomain failed");
#ifndef __ARM__
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
#endif
textdomain (GETTEXT_PACKAGE);
#else
printf ("NLS disabled.\n");
#endif
linphonec_parse_cmdline(argc, argv);
@ -759,9 +740,9 @@ linphonec_init(int argc, char **argv)
linphone_core_set_user_certificates_path(linphonec,usr_certificates_path);
linphone_core_enable_video_capture(linphonec, vcap_enabled);
linphone_core_enable_video_display(linphonec, display_enabled);
if (display_enabled && window_id != 0)
if (display_enabled && (window_id != NULL))
{
printf("Setting window_id: 0x%x\n", window_id);
printf("Setting window_id: 0x%p\n", window_id);
linphone_core_set_native_video_window_id(linphonec,window_id);
}
@ -985,28 +966,29 @@ static void x11_apply_video_params(VideoParams *params, Window window){
static void lpc_apply_video_params(){
static unsigned long old_wid=0,old_pwid=0;
unsigned long wid=linphone_core_get_native_video_window_id (linphonec);
unsigned long pwid=linphone_core_get_native_preview_window_id (linphonec);
static void *old_wid=NULL;
static void *old_pwid=NULL;
void *wid=linphone_core_get_native_video_window_id(linphonec);
void *pwid=linphone_core_get_native_preview_window_id(linphonec);
if (wid!=0 && (lpc_video_params.refresh || old_wid!=wid)){
if (wid!=NULL && (lpc_video_params.refresh || old_wid!=wid)){
lpc_video_params.refresh=FALSE;
#ifdef HAVE_X11_XLIB_H
if (lpc_video_params.wid==0){ // do not manage window if embedded
x11_apply_video_params(&lpc_video_params,wid);
x11_apply_video_params(&lpc_video_params,(Window)wid);
} else {
linphone_core_show_video(linphonec, lpc_video_params.show);
}
#endif
}
old_wid=wid;
if (pwid!=0 && (lpc_preview_params.refresh || old_pwid!=pwid)){
if (pwid!=NULL && (lpc_preview_params.refresh || old_pwid!=pwid)){
lpc_preview_params.refresh=FALSE;
#ifdef HAVE_X11_XLIB_H
/*printf("wid=%lu pwid=%lu\n",wid,pwid);*/
if (lpc_preview_params.wid==0){ // do not manage window if embedded
/*printf("wid=%p pwid=%p\n",wid,pwid);*/
if (lpc_preview_params.wid==NULL){ // do not manage window if embedded
printf("Refreshing\n");
x11_apply_video_params(&lpc_preview_params,pwid);
x11_apply_video_params(&lpc_preview_params,(Window)pwid);
}
#endif
}
@ -1303,7 +1285,7 @@ linphonec_parse_cmdline(int argc, char **argv)
arg_num++;
if (arg_num < argc) {
char *tmp;
window_id = strtol( argv[arg_num], &tmp, 0 );
window_id = (void *)strtol( argv[arg_num], &tmp, 0 );
lpc_video_params.wid = window_id;
}
}

View file

@ -99,7 +99,7 @@ typedef struct {
typedef struct {
int x,y,w,h;
unsigned long wid;
void *wid;
bool_t show;
bool_t refresh;
} VideoParams;

View file

@ -32,7 +32,6 @@ endif()
set(SOURCE_FILES
account_creator.c
account_creator.h
address.c
authentication.c
bellesip_sal/sal_address_impl.c
@ -61,18 +60,13 @@ set(SOURCE_FILES
enum.c
enum.h
event.c
event.h
friend.c
info.c
ldap/ldapprovider.c
lime.c
linphonecall.c
linphonecore.c
linphonecore.h
linphonecore_utils.h
linphonefriend.h
linphone_tunnel_config.c
linphone_tunnel.h
localplayer.c
lpconfig.c
lpconfig.h
@ -90,14 +84,31 @@ set(SOURCE_FILES
sal.c
siplogin.c
sipsetup.c
sipsetup.h
xml2lpc.c
xml2lpc.h
xml.c
xmlrpc.c
xmlrpc.h
vtables.c
)
set(HEADER_FILES
account_creator.h
buffer.h
call_log.h
call_params.h
content.h
event.h
linphonecore.h
linphonecore_utils.h
linphonefriend.h
linphonepresence.h
linphone_proxy_config.h
linphone_tunnel.h
lpc2xml.h
lpconfig.h
sipsetup.h
xml2lpc.h
xmlrpc.h
)
if(ENABLE_TUNNEL)
list(APPEND SOURCE_FILES
linphone_tunnel.cc
@ -183,26 +194,6 @@ install(TARGETS linphone EXPORT LinphoneTargets
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
set(HEADER_FILES
account_creator.h
buffer.h
call_log.h
call_params.h
content.h
event.h
linphonecore.h
linphonecore_utils.h
linphonefriend.h
linphonepresence.h
linphone_tunnel.h
lpc2xml.h
lpconfig.h
sipsetup.h
xml2lpc.h
xmlrpc.h
)
install(FILES ${HEADER_FILES}
DESTINATION include/linphone
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ

View file

@ -35,6 +35,7 @@ linphone_include_HEADERS=\
linphonecore_utils.h \
linphonefriend.h \
linphonepresence.h \
linphone_proxy_config.h \
linphone_tunnel.h \
lpc2xml.h \
lpconfig.h \
@ -59,17 +60,16 @@ liblinphone_la_SOURCES=\
dict.c \
ec-calibrator.c \
enum.c enum.h \
event.c event.h \
event.c \
friend.c \
info.c \
ldap/ldapprovider.c ldap/ldapprovider.h \
linphonecall.c \
linphonecore.c linphonecore.h \
linphonecore_utils.h \
linphonecore.c \
localplayer.c \
lpc2xml.c \
lime.c lime.h\
lpconfig.c lpconfig.h \
lpconfig.c \
lsd.c \
message_storage.c \
misc.c \
@ -82,7 +82,7 @@ liblinphone_la_SOURCES=\
remote_provisioning.c \
sal.c \
siplogin.c \
sipsetup.c sipsetup.h \
sipsetup.c \
xml2lpc.c \
xml.c \
xmlrpc.c \

View file

@ -84,6 +84,7 @@ static void _linphone_account_creator_destroy(LinphoneAccountCreator *creator) {
if (creator->domain) ms_free(creator->domain);
if (creator->route) ms_free(creator->route);
if (creator->email) ms_free(creator->email);
if (creator->display_name) ms_free(creator->display_name);
ms_free(creator);
}
@ -155,6 +156,14 @@ const char * linphone_account_creator_get_route(const LinphoneAccountCreator *cr
return creator->route;
}
void linphone_account_creator_set_display_name(LinphoneAccountCreator *creator, const char *display_name) {
set_string(&creator->display_name, display_name);
}
const char * linphone_account_creator_get_display_name(const LinphoneAccountCreator *creator) {
return creator->display_name;
}
void linphone_account_creator_set_email(LinphoneAccountCreator *creator, const char *email) {
set_string(&creator->email, email);
}
@ -269,12 +278,15 @@ LinphoneAccountCreatorStatus linphone_account_creator_validate(LinphoneAccountCr
}
LinphoneProxyConfig * linphone_account_creator_configure(const LinphoneAccountCreator *creator) {
LinphoneAddress *identity;
LinphoneAuthInfo *info;
LinphoneProxyConfig *cfg = linphone_core_create_proxy_config(creator->core);
char *identity_str = ms_strdup_printf("sip:%s@%s", creator->username, creator->domain);
LinphoneAddress *identity = linphone_address_new(identity_str);
if (creator->display_name) {
linphone_address_set_display_name(identity, creator->display_name);
}
linphone_proxy_config_set_identity(cfg, identity_str);
linphone_proxy_config_set_identity(cfg, linphone_address_as_string(identity));
linphone_proxy_config_set_server_addr(cfg, creator->domain);
linphone_proxy_config_set_route(cfg, creator->route);
linphone_proxy_config_enable_publish(cfg, FALSE);
@ -298,7 +310,6 @@ LinphoneProxyConfig * linphone_account_creator_configure(const LinphoneAccountCr
linphone_core_set_firewall_policy(creator->core, LinphonePolicyUseIce);
}
identity = linphone_address_new(linphone_proxy_config_get_identity(cfg));
info = linphone_auth_info_new(linphone_address_get_username(identity), NULL, creator->password, NULL, NULL, linphone_address_get_domain(identity));
linphone_core_add_auth_info(creator->core, info);
linphone_address_destroy(identity);

View file

@ -161,6 +161,20 @@ LINPHONE_PUBLIC void linphone_account_creator_set_route(LinphoneAccountCreator *
**/
LINPHONE_PUBLIC const char * linphone_account_creator_get_route(const LinphoneAccountCreator *creator);
/**
* Set the email.
* @param[in] creator LinphoneAccountCreator object
* @param[in] display_name The display name to set
**/
LINPHONE_PUBLIC void linphone_account_creator_set_display_name(LinphoneAccountCreator *creator, const char *display_name);
/**
* Get the email.
* @param[in] creator LinphoneAccountCreator object
* @return The display name of the LinphoneAccountCreator
**/
LINPHONE_PUBLIC const char * linphone_account_creator_get_display_name(const LinphoneAccountCreator *creator);
/**
* Set the email.
* @param[in] creator LinphoneAccountCreator object

View file

@ -490,6 +490,7 @@ Sal * sal_init(){
sal->tls_verify_cn=TRUE;
sal->refresher_retry_after=60000; /*default value in ms*/
sal->enable_sip_update=TRUE;
sal->pending_trans_checking=TRUE;
return sal;
}
@ -1172,3 +1173,12 @@ void sal_default_set_sdp_handling(Sal *sal, SalOpSDPHandling sdp_handling_method
if (sdp_handling_method != SalOpSDPNormal ) ms_message("Enabling special SDP handling for all new SalOp in Sal[%p]!", sal);
sal->default_sdp_handling = sdp_handling_method;
}
bool_t sal_pending_trans_checking_enabled(const Sal *sal) {
return sal->pending_trans_checking;
}
int sal_enable_pending_trans_checking(Sal *sal, bool_t value) {
sal->pending_trans_checking = value;
return 0;
}

View file

@ -51,6 +51,7 @@ struct Sal{
bool_t no_initial_route;
bool_t enable_sip_update; /*true by default*/
SalOpSDPHandling default_sdp_handling;
bool_t pending_trans_checking; /*testing purpose*/
};
typedef enum SalOpState {

View file

@ -889,6 +889,8 @@ int sal_call_decline(SalOp *op, SalReason reason, const char *redirection /*opti
int sal_call_update(SalOp *op, const char *subject, bool_t no_user_consent){
belle_sip_request_t *update;
belle_sip_dialog_state_t state=belle_sip_dialog_get_state(op->dialog);
belle_sip_dialog_enable_pending_trans_checking(op->dialog,op->base.root->pending_trans_checking);
/*check for dialog state*/
if ( state == BELLE_SIP_DIALOG_CONFIRMED) {
if (no_user_consent)
@ -906,6 +908,11 @@ int sal_call_update(SalOp *op, const char *subject, bool_t no_user_consent){
sal_op_fill_invite(op, update);
return sal_op_send_request(op,update);
}
/*it failed why ?*/
if (belle_sip_dialog_request_pending(op->dialog))
sal_error_info_set(&op->error_info,SalReasonRequestPending,491,NULL,NULL);
else
sal_error_info_set(&op->error_info,SalReasonUnknown,500,NULL,NULL);
return -1;
}

View file

@ -286,7 +286,7 @@ void _sal_op_add_custom_headers(SalOp *op, belle_sip_message_t *msg){
}
}
static int _sal_op_send_request_with_contact(SalOp* op, belle_sip_request_t* request,bool_t add_contact) {
static int _sal_op_send_request_with_contact(SalOp* op, belle_sip_request_t* request, bool_t add_contact) {
belle_sip_client_transaction_t* client_transaction;
belle_sip_provider_t* prov=op->base.root->prov;
belle_sip_uri_t* outbound_proxy=NULL;
@ -294,10 +294,10 @@ static int _sal_op_send_request_with_contact(SalOp* op, belle_sip_request_t* req
int result =-1;
belle_sip_uri_t *next_hop_uri=NULL;
if (add_contact) {
if (add_contact && !belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(request),belle_sip_header_contact_t)) {
contact = sal_op_create_contact(op);
belle_sip_message_set_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_HEADER(contact));
}
} /*keep existing*/
_sal_op_add_custom_headers(op, (belle_sip_message_t*)request);
@ -613,7 +613,10 @@ void set_or_update_dialog(SalOp* op, belle_sip_dialog_t* dialog) {
unlink_op_with_dialog(op,op->dialog);
op->dialog=NULL;
}
if (dialog) op->dialog=link_op_with_dialog(op,dialog);
if (dialog) {
op->dialog=link_op_with_dialog(op,dialog);
belle_sip_dialog_enable_pending_trans_checking(dialog,op->base.root->pending_trans_checking);
}
}
sal_op_unref(op);
}

View file

@ -21,7 +21,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
int sal_send_info(SalOp *op, const char *from, const char *to, const SalBody *body){
if (op->dialog){
belle_sip_request_t *req=belle_sip_dialog_create_queued_request(op->dialog,"INFO");
belle_sip_request_t *req;
belle_sip_dialog_enable_pending_trans_checking(op->dialog,op->base.root->pending_trans_checking);
req=belle_sip_dialog_create_queued_request(op->dialog,"INFO");
sal_op_add_body(op,(belle_sip_message_t*)req,body);
return sal_op_send_request(op,req);
}

View file

@ -40,6 +40,7 @@ static void register_refresher_listener (belle_sip_refresher_t* refresher
/*check service route rfc3608*/
belle_sip_header_service_route_t* service_route;
belle_sip_header_address_t* service_route_address=NULL;
belle_sip_header_contact_t *contact = belle_sip_refresher_get_contact(refresher);
if ((service_route=belle_sip_message_get_header_by_type(response,belle_sip_header_service_route_t))) {
service_route_address=belle_sip_header_address_create(NULL,belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(service_route)));
}
@ -47,6 +48,9 @@ static void register_refresher_listener (belle_sip_refresher_t* refresher
if (service_route_address) belle_sip_object_unref(service_route_address);
sal_remove_pending_auth(op->base.root,op); /*just in case*/
if (contact) {
sal_op_set_contact_address(op,(SalAddress*)(BELLE_SIP_HEADER_ADDRESS(contact))); /*update contact with real value*/
}
op->base.root->callbacks.register_success(op,belle_sip_refresher_get_expires(op->refresher)>0);
} else if (status_code>=400) {
/* from rfc3608, 6.1.
@ -71,7 +75,7 @@ static void register_refresher_listener (belle_sip_refresher_t* refresher
}
}
int sal_register(SalOp *op, const char *proxy, const char *from, int expires){
int sal_register(SalOp *op, const char *proxy, const char *from, int expires,SalAddress* old_contact){
belle_sip_request_t *req;
belle_sip_uri_t* req_uri;
belle_sip_header_t* accept_header;
@ -96,6 +100,19 @@ int sal_register(SalOp *op, const char *proxy, const char *from, int expires){
accept_header = belle_sip_header_create("Accept", "application/sdp, text/plain, application/vnd.gsma.rcs-ft-http+xml");
belle_sip_message_add_header(BELLE_SIP_MESSAGE(req), accept_header);
belle_sip_message_set_header(BELLE_SIP_MESSAGE(req),(belle_sip_header_t*)sal_op_create_contact(op));
if (old_contact) {
belle_sip_header_contact_t *contact=belle_sip_header_contact_create((const belle_sip_header_address_t *)old_contact);
if (contact) {
char * tmp;
belle_sip_header_contact_set_expires(contact,0); /*remove old aor*/
belle_sip_message_add_header(BELLE_SIP_MESSAGE(req), BELLE_SIP_HEADER(contact));
tmp = belle_sip_object_to_string(contact);
ms_message("Clearing contact [%s] for op [%p]",tmp,op);
ms_free(tmp);
} else {
ms_error("Cannot add old contact header to op [%p]",op);
}
}
return sal_op_send_and_create_refresher(op,req,expires,register_refresher_listener);
}

View file

@ -1267,7 +1267,7 @@ static void text_delivery_update(SalOp *op, SalTextDeliveryStatus status){
linphone_chat_message_update_state(chat_msg);
if (chat_msg && (chat_msg->cb || (chat_msg->callbacks && linphone_chat_message_cbs_get_msg_state_changed(chat_msg->callbacks)))) {
ms_message("Notifying text delivery with status %i",chat_msg->state);
ms_message("Notifying text delivery with status %s",linphone_chat_message_state_to_string(chat_msg->state));
if (chat_msg->callbacks && linphone_chat_message_cbs_get_msg_state_changed(chat_msg->callbacks)) {
linphone_chat_message_cbs_get_msg_state_changed(chat_msg->callbacks)(chat_msg, chat_msg->state);
} else {

View file

@ -400,6 +400,7 @@ static LinphoneChatRoom * _linphone_core_create_chat_room(LinphoneCore *lc, Linp
cr->lc = lc;
cr->peer = linphone_address_as_string(addr);
cr->peer_url = addr;
cr->unread_count = -1;
lc->chatrooms = ms_list_append(lc->chatrooms, (void *)cr);
return cr;
}
@ -620,6 +621,8 @@ static void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatM
msg->from=linphone_address_new(identity);
msg->storage_id=linphone_chat_message_store(msg);
if(cr->unread_count >= 0 && !msg->is_read) cr->unread_count++;
// add to transient list
cr->transient_messages = ms_list_append(cr->transient_messages, linphone_chat_message_ref(msg));
@ -772,6 +775,10 @@ void linphone_core_message_received(LinphoneCore *lc, SalOp *op, const SalMessag
linphone_address_destroy(addr);
msg->storage_id=linphone_chat_message_store(msg);
if(cr->unread_count < 0) cr->unread_count = 1;
else cr->unread_count++;
linphone_chat_room_message_received(cr,lc,msg);
linphone_chat_message_unref(msg);
}
@ -1373,6 +1380,7 @@ LinphoneChatMessage* linphone_chat_message_clone(const LinphoneChatMessage* msg)
new_message->storage_id=msg->storage_id;
if (msg->from) new_message->from=linphone_address_clone(msg->from);
if (msg->file_transfer_filepath) new_message->file_transfer_filepath=ms_strdup(msg->file_transfer_filepath);
if (msg->file_transfer_information) new_message->file_transfer_information=linphone_content_copy(msg->file_transfer_information);
return new_message;
}

View file

@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "private.h"
#include "lpconfig.h"
@ -87,7 +87,7 @@ void linphone_core_conference_check_uninit(LinphoneCore *lc){
ctx->record_endpoint=NULL;
}
}
if (ms_audio_conference_get_size(ctx->conf)==0){
ms_audio_conference_destroy(ctx->conf);
ctx->conf=NULL;
@ -110,7 +110,7 @@ void linphone_call_add_to_conf(LinphoneCall *call, bool_t muted){
void linphone_call_remove_from_conf(LinphoneCall *call){
LinphoneCore *lc=call->core;
LinphoneConference *conf=&lc->conf_ctx;
ms_audio_conference_remove_member(conf->conf,call->endpoint);
ms_audio_endpoint_release_from_stream(call->endpoint);
call->endpoint=NULL;
@ -128,12 +128,12 @@ static void add_local_endpoint(LinphoneConference *conf,LinphoneCore *lc){
/*create a dummy audiostream in order to extract the local part of it */
/* network address and ports have no meaning and are not used here. */
AudioStream *st=audio_stream_new(65000,65001,FALSE);
MSSndCard *playcard=lc->sound_conf.lsd_card ?
MSSndCard *playcard=lc->sound_conf.lsd_card ?
lc->sound_conf.lsd_card : lc->sound_conf.play_sndcard;
MSSndCard *captcard=lc->sound_conf.capt_sndcard;
const MSAudioConferenceParams *params=ms_audio_conference_get_params(conf->conf);
conf->local_dummy_profile=make_dummy_profile(params->samplerate);
audio_stream_start_full(st, conf->local_dummy_profile,
"127.0.0.1",
65000,
@ -151,7 +151,7 @@ static void add_local_endpoint(LinphoneConference *conf,LinphoneCore *lc){
conf->local_participant=st;
conf->local_endpoint=ms_audio_endpoint_get_from_stream(st,FALSE);
ms_audio_conference_add_member(conf->conf,conf->local_endpoint);
}
/**
@ -166,7 +166,7 @@ float linphone_core_get_conference_local_input_volume(LinphoneCore *lc){
float vol=0;
ms_filter_call_method(st->volsend,MS_VOLUME_GET,&vol);
return vol;
}
return LINPHONE_VOLUME_DB_LOWEST;
}
@ -175,22 +175,22 @@ float linphone_core_get_conference_local_input_volume(LinphoneCore *lc){
* Merge a call into a conference.
* @param lc the linphone core
* @param call an established call, either in LinphoneCallStreamsRunning or LinphoneCallPaused state.
*
*
* If this is the first call that enters the conference, the virtual conference will be created automatically.
* If the local user was actively part of the call (ie not in paused state), then the local user is automatically entered into the conference.
* If the call was in paused state, then it is automatically resumed when entering into the conference.
*
*
* @return 0 if successful, -1 otherwise.
**/
int linphone_core_add_to_conference(LinphoneCore *lc, LinphoneCall *call){
LinphoneConference *conf=&lc->conf_ctx;
if (call->current_params->in_conference){
ms_error("Already in conference");
return -1;
}
conference_check_init(&lc->conf_ctx, lp_config_get_int(lc->config, "sound","conference_rate",16000));
if (call->state==LinphoneCallPaused){
call->params->in_conference=TRUE;
call->params->has_video=FALSE;
@ -199,7 +199,7 @@ int linphone_core_add_to_conference(LinphoneCore *lc, LinphoneCall *call){
LinphoneCallParams *params=linphone_call_params_copy(linphone_call_get_current_params(call));
params->in_conference=TRUE;
params->has_video=FALSE;
if (call->audiostream || call->videostream){
linphone_call_stop_media_streams(call); /*free the audio & video local resources*/
linphone_call_init_media_streams(call);
@ -280,15 +280,15 @@ static int convert_conference_to_call(LinphoneCore *lc){
* Remove a call from the conference.
* @param lc the linphone core
* @param call a call that has been previously merged into the conference.
*
*
* After removing the remote participant belonging to the supplied call, the call becomes a normal call in paused state.
* If one single remote participant is left alone together with the local user in the conference after the removal, then the conference is
* automatically transformed into a simple call in StreamsRunning state.
* The conference's resources are then automatically destroyed.
*
*
* In other words, unless linphone_core_leave_conference() is explicitely called, the last remote participant of a conference is automatically
* put in a simple call in running state.
*
*
* @return 0 if successful, -1 otherwise.
**/
int linphone_core_remove_from_conference(LinphoneCore *lc, LinphoneCall *call){
@ -311,11 +311,6 @@ int linphone_core_remove_from_conference(LinphoneCore *lc, LinphoneCall *call){
return err;
}
/**
* Indicates whether the local participant is part of the conference.
* @param lc the linphone core
* @return TRUE if the local participant is in the conference, FALSE otherwise.
**/
bool_t linphone_core_is_in_conference(const LinphoneCore *lc){
return lc->conf_ctx.local_participant!=NULL;
}
@ -336,12 +331,12 @@ int linphone_core_leave_conference(LinphoneCore *lc){
/**
* Moves the local participant inside the conference.
* @param lc the linphone core
*
* Makes the local participant to join the conference.
*
* Makes the local participant to join the conference.
* Typically, the local participant is by default always part of the conference when joining an active call into a conference.
* However, by calling linphone_core_leave_conference() and linphone_core_enter_conference() the application can decide to temporarily
* move out and in the local participant from the conference.
*
*
* @return 0 if successful, -1 otherwise
**/
int linphone_core_enter_conference(LinphoneCore *lc){
@ -360,9 +355,9 @@ int linphone_core_enter_conference(LinphoneCore *lc){
/**
* Add all calls into a conference.
* @param lc the linphone core
*
*
* Merge all established calls (either in LinphoneCallStreamsRunning or LinphoneCallPaused) into a conference.
*
*
* @return 0 if successful, -1 otherwise
**/
int linphone_core_add_all_to_conference(LinphoneCore *lc) {
@ -381,9 +376,9 @@ int linphone_core_add_all_to_conference(LinphoneCore *lc) {
/**
* Terminates the conference and the calls associated with it.
* @param lc the linphone core
*
*
* All the calls that were merged to the conference are terminated, and the conference resources are destroyed.
*
*
* @return 0 if successful, -1 otherwise
**/
int linphone_core_terminate_conference(LinphoneCore *lc) {
@ -404,10 +399,10 @@ int linphone_core_terminate_conference(LinphoneCore *lc) {
/**
* Returns the number of participants to the conference, including the local participant.
* @param lc the linphone core
*
*
* Typically, after merging two calls into the conference, there is total of 3 participants:
* the local participant (or local user), and two remote participants that were the destinations of the two previously establised calls.
*
*
* @return the number of participants to the conference
**/
int linphone_core_get_conference_size(LinphoneCore *lc) {

View file

@ -0,0 +1,504 @@
/*
Copyright (C) 2000 - 2010 Simon MORLAT (simon.morlat@linphone.org)
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, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef LINPHONE_PROXY_CONFIG_H
#define LINPHONE_PROXY_CONFIG_H
/**
* Creates an empty proxy config.
* @deprecated, use #linphone_core_create_proxy_config instead
**/
LINPHONE_PUBLIC LinphoneProxyConfig *linphone_proxy_config_new(void);
/**
* Acquire a reference to the proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The same proxy config.
**/
LINPHONE_PUBLIC LinphoneProxyConfig *linphone_proxy_config_ref(LinphoneProxyConfig *cfg);
/**
* Release reference to the proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
**/
LINPHONE_PUBLIC void linphone_proxy_config_unref(LinphoneProxyConfig *cfg);
/**
* Retrieve the user pointer associated with the proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The user pointer associated with the proxy config.
**/
LINPHONE_PUBLIC void *linphone_proxy_config_get_user_data(const LinphoneProxyConfig *cfg);
/**
* Assign a user pointer to the proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] ud The user pointer to associate with the proxy config.
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_user_data(LinphoneProxyConfig *cfg, void *ud);
/**
* Sets the proxy address
*
* Examples of valid sip proxy address are:
* - IP address: sip:87.98.157.38
* - IP address with port: sip:87.98.157.38:5062
* - hostnames : sip:sip.example.net
**/
LINPHONE_PUBLIC int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *cfg, const char *server_addr);
/**
* @deprecated Use linphone_proxy_config_set_identity_address()
**/
LINPHONE_PUBLIC int linphone_proxy_config_set_identity(LinphoneProxyConfig *cfg, const char *identity);
/**
* Sets the user identity as a SIP address.
*
* This identity is normally formed with display name, username and domain, such
* as:
* Alice <sip:alice@example.net>
* The REGISTER messages will have from and to set to this identity.
*
**/
LINPHONE_PUBLIC int linphone_proxy_config_set_identity_address(LinphoneProxyConfig *cfg, const LinphoneAddress *identity);
/**
* Sets a SIP route.
* When a route is set, all outgoing calls will go to the route's destination if this proxy
* is the default one (see linphone_core_set_default_proxy() ).
**/
LINPHONE_PUBLIC int linphone_proxy_config_set_route(LinphoneProxyConfig *cfg, const char *route);
/**
* Sets the registration expiration time in seconds.
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_expires(LinphoneProxyConfig *cfg, int expires);
#define linphone_proxy_config_expires linphone_proxy_config_set_expires
/**
* Indicates either or not, REGISTRATION must be issued for this #LinphoneProxyConfig .
* <br> In case this #LinphoneProxyConfig has been added to #LinphoneCore, follows the linphone_proxy_config_edit() rule.
* @param[in] cfg #LinphoneProxyConfig object.
* @param val if true, registration will be engaged
*/
LINPHONE_PUBLIC void linphone_proxy_config_enable_register(LinphoneProxyConfig *cfg, bool_t val);
#define linphone_proxy_config_enableregister linphone_proxy_config_enable_register
/**
* Starts editing a proxy configuration.
*
* Because proxy configuration must be consistent, applications MUST
* call linphone_proxy_config_edit() before doing any attempts to modify
* proxy configuration (such as identity, proxy address and so on).
* Once the modifications are done, then the application must call
* linphone_proxy_config_done() to commit the changes.
**/
LINPHONE_PUBLIC void linphone_proxy_config_edit(LinphoneProxyConfig *cfg);
/**
* Commits modification made to the proxy configuration.
**/
LINPHONE_PUBLIC int linphone_proxy_config_done(LinphoneProxyConfig *cfg);
/**
* Indicates either or not, PUBLISH must be issued for this #LinphoneProxyConfig .
* <br> In case this #LinphoneProxyConfig has been added to #LinphoneCore, follows the linphone_proxy_config_edit() rule.
* @param[in] cfg #LinphoneProxyConfig object.
* @param val if true, publish will be engaged
*
*/
LINPHONE_PUBLIC void linphone_proxy_config_enable_publish(LinphoneProxyConfig *cfg, bool_t val);
/**
* Set the publish expiration time in second.
* @param[in] cfg #LinphoneProxyConfig object.
* @param expires in second
* */
LINPHONE_PUBLIC void linphone_proxy_config_set_publish_expires(LinphoneProxyConfig *cfg, int expires);
/**
* get the publish expiration time in second. Default value is the registration expiration value.
* @param[in] cfg #LinphoneProxyConfig object.
* @return expires in second
* */
LINPHONE_PUBLIC int linphone_proxy_config_get_publish_expires(const LinphoneProxyConfig *cfg);
/**
* Sets whether liblinphone should replace "+" by international calling prefix in dialed numbers (passed to
* #linphone_core_invite ).
*
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_dial_escape_plus(LinphoneProxyConfig *cfg, bool_t val);
/**
* Sets a dialing prefix to be automatically prepended when inviting a number with
* linphone_core_invite();
* This dialing prefix shall usually be the country code of the country where the user is living, without "+".
*
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_dial_prefix(LinphoneProxyConfig *cfg, const char *prefix);
/**
* Indicates whether quality statistics during call should be stored and sent to a collector according to RFC 6035.
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] enable True to sotre quality statistics and sent them to the collector, false to disable it.
*/
LINPHONE_PUBLIC void linphone_proxy_config_enable_quality_reporting(LinphoneProxyConfig *cfg, bool_t enable);
/**
* Indicates whether quality statistics during call should be stored and sent to a collector according to RFC 6035.
* @param[in] cfg #LinphoneProxyConfig object.
* @return True if quality repotring is enabled, false otherwise.
*/
LINPHONE_PUBLIC bool_t linphone_proxy_config_quality_reporting_enabled(LinphoneProxyConfig *cfg);
/**
* Set the route of the collector end-point when using quality reporting. This SIP address
* should be used on server-side to process packets directly before discarding packets. Collector address
* should be a non existing account and will not receive any messages.
* If NULL, reports will be send to the proxy domain.
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] collector route of the collector end-point, if NULL PUBLISH will be sent to the proxy domain.
*/
LINPHONE_PUBLIC void linphone_proxy_config_set_quality_reporting_collector(LinphoneProxyConfig *cfg, const char *collector);
/**
* Get the route of the collector end-point when using quality reporting. This SIP address
* should be used on server-side to process packets directly before discarding packets. Collector address
* should be a non existing account and will not receive any messages.
* If NULL, reports will be send to the proxy domain.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The SIP address of the collector end-point.
*/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_quality_reporting_collector(const LinphoneProxyConfig *cfg);
/**
* Set the interval between 2 interval reports sending when using quality reporting. If call exceed interval size, an
* interval report will be sent to the collector. On call termination, a session report will be sent
* for the remaining period. Value must be 0 (disabled) or positive.
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] interval The interval in seconds, 0 means interval reports are disabled.
*/
LINPHONE_PUBLIC void linphone_proxy_config_set_quality_reporting_interval(LinphoneProxyConfig *cfg, uint8_t interval);
/**
* Get the interval between interval reports when using quality reporting.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The interval in seconds, 0 means interval reports are disabled.
*/
LINPHONE_PUBLIC int linphone_proxy_config_get_quality_reporting_interval(LinphoneProxyConfig *cfg);
/**
* Get the registration state of the given proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The registration state of the proxy config.
**/
LINPHONE_PUBLIC LinphoneRegistrationState linphone_proxy_config_get_state(const LinphoneProxyConfig *cfg);
/**
* @return a boolean indicating that the user is sucessfully registered on the proxy.
* @deprecated Use linphone_proxy_config_get_state() instead.
**/
LINPHONE_PUBLIC bool_t linphone_proxy_config_is_registered(const LinphoneProxyConfig *cfg);
/**
* Get the domain name of the given proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The domain name of the proxy config.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_domain(const LinphoneProxyConfig *cfg);
/**
* Get the realm of the given proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The realm of the proxy config.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_realm(const LinphoneProxyConfig *cfg);
/**
* Set the realm of the given proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] realm New realm value.
* @return The realm of the proxy config.
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_realm(LinphoneProxyConfig *cfg, const char * realm);
/**
* @return the route set for this proxy configuration.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_route(const LinphoneProxyConfig *cfg);
/**
* @return the SIP identity that belongs to this proxy configuration.
**/
LINPHONE_PUBLIC const LinphoneAddress *linphone_proxy_config_get_identity_address(const LinphoneProxyConfig *cfg);
/**
* @deprecated use linphone_proxy_config_get_identity_address()
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_identity(const LinphoneProxyConfig *cfg);
/**
* @return TRUE if PUBLISH request is enabled for this proxy.
**/
LINPHONE_PUBLIC bool_t linphone_proxy_config_publish_enabled(const LinphoneProxyConfig *cfg);
/**
* @return the proxy's SIP address.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_server_addr(const LinphoneProxyConfig *cfg);
#define linphone_proxy_config_get_addr linphone_proxy_config_get_server_addr
/**
* @return the duration of registration.
**/
LINPHONE_PUBLIC int linphone_proxy_config_get_expires(const LinphoneProxyConfig *cfg);
/**
* @return TRUE if registration to the proxy is enabled.
**/
LINPHONE_PUBLIC bool_t linphone_proxy_config_register_enabled(const LinphoneProxyConfig *cfg);
/**
* Refresh a proxy registration.
* This is useful if for example you resuming from suspend, thus IP address may have changed.
**/
LINPHONE_PUBLIC void linphone_proxy_config_refresh_register(LinphoneProxyConfig *cfg);
/**
* Prevent a proxy config from refreshing its registration.
* This is useful to let registrations to expire naturally (or) when the application wants to keep control on when
* refreshes are sent.
* However, linphone_core_set_network_reachable(lc,TRUE) will always request the proxy configs to refresh their registrations.
* The refreshing operations can be resumed with linphone_proxy_config_refresh_register().
* @param[in] cfg #LinphoneProxyConfig object.
**/
LINPHONE_PUBLIC void linphone_proxy_config_pause_register(LinphoneProxyConfig *cfg);
LINPHONE_PUBLIC const LinphoneAddress* linphone_proxy_config_get_contact(const LinphoneProxyConfig *cfg);
/**
* @return previously set contact parameters.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_contact_parameters(const LinphoneProxyConfig *cfg);
/**
* Set optional contact parameters that will be added to the contact information sent in the registration.
* @param[in] cfg #LinphoneProxyConfig object.
* @param contact_params a string contaning the additional parameters in text form, like "myparam=something;myparam2=something_else"
*
* The main use case for this function is provide the proxy additional information regarding the user agent, like for example unique identifier or apple push id.
* As an example, the contact address in the SIP register sent will look like <sip:joe@15.128.128.93:50421>;apple-push-id=43143-DFE23F-2323-FA2232.
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_contact_parameters(LinphoneProxyConfig *cfg, const char *contact_params);
/**
* Set optional contact parameters that will be added to the contact information sent in the registration, inside the URI.
* @param[in] cfg #LinphoneProxyConfig object.
* @param contact_uri_params a string containing the additional parameters in text form, like "myparam=something;myparam2=something_else"
*
* The main use case for this function is provide the proxy additional information regarding the user agent, like for example unique identifier or apple push id.
* As an example, the contact address in the SIP register sent will look like <sip:joe@15.128.128.93:50421;apple-push-id=43143-DFE23F-2323-FA2232>.
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_contact_uri_parameters(LinphoneProxyConfig *cfg, const char *contact_uri_params);
/**
* @return previously set contact URI parameters.
**/
LINPHONE_PUBLIC const char* linphone_proxy_config_get_contact_uri_parameters(const LinphoneProxyConfig *cfg);
/**
* Get the #LinphoneCore object to which is associated the #LinphoneProxyConfig.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The #LinphoneCore object to which is associated the #LinphoneProxyConfig.
**/
LINPHONE_PUBLIC LinphoneCore * linphone_proxy_config_get_core(const LinphoneProxyConfig *cfg);
/**
* @return whether liblinphone should replace "+" by "00" in dialed numbers (passed to
* #linphone_core_invite ).
*
**/
LINPHONE_PUBLIC bool_t linphone_proxy_config_get_dial_escape_plus(const LinphoneProxyConfig *cfg);
/**
* @return dialing prefix.
**/
LINPHONE_PUBLIC const char * linphone_proxy_config_get_dial_prefix(const LinphoneProxyConfig *cfg);
/**
* Get the reason why registration failed when the proxy config state is LinphoneRegistrationFailed.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The reason why registration failed for this proxy config.
**/
LINPHONE_PUBLIC LinphoneReason linphone_proxy_config_get_error(const LinphoneProxyConfig *cfg);
/**
* Get detailed information why registration failed when the proxy config state is LinphoneRegistrationFailed.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The details why registration failed for this proxy config.
**/
LINPHONE_PUBLIC const LinphoneErrorInfo *linphone_proxy_config_get_error_info(const LinphoneProxyConfig *cfg);
/**
* Get the transport from either service route, route or addr.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The transport as a string (I.E udp, tcp, tls, dtls)
**/
LINPHONE_PUBLIC const char* linphone_proxy_config_get_transport(const LinphoneProxyConfig *cfg);
/**
* Destroys a proxy config.
* @deprecated
*
* @note: LinphoneProxyConfig that have been removed from LinphoneCore with
* linphone_core_remove_proxy_config() must not be freed.
**/
LINPHONE_PUBLIC void linphone_proxy_config_destroy(LinphoneProxyConfig *cfg);
LINPHONE_PUBLIC void linphone_proxy_config_set_sip_setup(LinphoneProxyConfig *cfg, const char *type);
LINPHONE_PUBLIC SipSetupContext *linphone_proxy_config_get_sip_setup_context(LinphoneProxyConfig *cfg);
LINPHONE_PUBLIC SipSetup *linphone_proxy_config_get_sip_setup(LinphoneProxyConfig *cfg);
/**
* Detect if the given input is a phone number or not.
* @param proxy #LinphoneProxyConfig argument, unused yet but may contain useful data. Can be NULL.
* @param username string to parse.
* @return TRUE if input is a phone number, FALSE otherwise.
**/
LINPHONE_PUBLIC bool_t linphone_proxy_config_is_phone_number(LinphoneProxyConfig *proxy, const char *username);
/**
* Normalize a human readable phone number into a basic string. 888-444-222 becomes 888444222
* or +33888444222 depending on the #LinphoneProxyConfig object. However this argument is OPTIONNAL
* and if not provided, a default one will be used.
* This function will always generate a normalized username; if input is not a phone number, output will be a copy of input.
* @param proxy #LinphoneProxyConfig object containing country code and/or escape symbol. If NULL passed, will use default configuration.
* @param username the string to parse
* @param result the newly normalized number
* @param result_len the size of the normalized number \a result
* @return TRUE if a phone number was recognized, FALSE otherwise.
*/
LINPHONE_PUBLIC bool_t linphone_proxy_config_normalize_number(LinphoneProxyConfig *proxy, const char *username,
char *result, size_t result_len);
/**
* Same objective as linphone_proxy_config_normalize_number but allocates a new string
* @param proxy #LinphoneProxyConfig object containing country code and/or escape symbol. If NULL passed, will use default configuration.
* @param username the string to parse
* @return NULL if invalid phone number, normalized phone number from username input otherwise.
*/
LINPHONE_PUBLIC char* linphone_proxy_config_normalize_phone_number(LinphoneProxyConfig *proxy, const char *username);
/**
* Normalize a human readable sip uri into a fully qualified LinphoneAddress.
* A sip address should look like DisplayName \<sip:username\@domain:port\> .
* Basically this function performs the following tasks
* - if a phone number is entered, prepend country prefix and eventually escape the '+' by 00 of the proxy config.
* - if no domain part is supplied, append the domain name of the proxy config. Returns NULL if no proxy is provided at this point.
* - if no sip: is present, prepend it.
*
* The result is a syntactically correct SIP address.
* @param proxy #LinphoneProxyConfig object containing country code, escape symbol and/or domain name. Can be NULL if domain is already provided.
* @param username the string to parse
* @return NULL if invalid input, normalized sip address otherwise.
*/
LINPHONE_PUBLIC LinphoneAddress* linphone_proxy_config_normalize_sip_uri(LinphoneProxyConfig *proxy, const char *username);
/**
* Set default privacy policy for all calls routed through this proxy.
* @param[in] cfg #LinphoneProxyConfig object.
* @param privacy LinphonePrivacy to configure privacy
* */
LINPHONE_PUBLIC void linphone_proxy_config_set_privacy(LinphoneProxyConfig *cfg, LinphonePrivacyMask privacy);
/**
* Get default privacy policy for all calls routed through this proxy.
* @param[in] cfg #LinphoneProxyConfig object.
* @return Privacy mode
* */
LINPHONE_PUBLIC LinphonePrivacyMask linphone_proxy_config_get_privacy(const LinphoneProxyConfig *cfg);
/**
* Set the http file transfer server to be used for content type application/vnd.gsma.rcs-ft-http+xml
* @param[in] cfg #LinphoneProxyConfig object.
* @param server_url URL of the file server like https://file.linphone.org/upload.php
* */
LINPHONE_PUBLIC void linphone_proxy_config_set_file_transfer_server(LinphoneProxyConfig *cfg, const char * server_url);
/**
* Get the http file transfer server to be used for content type application/vnd.gsma.rcs-ft-http+xml
* @param[in] cfg #LinphoneProxyConfig object.
* @return URL of the file server like https://file.linphone.org/upload.php
* */
LINPHONE_PUBLIC const char* linphone_proxy_config_get_file_transfer_server(const LinphoneProxyConfig *cfg);
/**
* Indicates whether AVPF/SAVPF must be used for calls using this proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] enable True to enable AVPF/SAVF, false to disable it.
* @deprecated use linphone_proxy_config_set_avpf_mode()
*/
LINPHONE_PUBLIC void linphone_proxy_config_enable_avpf(LinphoneProxyConfig *cfg, bool_t enable);
/**
* Indicates whether AVPF/SAVPF is being used for calls using this proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @return True if AVPF/SAVPF is enabled, false otherwise.
* @deprecated use linphone_proxy_config_set_avpf_mode()
*/
LINPHONE_PUBLIC bool_t linphone_proxy_config_avpf_enabled(LinphoneProxyConfig *cfg);
/**
* Set the interval between regular RTCP reports when using AVPF/SAVPF.
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] interval The interval in seconds (between 0 and 5 seconds).
*/
LINPHONE_PUBLIC void linphone_proxy_config_set_avpf_rr_interval(LinphoneProxyConfig *cfg, uint8_t interval);
/**
* Get the interval between regular RTCP reports when using AVPF/SAVPF.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The interval in seconds.
*/
LINPHONE_PUBLIC uint8_t linphone_proxy_config_get_avpf_rr_interval(const LinphoneProxyConfig *cfg);
/**
* Get enablement status of RTCP feedback (also known as AVPF profile).
* @param[in] cfg #LinphoneProxyConfig object.
* @return the enablement mode, which can be LinphoneAVPFDefault (use LinphoneCore's mode), LinphoneAVPFEnabled (avpf is enabled), or LinphoneAVPFDisabled (disabled).
**/
LINPHONE_PUBLIC LinphoneAVPFMode linphone_proxy_config_get_avpf_mode(const LinphoneProxyConfig *cfg);
/**
* Enable the use of RTCP feedback (also known as AVPF profile).
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] mode the enablement mode, which can be LinphoneAVPFDefault (use LinphoneCore's mode), LinphoneAVPFEnabled (avpf is enabled), or LinphoneAVPFDisabled (disabled).
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_avpf_mode(LinphoneProxyConfig *cfg, LinphoneAVPFMode mode);
/**
* Obtain the value of a header sent by the server in last answer to REGISTER.
* @param[in] cfg #LinphoneProxyConfig object.
* @param header_name the header name for which to fetch corresponding value
* @return the value of the queried header.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_custom_header(LinphoneProxyConfig *cfg, const char *header_name);
/**
* Set the value of a custom header sent to the server in REGISTERs request.
* @param[in] cfg #LinphoneProxyConfig object.
* @param header_name the header name
* @param header_value the header's value
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_custom_header(LinphoneProxyConfig *cfg, const char *header_name, const char *header_value);
#endif

View file

@ -584,7 +584,6 @@ void linphone_call_make_local_media_description_with_params(LinphoneCore *lc, Li
SalMediaDescription *old_md=call->localdesc;
int i;
int nb_active_streams = 0;
const char *me;
SalMediaDescription *md=sal_media_description_new();
LinphoneAddress *addr;
const char *subject;
@ -605,11 +604,11 @@ void linphone_call_make_local_media_description_with_params(LinphoneCore *lc, Li
linphone_core_adapt_to_network(lc,call->ping_time,params);
if (call->dest_proxy)
me=linphone_proxy_config_get_identity(call->dest_proxy);
else
me=linphone_core_get_identity(lc);
addr=linphone_address_new(me);
if (call->dest_proxy) {
addr=linphone_address_clone(linphone_proxy_config_get_identity_address(call->dest_proxy));
} else {
addr=linphone_address_new(linphone_core_get_identity(lc));
}
md->session_id=(old_md ? old_md->session_id : (rand() & 0xfff));
md->session_ver=(old_md ? (old_md->session_ver+1) : (rand() & 0xfff));
@ -2506,6 +2505,7 @@ static RtpSession * create_audio_rtp_io_session(LinphoneCall *call) {
int remote_port = lp_config_get_int(lc->config, "sound", "rtp_remote_port", 17078);
int ptnum = lp_config_get_int(lc->config, "sound", "rtp_ptnum", 0);
const char *rtpmap = lp_config_get_string(lc->config, "sound", "rtp_map", "pcmu/8000/1");
int symmetric = lp_config_get_int(lc->config, "sound", "rtp_symmetric", 0);
RtpSession *rtp_session = NULL;
pt = rtp_profile_get_payload_from_rtpmap(call->audio_profile, rtpmap);
if (pt != NULL) {
@ -2517,6 +2517,7 @@ static RtpSession * create_audio_rtp_io_session(LinphoneCall *call) {
rtp_session_enable_rtcp(rtp_session, FALSE);
rtp_session_set_payload_type(rtp_session, ptnum);
rtp_session_set_jitter_compensation(rtp_session, linphone_core_get_audio_jittcomp(lc));
rtp_session_set_symmetric_rtp(rtp_session, (bool_t)symmetric);
}
return rtp_session;
}
@ -2569,6 +2570,8 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b
playfile=NULL;
}else if (stream->dir==SalStreamSendOnly){
playcard=NULL;
/*jehan: why capture card should be null in this case ? Not very good to only rely on stream dir to detect paused state.
* It can also be a simple call in one way audio*/
captcard=NULL;
recfile=NULL;
/*And we will eventually play "playfile" if set by the user*/
@ -2631,6 +2634,8 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b
if (io.rtp_session == NULL) {
ok = FALSE;
}
} else if (stream->dir==SalStreamSendOnly) { /*no very good, io.xx versus playcard,captcard and call state should be reworked*/
io.input_file = playfile; /*quick fix to restaure current behavior which is SalStreamSendOnly=Paused=playfile*/
} else {
io.playback_card = playcard;
io.capture_card = captcard;
@ -2681,6 +2686,7 @@ static RtpSession * create_video_rtp_io_session(LinphoneCall *call) {
int remote_port = lp_config_get_int(lc->config, "video", "rtp_remote_port", 19078);
int ptnum = lp_config_get_int(lc->config, "video", "rtp_ptnum", 0);
const char *rtpmap = lp_config_get_string(lc->config, "video", "rtp_map", "vp8/90000/1");
int symmetric = lp_config_get_int(lc->config, "video", "rtp_symmetric", 0);
RtpSession *rtp_session = NULL;
pt = rtp_profile_get_payload_from_rtpmap(call->video_profile, rtpmap);
if (pt != NULL) {
@ -2691,6 +2697,7 @@ static RtpSession * create_video_rtp_io_session(LinphoneCall *call) {
rtp_session_set_remote_addr_and_port(rtp_session, remote_ip, remote_port, -1);
rtp_session_enable_rtcp(rtp_session, FALSE);
rtp_session_set_payload_type(rtp_session, ptnum);
rtp_session_set_symmetric_rtp(rtp_session, (bool_t)symmetric);
}
return rtp_session;
}
@ -2740,12 +2747,12 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu
video_stream_set_fps(call->videostream,linphone_core_get_preferred_framerate(lc));
video_stream_set_sent_video_size(call->videostream,linphone_core_get_preferred_video_size(lc));
video_stream_enable_self_view(call->videostream,lc->video_conf.selfview);
if (call->video_window_id != 0)
video_stream_set_native_window_id(call->videostream,call->video_window_id);
else if (lc->video_window_id!=0)
video_stream_set_native_window_id(call->videostream,lc->video_window_id);
if (lc->preview_window_id!=0)
video_stream_set_native_preview_window_id (call->videostream,lc->preview_window_id);
if (call->video_window_id != NULL)
video_stream_set_native_window_id(call->videostream, call->video_window_id);
else if (lc->video_window_id != NULL)
video_stream_set_native_window_id(call->videostream, lc->video_window_id);
if (lc->preview_window_id != NULL)
video_stream_set_native_preview_window_id(call->videostream, lc->preview_window_id);
video_stream_use_preview_video_window (call->videostream,lc->use_preview_window);
if (is_multicast){
@ -3200,6 +3207,32 @@ float linphone_call_get_record_volume(LinphoneCall *call){
return LINPHONE_VOLUME_DB_LOWEST;
}
float linphone_call_get_speaker_volume_gain(const LinphoneCall *call) {
if(call->audiostream) return audio_stream_get_sound_card_output_gain(call->audiostream);
else {
ms_error("Could not get playback volume: no audio stream");
return -1.0f;
}
}
void linphone_call_set_speaker_volume_gain(LinphoneCall *call, float volume) {
if(call->audiostream) audio_stream_set_sound_card_output_gain(call->audiostream, volume);
else ms_error("Could not set playback volume: no audio stream");
}
float linphone_call_get_microphone_volume_gain(const LinphoneCall *call) {
if(call->audiostream) return audio_stream_get_sound_card_input_gain(call->audiostream);
else {
ms_error("Could not get record volume: no audio stream");
return -1.0f;
}
}
void linphone_call_set_microphone_volume_gain(LinphoneCall *call, float volume) {
if(call->audiostream) audio_stream_set_sound_card_input_gain(call->audiostream, volume);
else ms_error("Could not set record volume: no audio stream");
}
/**
* Obtain real-time quality rating of the call
*
@ -4037,7 +4070,7 @@ void linphone_call_cancel_dtmfs(LinphoneCall *call) {
}
}
unsigned long linphone_call_get_native_video_window_id(const LinphoneCall *call) {
void * linphone_call_get_native_video_window_id(const LinphoneCall *call) {
if (call->video_window_id) {
/* The video id was previously set by the app. */
return call->video_window_id;
@ -4051,7 +4084,7 @@ unsigned long linphone_call_get_native_video_window_id(const LinphoneCall *call)
return 0;
}
void linphone_call_set_native_video_window_id(LinphoneCall *call, unsigned long id) {
void linphone_call_set_native_video_window_id(LinphoneCall *call, void *id) {
call->video_window_id = id;
#ifdef VIDEO_ENABLED
if (call->videostream) {

View file

@ -1496,6 +1496,7 @@ void linphone_configuring_terminated(LinphoneCore *lc, LinphoneConfiguringState
linphone_core_start(lc);
}
static int linphone_core_serialization_ref = 0;
static void linphone_core_activate_log_serialization_if_needed(void) {
@ -1929,30 +1930,16 @@ static void apply_jitter_value(LinphoneCore *lc, int value, MSFormatType stype){
}
}
/**
* Sets the nominal audio jitter buffer size in milliseconds.
* The value takes effect immediately for all running and pending calls, if any.
* A value of 0 disables the jitter buffer.
*
* @ingroup media_parameters
**/
void linphone_core_set_audio_jittcomp(LinphoneCore *lc, int value)
void linphone_core_set_audio_jittcomp(LinphoneCore *lc, int milliseconds)
{
lc->rtp_conf.audio_jitt_comp=value;
apply_jitter_value(lc, value, MSAudio);
lc->rtp_conf.audio_jitt_comp=milliseconds;
apply_jitter_value(lc, milliseconds, MSAudio);
}
/**
* Sets the nominal video jitter buffer size in milliseconds.
* The value takes effect immediately for all running and pending calls, if any.
* A value of 0 disables the jitter buffer.
*
* @ingroup media_parameters
**/
void linphone_core_set_video_jittcomp(LinphoneCore *lc, int value)
void linphone_core_set_video_jittcomp(LinphoneCore *lc, int milliseconds)
{
lc->rtp_conf.video_jitt_comp=value;
apply_jitter_value(lc, value, MSVideo);
lc->rtp_conf.video_jitt_comp=milliseconds;
apply_jitter_value(lc, milliseconds, MSVideo);
}
void linphone_core_set_rtp_no_xmit_on_audio_mute(LinphoneCore *lc,bool_t rtp_no_xmit_on_audio_mute){
@ -2562,87 +2549,9 @@ void linphone_core_iterate(LinphoneCore *lc){
}
}
static LinphoneAddress* _linphone_core_destroy_addr_if_not_sip( LinphoneAddress* addr ){
if( linphone_address_is_sip(addr) ) {
return addr;
} else {
linphone_address_destroy(addr);
return NULL;
}
}
/**
* Interpret a call destination as supplied by the user, and returns a fully qualified
* LinphoneAddress.
*
* @ingroup call_control
*
* A sip address should look like DisplayName \<sip:username\@domain:port\> .
* Basically this function performs the following tasks
* - if a phone number is entered, prepend country prefix of the default proxy
* configuration, eventually escape the '+' by 00.
* - if no domain part is supplied, append the domain name of the default proxy
* - if no sip: is present, prepend it
*
* The result is a syntaxically correct SIP address.
**/
LinphoneAddress * linphone_core_interpret_url(LinphoneCore *lc, const char *url){
enum_lookup_res_t *enumres=NULL;
char *enum_domain=NULL;
LinphoneProxyConfig *proxy=lc->default_proxy;
char *tmpurl;
LinphoneAddress *uri;
if (*url=='\0') return NULL;
if (is_enum(url,&enum_domain)){
linphone_core_notify_display_status(lc,_("Looking for telephone number destination..."));
if (enum_lookup(enum_domain,&enumres)<0){
linphone_core_notify_display_status(lc,_("Could not resolve this number."));
ms_free(enum_domain);
return NULL;
}
ms_free(enum_domain);
tmpurl=enumres->sip_address[0];
uri=linphone_address_new(tmpurl);
enum_lookup_res_free(enumres);
return _linphone_core_destroy_addr_if_not_sip(uri);
}
/* check if we have a "sip:" or a "sips:" */
if ( (strstr(url,"sip:")==NULL) && (strstr(url,"sips:")==NULL) ){
/* this doesn't look like a true sip uri */
if (strchr(url,'@')!=NULL){
/* seems like sip: is missing !*/
tmpurl=ms_strdup_printf("sip:%s",url);
uri=linphone_address_new(tmpurl);
ms_free(tmpurl);
if (uri){
return _linphone_core_destroy_addr_if_not_sip(uri);
}
}
if (proxy!=NULL){
/* append the proxy domain suffix */
const char *identity=linphone_proxy_config_get_identity(proxy);
char normalized_username[128];
uri=linphone_address_new(identity);
if (uri==NULL){
return NULL;
}
linphone_address_set_display_name(uri,NULL);
linphone_proxy_config_normalize_number(proxy,url,normalized_username,
sizeof(normalized_username));
linphone_address_set_username(uri,normalized_username);
return _linphone_core_destroy_addr_if_not_sip(uri);
}else return NULL;
}
uri=linphone_address_new(url);
if (uri!=NULL){
return _linphone_core_destroy_addr_if_not_sip(uri);
}
return NULL;
LinphoneProxyConfig *proxy = linphone_core_get_default_proxy_config(lc);
return linphone_proxy_config_normalize_sip_uri(proxy, url);
}
/**
@ -3361,12 +3270,13 @@ int linphone_core_start_update_call(LinphoneCore *lc, LinphoneCall *call){
**/
int linphone_core_update_call(LinphoneCore *lc, LinphoneCall *call, const LinphoneCallParams *params){
int err=0;
LinphoneCallState nextstate;
LinphoneCallState nextstate, initial_state;
#if defined(VIDEO_ENABLED) && defined(BUILD_UPNP)
bool_t has_video = FALSE;
#endif
switch(call->state){
switch(initial_state=call->state){
case LinphoneCallIncomingReceived:
case LinphoneCallIncomingEarlyMedia:
case LinphoneCallOutgoingRinging:
@ -3419,7 +3329,11 @@ int linphone_core_update_call(LinphoneCore *lc, LinphoneCall *call, const Linpho
}
}
#endif //defined(VIDEO_ENABLED) && defined(BUILD_UPNP)
err = linphone_core_start_update_call(lc, call);
if ((err = linphone_core_start_update_call(lc, call)) && call->state!=initial_state) {
/*Restore initial state*/
linphone_call_set_state(call,initial_state,NULL);
}
}else{
#ifdef VIDEO_ENABLED
if ((call->videostream != NULL) && (call->state == LinphoneCallStreamsRunning)) {
@ -5065,7 +4979,7 @@ static void toggle_video_preview(LinphoneCore *lc, bool_t val){
video_preview_set_size(lc->previewstream,vsize);
if (display_filter)
video_preview_set_display_filter_name(lc->previewstream,display_filter);
if (lc->preview_window_id!=0)
if (lc->preview_window_id != NULL)
video_preview_set_native_window_id(lc->previewstream,lc->preview_window_id);
video_preview_set_fps(lc->previewstream,linphone_core_get_preferred_framerate(lc));
video_preview_start(lc->previewstream,lc->video_conf.device);
@ -5365,7 +5279,7 @@ float linphone_core_get_static_picture_fps(LinphoneCore *lc) {
*
* @ingroup media_parameters
**/
unsigned long linphone_core_get_native_video_window_id(const LinphoneCore *lc){
void * linphone_core_get_native_video_window_id(const LinphoneCore *lc){
if (lc->video_window_id) {
/* case where the video id was previously set by the app*/
return lc->video_window_id;
@ -5381,13 +5295,17 @@ unsigned long linphone_core_get_native_video_window_id(const LinphoneCore *lc){
}
/* unsets the video id for all calls (indeed it may be kept by filters or videostream object itself by paused calls)*/
static void unset_video_window_id(LinphoneCore *lc, bool_t preview, unsigned long id){
static void unset_video_window_id(LinphoneCore *lc, bool_t preview, void *id){
#ifdef VIDEO_ENABLED
LinphoneCall *call;
MSList *elem;
#endif
if (id!=0 && id!=-1) {
if ((id != NULL)
#ifndef _WIN32
&& ((unsigned long)id != (unsigned long)-1)
#endif
){
ms_error("Invalid use of unset_video_window_id()");
return;
}
@ -5404,13 +5322,12 @@ static void unset_video_window_id(LinphoneCore *lc, bool_t preview, unsigned lon
#endif
}
/**
* @ingroup media_parameters
* Set the native video window id where the video is to be displayed.
* For MacOS, Linux, Windows: if not set or zero the core will create its own window, unless the special id -1 is given.
**/
void linphone_core_set_native_video_window_id(LinphoneCore *lc, unsigned long id){
if (id==0 || id==(unsigned long)-1){
void linphone_core_set_native_video_window_id(LinphoneCore *lc, void *id){
if ((id == NULL)
#ifndef _WIN32
|| ((unsigned long)id == (unsigned long)-1)
#endif
){
unset_video_window_id(lc,FALSE,id);
}
lc->video_window_id=id;
@ -5429,7 +5346,7 @@ void linphone_core_set_native_video_window_id(LinphoneCore *lc, unsigned long id
*
* @ingroup media_parameters
**/
unsigned long linphone_core_get_native_preview_window_id(const LinphoneCore *lc){
void * linphone_core_get_native_preview_window_id(const LinphoneCore *lc){
if (lc->preview_window_id){
/*case where the id was set by the app previously*/
return lc->preview_window_id;
@ -5452,8 +5369,12 @@ unsigned long linphone_core_get_native_preview_window_id(const LinphoneCore *lc)
* This has to be used in conjonction with linphone_core_use_preview_window().
* MacOS, Linux, Windows: if not set or zero the core will create its own window, unless the special id -1 is given.
**/
void linphone_core_set_native_preview_window_id(LinphoneCore *lc, unsigned long id){
if (id==0 || id==(unsigned long)-1){
void linphone_core_set_native_preview_window_id(LinphoneCore *lc, void *id){
if ((id == NULL)
#ifndef _WIN32
|| ((unsigned long)id == (unsigned long)-1)
#endif
) {
unset_video_window_id(lc,TRUE,id);
}
lc->preview_window_id=id;
@ -6020,7 +5941,8 @@ void sip_config_uninit(LinphoneCore *lc)
sal_iterate(lc->sal);
for(elem=config->proxies;elem!=NULL;elem=ms_list_next(elem)){
LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)(elem->data);
still_registered|=linphone_proxy_config_is_registered(cfg);
LinphoneRegistrationState state = linphone_proxy_config_get_state(cfg);
still_registered|=(state==LinphoneRegistrationOk||state==LinphoneRegistrationProgress);
}
ms_usleep(100000);
}
@ -6474,6 +6396,21 @@ LinphonePayloadType* linphone_core_find_payload_type(LinphoneCore* lc, const cha
return NULL;
}
const char* linphone_configuring_state_to_string(LinphoneConfiguringState cs){
switch(cs){
case LinphoneConfiguringSuccessful:
return "LinphoneConfiguringSuccessful";
break;
case LinphoneConfiguringFailed:
return "LinphoneConfiguringFailed";
break;
case LinphoneConfiguringSkipped:
return "LinphoneConfiguringSkipped";
break;
}
return NULL;
}
const char *linphone_global_state_to_string(LinphoneGlobalState gs){
switch(gs){
case LinphoneGlobalOff:

View file

@ -598,7 +598,7 @@ LINPHONE_PUBLIC void linphone_player_close(LinphonePlayer *obj);
LINPHONE_PUBLIC void linphone_player_destroy(LinphonePlayer *obj);
/**
* @brief Create an independent media file player.
* Create an independent media file player.
* This player support WAVE and MATROSKA formats.
* @param lc A LinphoneCore object
* @param snd_card Playback sound card. If NULL, the sound card set in LinphoneCore will be used
@ -606,10 +606,10 @@ LINPHONE_PUBLIC void linphone_player_destroy(LinphonePlayer *obj);
* @param window_id Id of the drawing window. Depend of video out
* @return A pointer on the new instance. NULL if faild.
*/
LINPHONE_PUBLIC LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, unsigned long window_id);
LINPHONE_PUBLIC LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id);
/**
* @brief Check whether Matroksa format is supported by the player
* Check whether Matroksa format is supported by the player
* @return TRUE if it is supported
*/
LINPHONE_PUBLIC bool_t linphone_local_player_matroska_supported(void);
@ -721,6 +721,47 @@ LINPHONE_PUBLIC const char *linphone_call_get_remote_user_agent(LinphoneCall *ca
LINPHONE_PUBLIC const char *linphone_call_get_remote_contact(LinphoneCall *call);
LINPHONE_PUBLIC float linphone_call_get_play_volume(LinphoneCall *call);
LINPHONE_PUBLIC float linphone_call_get_record_volume(LinphoneCall *call);
/**
* Get speaker volume gain.
* If the sound backend supports it, the returned gain is equal to the gain set
* with the system mixer.
*
* @param call The call.
* @return Percenatge of the max supported volume gain. Valid values are in [ 0.0 : 1.0 ].
* In case of failure, a negative value is returned
*/
LINPHONE_PUBLIC float linphone_call_get_speaker_volume_gain(const LinphoneCall *call);
/**
* Set speaker volume gain.
* If the sound backend supports it, the new gain will synchronized with the system mixer.
*
* @param call The call.
* @param volume Percentage of the max supported gain. Valid values are in [ 0.0 : 1.0 ].
*/
LINPHONE_PUBLIC void linphone_call_set_speaker_volume_gain(LinphoneCall *call, float volume);
/**
* Get microphone volume gain.
* If the sound backend supports it, the returned gain is equal to the gain set
* with the system mixer.
*
* @param call The call.
* @return double Percenatge of the max supported volume gain. Valid values are in [ 0.0 : 1.0 ].
* In case of failure, a negative value is returned
*/
LINPHONE_PUBLIC float linphone_call_get_microphone_volume_gain(const LinphoneCall *call);
/**
* Set microphone volume gain.
* If the sound backend supports it, the new gain will synchronized with the system mixer.
*
* @param call The call.
* @param volume Percentage of the max supported gain. Valid values are in [ 0.0 : 1.0 ].
*/
LINPHONE_PUBLIC void linphone_call_set_microphone_volume_gain(LinphoneCall *call, float volume);
LINPHONE_PUBLIC float linphone_call_get_current_quality(LinphoneCall *call);
LINPHONE_PUBLIC float linphone_call_get_average_quality(LinphoneCall *call);
LINPHONE_PUBLIC const char* linphone_call_get_authentication_token(LinphoneCall *call);
@ -774,14 +815,14 @@ LINPHONE_PUBLIC void linphone_call_cancel_dtmfs(LinphoneCall *call);
* Get the native window handle of the video window, casted as an unsigned long.
* @ingroup media_parameters
**/
LINPHONE_PUBLIC unsigned long linphone_call_get_native_video_window_id(const LinphoneCall *call);
LINPHONE_PUBLIC void * linphone_call_get_native_video_window_id(const LinphoneCall *call);
/**
* Set the native video window id where the video is to be displayed.
* For MacOS, Linux, Windows: if not set or 0 a window will be automatically created, unless the special id -1 is given.
* @ingroup media_parameters
**/
LINPHONE_PUBLIC void linphone_call_set_native_video_window_id(LinphoneCall *call, unsigned long id);
LINPHONE_PUBLIC void linphone_call_set_native_video_window_id(LinphoneCall *call, void * id);
/**
* Return TRUE if this call is currently part of a conference
@ -867,323 +908,8 @@ typedef enum _LinphoneRegistrationState{
* @param cs sate
*/
LINPHONE_PUBLIC const char *linphone_registration_state_to_string(LinphoneRegistrationState cs);
LINPHONE_PUBLIC LinphoneProxyConfig *linphone_proxy_config_new(void);
/**
* Acquire a reference to the proxy config.
* @param[in] cfg The proxy config.
* @return The same proxy config.
**/
LINPHONE_PUBLIC LinphoneProxyConfig *linphone_proxy_config_ref(LinphoneProxyConfig *cfg);
/**
* Release reference to the proxy config.
* @param[in] cfg The proxy config.
**/
LINPHONE_PUBLIC void linphone_proxy_config_unref(LinphoneProxyConfig *cfg);
/**
* Retrieve the user pointer associated with the proxy config.
* @param[in] cfg The proxy config.
* @return The user pointer associated with the proxy config.
**/
LINPHONE_PUBLIC void *linphone_proxy_config_get_user_data(const LinphoneProxyConfig *cfg);
/**
* Assign a user pointer to the proxy config.
* @param[in] cfg The proxy config.
* @param[in] ud The user pointer to associate with the proxy config.
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_user_data(LinphoneProxyConfig *cfg, void *ud);
LINPHONE_PUBLIC int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *obj, const char *server_addr);
LINPHONE_PUBLIC int linphone_proxy_config_set_identity(LinphoneProxyConfig *obj, const char *identity);
LINPHONE_PUBLIC int linphone_proxy_config_set_route(LinphoneProxyConfig *obj, const char *route);
/**
* Sets the registration expiration time in seconds.
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_expires(LinphoneProxyConfig *obj, int expires);
#define linphone_proxy_config_expires linphone_proxy_config_set_expires
/**
* Indicates either or not, REGISTRATION must be issued for this #LinphoneProxyConfig .
* <br> In case this #LinphoneProxyConfig has been added to #LinphoneCore, follows the linphone_proxy_config_edit() rule.
* @param obj object pointer
* @param val if true, registration will be engaged
*/
LINPHONE_PUBLIC void linphone_proxy_config_enable_register(LinphoneProxyConfig *obj, bool_t val);
#define linphone_proxy_config_enableregister linphone_proxy_config_enable_register
LINPHONE_PUBLIC void linphone_proxy_config_edit(LinphoneProxyConfig *obj);
LINPHONE_PUBLIC int linphone_proxy_config_done(LinphoneProxyConfig *obj);
/**
* Indicates either or not, PUBLISH must be issued for this #LinphoneProxyConfig .
* <br> In case this #LinphoneProxyConfig has been added to #LinphoneCore, follows the linphone_proxy_config_edit() rule.
* @param obj object pointer
* @param val if true, publish will be engaged
*
*/
LINPHONE_PUBLIC void linphone_proxy_config_enable_publish(LinphoneProxyConfig *obj, bool_t val);
/**
* Set the publish expiration time in second.
* @param obj proxy config
* @param expires in second
* */
LINPHONE_PUBLIC void linphone_proxy_config_set_publish_expires(LinphoneProxyConfig *obj, int expires);
/**
* get the publish expiration time in second. Default value is the registration expiration value.
* @param obj proxy config
* @return expires in second
* */
LINPHONE_PUBLIC int linphone_proxy_config_get_publish_expires(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC void linphone_proxy_config_set_dial_escape_plus(LinphoneProxyConfig *cfg, bool_t val);
LINPHONE_PUBLIC void linphone_proxy_config_set_dial_prefix(LinphoneProxyConfig *cfg, const char *prefix);
/**
* Indicates whether quality statistics during call should be stored and sent to a collector according to RFC 6035.
* @param[in] cfg #LinphoneProxyConfig object
* @param[in] enable True to sotre quality statistics and sent them to the collector, false to disable it.
*/
LINPHONE_PUBLIC void linphone_proxy_config_enable_quality_reporting(LinphoneProxyConfig *cfg, bool_t enable);
/**
* Indicates whether quality statistics during call should be stored and sent to a collector according to RFC 6035.
* @param[in] cfg #LinphoneProxyConfig object
* @return True if quality repotring is enabled, false otherwise.
*/
LINPHONE_PUBLIC bool_t linphone_proxy_config_quality_reporting_enabled(LinphoneProxyConfig *cfg);
/**
* Set the route of the collector end-point when using quality reporting. This SIP address
* should be used on server-side to process packets directly before discarding packets. Collector address
* should be a non existing account and will not receive any messages.
* If NULL, reports will be send to the proxy domain.
* @param[in] cfg #LinphoneProxyConfig object
* @param[in] collector route of the collector end-point, if NULL PUBLISH will be sent to the proxy domain.
*/
LINPHONE_PUBLIC void linphone_proxy_config_set_quality_reporting_collector(LinphoneProxyConfig *cfg, const char *collector);
/**
* Get the route of the collector end-point when using quality reporting. This SIP address
* should be used on server-side to process packets directly before discarding packets. Collector address
* should be a non existing account and will not receive any messages.
* If NULL, reports will be send to the proxy domain.
* @param[in] cfg #LinphoneProxyConfig object
* @return The SIP address of the collector end-point.
*/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_quality_reporting_collector(const LinphoneProxyConfig *cfg);
/**
* Set the interval between 2 interval reports sending when using quality reporting. If call exceed interval size, an
* interval report will be sent to the collector. On call termination, a session report will be sent
* for the remaining period. Value must be 0 (disabled) or positive.
* @param[in] cfg #LinphoneProxyConfig object
* @param[in] interval The interval in seconds, 0 means interval reports are disabled.
*/
LINPHONE_PUBLIC void linphone_proxy_config_set_quality_reporting_interval(LinphoneProxyConfig *cfg, uint8_t interval);
/**
* Get the interval between interval reports when using quality reporting.
* @param[in] cfg #LinphoneProxyConfig object
* @return The interval in seconds, 0 means interval reports are disabled.
*/
LINPHONE_PUBLIC int linphone_proxy_config_get_quality_reporting_interval(LinphoneProxyConfig *cfg);
/**
* Get the registration state of the given proxy config.
* @param[in] obj #LinphoneProxyConfig object.
* @return The registration state of the proxy config.
**/
LINPHONE_PUBLIC LinphoneRegistrationState linphone_proxy_config_get_state(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC bool_t linphone_proxy_config_is_registered(const LinphoneProxyConfig *obj);
/**
* Get the domain name of the given proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The domain name of the proxy config.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_domain(const LinphoneProxyConfig *cfg);
/**
* Get the realm of the given proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The realm of the proxy config.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_realm(const LinphoneProxyConfig *cfg);
/**
* Set the realm of the given proxy config.
* @param[in] cfg #LinphoneProxyConfig object.
* @param[in] realm New realm value.
* @return The realm of the proxy config.
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_realm(LinphoneProxyConfig *cfg, const char * realm);
LINPHONE_PUBLIC const char *linphone_proxy_config_get_route(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC const char *linphone_proxy_config_get_identity(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC bool_t linphone_proxy_config_publish_enabled(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC const char *linphone_proxy_config_get_server_addr(const LinphoneProxyConfig *obj);
#define linphone_proxy_config_get_addr linphone_proxy_config_get_server_addr
LINPHONE_PUBLIC int linphone_proxy_config_get_expires(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC bool_t linphone_proxy_config_register_enabled(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC void linphone_proxy_config_refresh_register(LinphoneProxyConfig *obj);
LINPHONE_PUBLIC void linphone_proxy_config_pause_register(LinphoneProxyConfig *obj);
LINPHONE_PUBLIC const char *linphone_proxy_config_get_contact_parameters(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC void linphone_proxy_config_set_contact_parameters(LinphoneProxyConfig *obj, const char *contact_params);
LINPHONE_PUBLIC void linphone_proxy_config_set_contact_uri_parameters(LinphoneProxyConfig *obj, const char *contact_uri_params);
LINPHONE_PUBLIC const char* linphone_proxy_config_get_contact_uri_parameters(const LinphoneProxyConfig *obj);
/**
* Get the #LinphoneCore object to which is associated the #LinphoneProxyConfig.
* @param[in] obj #LinphoneProxyConfig object.
* @return The #LinphoneCore object to which is associated the #LinphoneProxyConfig.
**/
LINPHONE_PUBLIC LinphoneCore * linphone_proxy_config_get_core(const LinphoneProxyConfig *obj);
LINPHONE_PUBLIC bool_t linphone_proxy_config_get_dial_escape_plus(const LinphoneProxyConfig *cfg);
LINPHONE_PUBLIC const char * linphone_proxy_config_get_dial_prefix(const LinphoneProxyConfig *cfg);
/**
* Get the reason why registration failed when the proxy config state is LinphoneRegistrationFailed.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The reason why registration failed for this proxy config.
**/
LINPHONE_PUBLIC LinphoneReason linphone_proxy_config_get_error(const LinphoneProxyConfig *cfg);
/**
* Get detailed information why registration failed when the proxy config state is LinphoneRegistrationFailed.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The details why registration failed for this proxy config.
**/
LINPHONE_PUBLIC const LinphoneErrorInfo *linphone_proxy_config_get_error_info(const LinphoneProxyConfig *cfg);
/**
* Get the transport from either service route, route or addr.
* @param[in] cfg #LinphoneProxyConfig object.
* @return The transport as a string (I.E udp, tcp, tls, dtls)
**/
LINPHONE_PUBLIC const char* linphone_proxy_config_get_transport(const LinphoneProxyConfig *cfg);
/* destruction is called automatically when removing the proxy config */
LINPHONE_PUBLIC void linphone_proxy_config_destroy(LinphoneProxyConfig *cfg);
LINPHONE_PUBLIC void linphone_proxy_config_set_sip_setup(LinphoneProxyConfig *cfg, const char *type);
LINPHONE_PUBLIC SipSetupContext *linphone_proxy_config_get_sip_setup_context(LinphoneProxyConfig *cfg);
LINPHONE_PUBLIC SipSetup *linphone_proxy_config_get_sip_setup(LinphoneProxyConfig *cfg);
/**
* Detect if the given input is a phone number or not.
* @param proxy #LinphoneProxyConfig argument, unused yet but may contain useful data. Can be NULL.
* @param username string to parse.
* @return TRUE if input is a phone number, FALSE otherwise.
**/
LINPHONE_PUBLIC bool_t linphone_proxy_config_is_phone_number(LinphoneProxyConfig *proxy, const char *username);
/**
* Normalize a human readable phone number into a basic string. 888-444-222 becomes 888444222
* or +33888444222 depending on the #LinphoneProxyConfig object. However this argument is OPTIONNAL
* and if not provided, a default one will be used.
* This function will always generate a normalized username; if input is not a phone number, output will be a copy of input.
* @param proxy #LinphoneProxyConfig object containing country code and/or escape symbol. If NULL passed, will use default configuration.
* @param username the string to parse
* @param result the newly normalized number
* @param result_len the size of the normalized number \a result
* @return TRUE if a phone number was recognized, FALSE otherwise.
*/
LINPHONE_PUBLIC bool_t linphone_proxy_config_normalize_number(LinphoneProxyConfig *proxy, const char *username,
char *result, size_t result_len);
/**
* Set default privacy policy for all calls routed through this proxy.
* @param cfg #LinphoneProxyConfig object to be modified
* @param privacy LinphonePrivacy to configure privacy
* */
LINPHONE_PUBLIC void linphone_proxy_config_set_privacy(LinphoneProxyConfig *cfg, LinphonePrivacyMask privacy);
/**
* Get default privacy policy for all calls routed through this proxy.
* @param cfg #LinphoneProxyConfig object
* @return Privacy mode
* */
LINPHONE_PUBLIC LinphonePrivacyMask linphone_proxy_config_get_privacy(const LinphoneProxyConfig *cfg);
/**
* Set the http file transfer server to be used for content type application/vnd.gsma.rcs-ft-http+xml
* @param cfg #LinphoneProxyConfig object to be modified
* @param server_url URL of the file server like https://file.linphone.org/upload.php
* */
LINPHONE_PUBLIC void linphone_proxy_config_set_file_transfer_server(LinphoneProxyConfig *cfg, const char * server_url);
/**
* Get the http file transfer server to be used for content type application/vnd.gsma.rcs-ft-http+xml
* @param cfg #LinphoneProxyConfig object
* @return URL of the file server like https://file.linphone.org/upload.php
* */
LINPHONE_PUBLIC const char* linphone_proxy_config_get_file_transfer_server(const LinphoneProxyConfig *cfg);
/**
* Indicates whether AVPF/SAVPF must be used for calls using this proxy config.
* @param[in] cfg #LinphoneProxyConfig object
* @param[in] enable True to enable AVPF/SAVF, false to disable it.
* @deprecated use linphone_proxy_config_set_avpf_mode()
*/
LINPHONE_PUBLIC void linphone_proxy_config_enable_avpf(LinphoneProxyConfig *cfg, bool_t enable);
/**
* Indicates whether AVPF/SAVPF is being used for calls using this proxy config.
* @param[in] cfg #LinphoneProxyConfig object
* @return True if AVPF/SAVPF is enabled, false otherwise.
* @deprecated use linphone_proxy_config_set_avpf_mode()
*/
LINPHONE_PUBLIC bool_t linphone_proxy_config_avpf_enabled(LinphoneProxyConfig *cfg);
/**
* Set the interval between regular RTCP reports when using AVPF/SAVPF.
* @param[in] cfg #LinphoneProxyConfig object
* @param[in] interval The interval in seconds (between 0 and 5 seconds).
*/
LINPHONE_PUBLIC void linphone_proxy_config_set_avpf_rr_interval(LinphoneProxyConfig *cfg, uint8_t interval);
/**
* Get the interval between regular RTCP reports when using AVPF/SAVPF.
* @param[in] cfg #LinphoneProxyConfig object
* @return The interval in seconds.
*/
LINPHONE_PUBLIC uint8_t linphone_proxy_config_get_avpf_rr_interval(const LinphoneProxyConfig *cfg);
/**
* Get enablement status of RTCP feedback (also known as AVPF profile).
* @param[in] cfg the proxy config
* @return the enablement mode, which can be LinphoneAVPFDefault (use LinphoneCore's mode), LinphoneAVPFEnabled (avpf is enabled), or LinphoneAVPFDisabled (disabled).
**/
LINPHONE_PUBLIC LinphoneAVPFMode linphone_proxy_config_get_avpf_mode(const LinphoneProxyConfig *cfg);
/**
* Enable the use of RTCP feedback (also known as AVPF profile).
* @param[in] cfg the proxy config
* @param[in] mode the enablement mode, which can be LinphoneAVPFDefault (use LinphoneCore's mode), LinphoneAVPFEnabled (avpf is enabled), or LinphoneAVPFDisabled (disabled).
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_avpf_mode(LinphoneProxyConfig *cfg, LinphoneAVPFMode mode);
/**
* Obtain the value of a header sent by the server in last answer to REGISTER.
* @param cfg the proxy config object
* @param header_name the header name for which to fetch corresponding value
* @return the value of the queried header.
**/
LINPHONE_PUBLIC const char *linphone_proxy_config_get_custom_header(LinphoneProxyConfig *cfg, const char *header_name);
/**
* Set the value of a custom header sent to the server in REGISTERs request.
* @param cfg the proxy config object
* @param header_name the header name
* @param header_value the header's value
**/
LINPHONE_PUBLIC void linphone_proxy_config_set_custom_header(LinphoneProxyConfig *cfg, const char *header_name, const char *header_value);
/**
* @}
**/
#include "linphone_proxy_config.h"
struct _LinphoneAuthInfo;
@ -2141,6 +1867,12 @@ typedef enum _LinphoneConfiguringState {
LinphoneConfiguringSkipped
} LinphoneConfiguringState;
/**
* Converts a _LinphoneConfiguringState enum to a string.
* @ingroup misc
**/
LINPHONE_PUBLIC const char *linphone_configuring_state_to_string(LinphoneConfiguringState cs);
/**
* Callback prototype for configuring status changes notification
* @param lc the LinphoneCore
@ -2498,6 +2230,7 @@ LINPHONE_PUBLIC void linphone_core_remove_listener(LinphoneCore *lc, const Linph
/*sets the user-agent string in sip messages, ideally called just after linphone_core_new() or linphone_core_init() */
LINPHONE_PUBLIC void linphone_core_set_user_agent(LinphoneCore *lc, const char *ua_name, const char *version);
/** @deprecated Use linphone_proxy_config_normalize_sip_uri instead. */
LINPHONE_PUBLIC LinphoneAddress * linphone_core_interpret_url(LinphoneCore *lc, const char *url);
LINPHONE_PUBLIC LinphoneCall * linphone_core_invite(LinphoneCore *lc, const char *url);
@ -2916,6 +2649,10 @@ LINPHONE_PUBLIC bool_t linphone_core_check_payload_type_usability(LinphoneCore *
*/
LINPHONE_PUBLIC LinphoneProxyConfig * linphone_core_create_proxy_config(LinphoneCore *lc);
/**
* Add a proxy configuration.
* This will start registration on the proxy, if registration is enabled.
**/
LINPHONE_PUBLIC int linphone_core_add_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *config);
/**
@ -2925,6 +2662,12 @@ LINPHONE_PUBLIC int linphone_core_add_proxy_config(LinphoneCore *lc, LinphonePro
**/
LINPHONE_PUBLIC void linphone_core_clear_proxy_config(LinphoneCore *lc);
/**
* Removes a proxy configuration.
*
* LinphoneCore will then automatically unregister and place the proxy configuration
* on a deleted list. For that reason, a removed proxy does NOT need to be freed.
**/
LINPHONE_PUBLIC void linphone_core_remove_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *config);
/**
@ -2939,10 +2682,28 @@ LINPHONE_PUBLIC const MSList *linphone_core_get_proxy_config_list(const Linphone
LINPHONE_PUBLIC void linphone_core_set_default_proxy_index(LinphoneCore *lc, int index);
/**
* @return the default proxy configuration, that is the one used to determine the current identity.
* @deprecated Use linphone_core_get_default_proxy_config() instead.
**/
LINPHONE_PUBLIC int linphone_core_get_default_proxy(LinphoneCore *lc, LinphoneProxyConfig **config);
/**
* @return the default proxy configuration, that is the one used to determine the current identity.
* @param[in] lc LinphoneCore object
* @return The default proxy configuration.
**/
LINPHONE_PUBLIC LinphoneProxyConfig * linphone_core_get_default_proxy_config(LinphoneCore *lc);
/**
* Sets the default proxy.
*
* This default proxy must be part of the list of already entered LinphoneProxyConfig.
* Toggling it as default will make LinphoneCore use the identity associated with
* the proxy configuration in all incoming and outgoing calls.
* @param[in] lc LinphoneCore object
* @param[in] config The proxy configuration to use as the default one.
**/
LINPHONE_PUBLIC void linphone_core_set_default_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *config);
/**
@ -2989,7 +2750,14 @@ LINPHONE_PUBLIC bool_t linphone_core_audio_adaptive_jittcomp_enabled(LinphoneCor
LINPHONE_PUBLIC int linphone_core_get_audio_jittcomp(LinphoneCore *lc);
LINPHONE_PUBLIC void linphone_core_set_audio_jittcomp(LinphoneCore *lc, int value);
/**
* Sets the nominal audio jitter buffer size in milliseconds.
* The value takes effect immediately for all running and pending calls, if any.
* A value of 0 disables the jitter buffer.
*
* @ingroup media_parameters
**/
LINPHONE_PUBLIC void linphone_core_set_audio_jittcomp(LinphoneCore *lc, int milliseconds);
/**
* Enable or disable the video adaptive jitter compensation.
@ -3009,7 +2777,14 @@ LINPHONE_PUBLIC bool_t linphone_core_video_adaptive_jittcomp_enabled(LinphoneCor
LINPHONE_PUBLIC int linphone_core_get_video_jittcomp(LinphoneCore *lc);
LINPHONE_PUBLIC void linphone_core_set_video_jittcomp(LinphoneCore *lc, int value);
/**
* Sets the nominal video jitter buffer size in milliseconds.
* The value takes effect immediately for all running and pending calls, if any.
* A value of 0 disables the jitter buffer.
*
* @ingroup media_parameters
**/
LINPHONE_PUBLIC void linphone_core_set_video_jittcomp(LinphoneCore *lc, int milliseconds);
LINPHONE_PUBLIC int linphone_core_get_audio_port(const LinphoneCore *lc);
@ -3560,11 +3335,28 @@ LINPHONE_PUBLIC int linphone_core_set_static_picture_fps(LinphoneCore *lc, float
LINPHONE_PUBLIC float linphone_core_get_static_picture_fps(LinphoneCore *lc);
/*function to be used for eventually setting window decorations (icons, title...)*/
LINPHONE_PUBLIC unsigned long linphone_core_get_native_video_window_id(const LinphoneCore *lc);
LINPHONE_PUBLIC void linphone_core_set_native_video_window_id(LinphoneCore *lc, unsigned long id);
LINPHONE_PUBLIC void * linphone_core_get_native_video_window_id(const LinphoneCore *lc);
LINPHONE_PUBLIC unsigned long linphone_core_get_native_preview_window_id(const LinphoneCore *lc);
LINPHONE_PUBLIC void linphone_core_set_native_preview_window_id(LinphoneCore *lc, unsigned long id);
/**
* @ingroup media_parameters
* For MacOS, Linux, Windows: core will create its own window
* */
#define LINPHONE_VIDEO_DISPLAY_AUTO (void*)((unsigned long) 0)
/**
* @ingroup media_parameters
* For MacOS, Linux, Windows: do nothing
* */
#define LINPHONE_VIDEO_DISPLAY_NONE (void*)((unsigned long) -1)
/**
* @ingroup media_parameters
* Set the native video window id where the video is to be displayed.
* For MacOS, Linux, Windows: if not set or LINPHONE_VIDEO_DISPLAY_AUTO the core will create its own window, unless the special id LINPHONE_VIDEO_DISPLAY_NONE is given.
**/
LINPHONE_PUBLIC void linphone_core_set_native_video_window_id(LinphoneCore *lc, void *id);
LINPHONE_PUBLIC void * linphone_core_get_native_preview_window_id(const LinphoneCore *lc);
LINPHONE_PUBLIC void linphone_core_set_native_preview_window_id(LinphoneCore *lc, void *id);
/**
* Tells the core to use a separate window for local camera preview video, instead of
@ -3777,6 +3569,11 @@ LINPHONE_PUBLIC LinphoneCall* linphone_core_find_call_from_uri(const LinphoneCor
LINPHONE_PUBLIC int linphone_core_add_to_conference(LinphoneCore *lc, LinphoneCall *call);
LINPHONE_PUBLIC int linphone_core_add_all_to_conference(LinphoneCore *lc);
LINPHONE_PUBLIC int linphone_core_remove_from_conference(LinphoneCore *lc, LinphoneCall *call);
/**
* Indicates whether the local participant is part of a conference.
* @param lc the linphone core
* @return TRUE if the local participant is in a conference, FALSE otherwise.
**/
LINPHONE_PUBLIC bool_t linphone_core_is_in_conference(const LinphoneCore *lc);
LINPHONE_PUBLIC int linphone_core_enter_conference(LinphoneCore *lc);
LINPHONE_PUBLIC int linphone_core_leave_conference(LinphoneCore *lc);

View file

@ -3488,7 +3488,7 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setVideoWindowId(JNIEnv*
obj = env->NewGlobalRef(obj);
ms_message("Java_org_linphone_core_LinphoneCoreImpl_setVideoWindowId(): NewGlobalRef(%p)",obj);
}else ms_message("Java_org_linphone_core_LinphoneCoreImpl_setVideoWindowId(): setting to NULL");
linphone_core_set_native_video_window_id((LinphoneCore*)lc,(unsigned long)obj);
linphone_core_set_native_video_window_id((LinphoneCore*)lc,(void *)obj);
if (oldWindow != NULL) {
ms_message("Java_org_linphone_core_LinphoneCoreImpl_setVideoWindowId(): DeleteGlobalRef(%p)",oldWindow);
env->DeleteGlobalRef(oldWindow);
@ -3504,7 +3504,7 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setPreviewWindowId(JNIEn
obj = env->NewGlobalRef(obj);
ms_message("Java_org_linphone_core_LinphoneCoreImpl_setPreviewWindowId(): NewGlobalRef(%p)",obj);
}else ms_message("Java_org_linphone_core_LinphoneCoreImpl_setPreviewWindowId(): setting to NULL");
linphone_core_set_native_preview_window_id((LinphoneCore*)lc,(unsigned long)obj);
linphone_core_set_native_preview_window_id((LinphoneCore*)lc,(void *)obj);
if (oldWindow != NULL) {
ms_message("Java_org_linphone_core_LinphoneCoreImpl_setPreviewWindowId(): DeleteGlobalRef(%p)",oldWindow);
env->DeleteGlobalRef(oldWindow);
@ -6031,7 +6031,7 @@ extern "C" void Java_org_linphone_core_LinphonePlayerImpl_destroy(JNIEnv *env, j
extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createLocalPlayer(JNIEnv *env, jobject jobj, jlong ptr, jobject window) {
jobject window_ref = NULL;
window_ref = env->NewGlobalRef(window);
LinphonePlayer *player = linphone_core_create_local_player((LinphoneCore *)ptr, NULL, "MSAndroidDisplay", (unsigned long)window_ref);
LinphonePlayer *player = linphone_core_create_local_player((LinphoneCore *)ptr, NULL, "MSAndroidDisplay", (void *)window_ref);
if(player == NULL) {
ms_error("Fails to create a player");
if(window_ref) env->DeleteGlobalRef(window_ref);

View file

@ -32,7 +32,7 @@ static void _local_player_close(LinphonePlayer *obj);
static void _local_player_destroy(LinphonePlayer *obj);
static void _local_player_eof_callback(void *user_data);
LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, unsigned long window_id) {
LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id) {
LinphonePlayer *obj = ms_new0(LinphonePlayer, 1);
if(snd_card == NULL) snd_card = lc->sound_conf.ring_sndcard;
if(video_out == NULL) video_out = linphone_core_get_video_display_filter(lc);

View file

@ -85,6 +85,17 @@ struct _LpConfig{
int readonly;
};
char* lp_realpath(const char* file, char* name) {
#ifdef _WIN32
return ms_strdup(file);
#else
char * output = realpath(file, name);
char * msoutput = ms_strdup(output);
free(output);
return msoutput;
#endif
}
LpItem * lp_item_new(const char *key, const char *value){
LpItem *item=lp_new0(LpItem,1);
item->key=ortp_strdup(key);
@ -359,16 +370,16 @@ LpConfig *lp_config_new_with_factory(const char *config_filename, const char *fa
LpConfig *lpconfig=lp_new0(LpConfig,1);
lpconfig->refcnt=1;
if (config_filename!=NULL){
ms_message("Using (r/w) config information from %s", config_filename);
lpconfig->filename=ortp_strdup(config_filename);
lpconfig->tmpfilename=ortp_strdup_printf("%s.tmp",config_filename);
lpconfig->filename=lp_realpath(config_filename, NULL);
lpconfig->tmpfilename=ortp_strdup_printf("%s.tmp",lpconfig->filename);
ms_message("Using (r/w) config information from %s", lpconfig->filename);
#if !defined(_WIN32)
{
struct stat fileStat;
if ((stat(config_filename,&fileStat) == 0) && (S_ISREG(fileStat.st_mode))) {
if ((stat(lpconfig->filename,&fileStat) == 0) && (S_ISREG(fileStat.st_mode))) {
/* make existing configuration files non-group/world-accessible */
if (chmod(config_filename, S_IRUSR | S_IWUSR) == -1) {
if (chmod(lpconfig->filename, S_IRUSR | S_IWUSR) == -1) {
ms_warning("unable to correct permissions on "
"configuration file: %s", strerror(errno));
}
@ -400,14 +411,16 @@ LpConfig *lp_config_new_with_factory(const char *config_filename, const char *fa
}
int lp_config_read_file(LpConfig *lpconfig, const char *filename){
FILE* f=fopen(filename,"r");
char* path = lp_realpath(filename, NULL);
FILE* f=fopen(path,"r");
if (f!=NULL){
ms_message("Reading config information from %s", filename);
ms_message("Reading config information from %s", path);
lp_config_parse(lpconfig,f);
fclose(f);
return 0;
}
ms_warning("Fail to open file %s",filename);
ms_warning("Fail to open file %s",path);
ms_free(path);
return -1;
}
@ -725,9 +738,11 @@ bool_t lp_config_relative_file_exists(const LpConfig *lpconfig, const char *file
} else {
char *dir = _lp_config_dirname(lpconfig->filename);
char *filepath = ms_strdup_printf("%s/%s", dir, filename);
FILE *file = fopen(filepath, "r");
char *realfilepath = lp_realpath(filepath, NULL);
FILE *file = fopen(realfilepath, "r");
ms_free(dir);
ms_free(filepath);
ms_free(realfilepath);
if (file) {
fclose(file);
}
@ -740,15 +755,17 @@ void lp_config_write_relative_file(const LpConfig *lpconfig, const char *filenam
if(strlen(data) > 0) {
char *dir = _lp_config_dirname(lpconfig->filename);
char *filepath = ms_strdup_printf("%s/%s", dir, filename);
FILE *file = fopen(filepath, "w");
char *realfilepath = lp_realpath(filepath, NULL);
FILE *file = fopen(realfilepath, "w");
if(file != NULL) {
fprintf(file, "%s", data);
fclose(file);
} else {
ms_error("Could not open %s for write", filepath);
ms_error("Could not open %s for write", realfilepath);
}
ms_free(dir);
ms_free(filepath);
ms_free(realfilepath);
} else {
ms_warning("%s has not been created because there is no data to write", filename);
}
@ -758,27 +775,30 @@ int lp_config_read_relative_file(const LpConfig *lpconfig, const char *filename,
char *dir;
char *filepath;
FILE *file;
char* realfilepath;
if (lpconfig->filename == NULL) return -1;
dir = _lp_config_dirname(lpconfig->filename);
filepath = ms_strdup_printf("%s/%s", dir, filename);
file = fopen(filepath, "r");
realfilepath = lp_realpath(filepath, NULL);
file = fopen(realfilepath, "r");
if(file != NULL) {
if(fread(data, 1, max_length, file)<=0) {
ms_error("%s could not be loaded. %s", filepath, strerror(errno));
ms_error("%s could not be loaded. %s", realfilepath, strerror(errno));
goto err;
}
fclose(file);
} else {
ms_error("Could not open %s for read. %s", filepath, strerror(errno));
ms_error("Could not open %s for read. %s", realfilepath, strerror(errno));
goto err;
}
ms_free(dir);
ms_free(filepath);
ms_free(realfilepath);
return 0;
err:
ms_free(dir);
ms_free(filepath);
ms_free(realfilepath);
return -1;
}

View file

@ -38,6 +38,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define MAX_PATH_SIZE 1024
#include "sqlite3.h"
#include <assert.h>
static ORTP_INLINE LinphoneChatMessage* get_transient_message(LinphoneChatRoom* cr, unsigned int storage_id){
MSList* transients = cr->transient_messages;
@ -286,6 +287,9 @@ void linphone_chat_room_mark_as_read(LinphoneChatRoom *cr){
char *buf;
if (lc->db==NULL) return ;
// optimization: do not modify the database if no message is marked as unread
if(linphone_chat_room_get_unread_messages_count(cr) == 0) return;
peer=linphone_address_as_string_uri_only(linphone_chat_room_get_peer_address(cr));
buf=sqlite3_mprintf("UPDATE history SET read=%i WHERE remoteContact = %Q;",
@ -293,6 +297,8 @@ void linphone_chat_room_mark_as_read(LinphoneChatRoom *cr){
linphone_sql_request(lc->db,buf);
sqlite3_free(buf);
ms_free(peer);
cr->unread_count = 0;
}
void linphone_chat_room_update_url(LinphoneChatRoom *cr, LinphoneChatMessage *msg) {
@ -315,6 +321,9 @@ static int linphone_chat_room_get_messages_count(LinphoneChatRoom *cr, bool_t un
int returnValue;
if (lc->db==NULL) return 0;
// optimization: do not read database if the count is already available in memory
if(unread_only && cr->unread_count >= 0) return cr->unread_count;
peer=linphone_address_as_string_uri_only(linphone_chat_room_get_peer_address(cr));
buf=sqlite3_mprintf("SELECT count(*) FROM history WHERE remoteContact = %Q %s;",peer,unread_only?"AND read = 0":"");
@ -327,6 +336,11 @@ static int linphone_chat_room_get_messages_count(LinphoneChatRoom *cr, bool_t un
sqlite3_finalize(selectStatement);
sqlite3_free(buf);
ms_free(peer);
/* no need to test the sign of cr->unread_count here
* because it has been tested above */
if(unread_only) cr->unread_count = numrows;
return numrows;
}
@ -347,6 +361,11 @@ void linphone_chat_room_delete_message(LinphoneChatRoom *cr, LinphoneChatMessage
buf=sqlite3_mprintf("DELETE FROM history WHERE id = %i;", msg->storage_id);
linphone_sql_request(lc->db,buf);
sqlite3_free(buf);
if(cr->unread_count >= 0 && !msg->is_read) {
assert(cr->unread_count > 0);
cr->unread_count--;
}
}
void linphone_chat_room_delete_history(LinphoneChatRoom *cr){
@ -361,6 +380,8 @@ void linphone_chat_room_delete_history(LinphoneChatRoom *cr){
linphone_sql_request(lc->db,buf);
sqlite3_free(buf);
ms_free(peer);
if(cr->unread_count > 0) cr->unread_count = 0;
}
MSList *linphone_chat_room_get_history_range(LinphoneChatRoom *cr, int startm, int endm){

View file

@ -266,7 +266,7 @@ bool_t linphone_core_check_payload_type_usability(LinphoneCore *lc, const Payloa
}
bool_t lp_spawn_command_line_sync(const char *command, char **result,int *command_ret){
#if !defined(_WIN32_WCE)
#if !defined(_WIN32_WCE) && !defined(LINPHONE_WINDOWS_UNIVERSAL)
FILE *f=popen(command,"r");
if (f!=NULL){
int err;

View file

@ -81,7 +81,7 @@ static void fill_buddy_info(BLReq *blreq, BuddyInfo *bi, GHashTable *ht){
}else{
strncpy(bi->sip_uri,tmp,sizeof(bi->sip_uri)-1);
}
fill_item(ht,"street",bi->address.street,sizeof(bi->address.street));
fill_item(ht,"zip",bi->address.zip,sizeof(bi->address.zip));
fill_item(ht,"city",bi->address.town,sizeof(bi->address.town));
@ -105,7 +105,7 @@ static void fill_buddy_info(BLReq *blreq, BuddyInfo *bi, GHashTable *ht){
ms_error("Fail to fetch the image %i",status);
}
}
}
static MSList * make_buddy_list(BLReq *blreq, GValue *retval){
@ -156,7 +156,7 @@ static int xml_rpc_parse_response(BLReq *blreq, SoupMessage *sm){
#if SERIALIZE_HTTPS
/*on windows libsoup support for threads with gnutls is not yet functionnal (only in git)
This will come in next release of libsoup, probably.
This will come in next release of libsoup, probably.
In the meantime, we are forced to serialize all soup https processing with a big
ugly global mutex...*/
@ -191,27 +191,26 @@ static int lookup_buddy(SipSetupContext *ctx, BLReq *req){
LinphoneProxyConfig *cfg=sip_setup_context_get_proxy_config(ctx);
LinphoneCore *lc=linphone_proxy_config_get_core(cfg);
LpConfig *config=linphone_core_get_config(lc);
const char *identity=linphone_proxy_config_get_identity(cfg);
LinphoneAddress *from=linphone_proxy_config_get_identity_address(cfg);
const char *url=lp_config_get_string(config,"BuddyLookup","url",NULL);
const LinphoneAuthInfo *aa;
const LinphoneAuthInfo *auth_info;
SoupMessage *sm;
LinphoneAddress *from;
char *identity;
if (url==NULL){
ms_error("No url defined for BuddyLookup in config file, aborting search.");
return -1;
}
from=linphone_address_new(identity);
if (from==NULL){
ms_error("Could not parse identity %s",identity);
return -1;
auth_info=linphone_core_find_auth_info(lc,linphone_address_get_domain(from),linphone_address_get_username(from));
if (auth_info) {
ms_message("There is a password: %s",auth_info->passwd);
} else {
ms_message("No password for %s on %s",linphone_address_get_username(from),linphone_address_get_domain(from));
}
aa=linphone_core_find_auth_info(lc,linphone_address_get_domain(from),linphone_address_get_username(from));
if (aa) ms_message("There is a password: %s",aa->passwd);
else ms_message("No password for %s on %s",linphone_address_get_username(from),linphone_address_get_domain(from));
sm=build_xmlrpc_request(identity, aa ? aa->passwd : NULL, req->base.key, linphone_address_get_domain(from), url, req->base.max_results);
linphone_address_destroy(from);
identity=linphone_proxy_config_get_identity(cfg);
sm=build_xmlrpc_request(identity, auth_info ? auth_info->passwd : NULL, req->base.key, linphone_address_get_domain(from), url, req->base.max_results);
ms_free(identity);
req->msg=sm;
ortp_thread_create(&req->th,NULL,process_xml_rpc_request,req);
if (!sm) return -1;

View file

@ -66,7 +66,20 @@ extern "C" {
#endif
#ifdef ENABLE_NLS
#ifdef _MSC_VER
// prevent libintl.h from re-defining fprintf and vfprintf
#ifndef fprintf
#define fprintf fprintf
#endif
#ifndef vfprintf
#define vfprintf vfprintf
#endif
#define _GL_STDIO_H
#endif
#include <libintl.h>
#ifndef _
#define _(String) dgettext(GETTEXT_PACKAGE,String)
#endif
@ -252,7 +265,7 @@ struct _LinphoneCall{
StunCandidate ac,vc; /*audio video ip/port discovered by STUN*/
struct _AudioStream *audiostream; /**/
struct _VideoStream *videostream;
unsigned long video_window_id;
void *video_window_id;
MSAudioEndpoint *endpoint; /*used for conferencing*/
char *refer_to;
LinphoneCallParams *params;
@ -340,7 +353,6 @@ void _linphone_proxy_config_release(LinphoneProxyConfig *cfg);
* Can be NULL
* */
const LinphoneAddress* linphone_proxy_config_get_service_route(const LinphoneProxyConfig* cfg);
LINPHONE_PUBLIC char* linphone_proxy_config_get_contact(const LinphoneProxyConfig *cfg);
void linphone_friend_close_subscriptions(LinphoneFriend *lf);
void linphone_friend_update_subscribes(LinphoneFriend *fr, LinphoneProxyConfig *cfg, bool_t only_when_registered);
@ -478,6 +490,9 @@ typedef enum _LinphoneProxyConfigAddressComparisonResult{
LINPHONE_PUBLIC LinphoneProxyConfigAddressComparisonResult linphone_proxy_config_address_equal(const LinphoneAddress *a, const LinphoneAddress *b);
LINPHONE_PUBLIC LinphoneProxyConfigAddressComparisonResult linphone_proxy_config_is_server_config_changed(const LinphoneProxyConfig* obj);
/**
* unregister without moving the register_enable flag
*/
void _linphone_proxy_config_unregister(LinphoneProxyConfig *obj);
void _linphone_proxy_config_release_ops(LinphoneProxyConfig *obj);
@ -494,9 +509,9 @@ struct _LinphoneProxyConfig
struct _LinphoneCore *lc;
char *reg_proxy;
char *reg_identity;
LinphoneAddress* identity_address;
char *reg_route;
char *quality_reporting_collector;
char *domain;
char *realm;
char *contact_params;
char *contact_uri_params;
@ -528,6 +543,7 @@ struct _LinphoneProxyConfig
LinphoneAddress *saved_proxy;
LinphoneAddress *saved_identity;
/*---*/
LinphoneAddress *pending_contact; /*use to store previous contact in case of network failure*/
};
@ -556,6 +572,7 @@ struct _LinphoneChatRoom{
LinphoneAddress *peer_url;
MSList *messages_hist;
MSList *transient_messages;
int unread_count;
LinphoneIsComposingState remote_is_composing;
LinphoneIsComposingState is_composing;
belle_sip_source_t *remote_composing_refresh_timer;
@ -784,8 +801,8 @@ struct _LinphoneCore
int audio_bw; /*IP bw consumed by audio codec, set as soon as used codec is known, its purpose is to know the remaining bw for video*/
LinphoneCoreWaitingCallback wait_cb;
void *wait_ctx;
unsigned long video_window_id;
unsigned long preview_window_id;
void *video_window_id;
void *preview_window_id;
time_t netup_time; /*time when network went reachable */
struct _EcCalibrator *ecc;
MSList *hooks;
@ -1066,6 +1083,7 @@ struct _LinphoneAccountCreator {
char *route;
char *email;
bool_t subscribe_to_newsletter;
char *display_name;
};
BELLE_SIP_DECLARE_VPTR(LinphoneAccountCreator);

File diff suppressed because it is too large Load diff

View file

@ -481,7 +481,8 @@ void linphone_reporting_update_media_info(LinphoneCall * call, int stats_type) {
reporting_session_report_t * report = call->log->reporting.reports[stats_type];
char * dialog_id;
if (!media_report_enabled(call, stats_type))
// call->op might be already released if hanging up in state LinphoneCallOutgoingInit
if (!media_report_enabled(call, stats_type) || call->op == NULL)
return;
dialog_id = sal_op_get_dialog_id(call->op);

View file

@ -143,12 +143,44 @@ static gboolean scroll_to_end(GtkTextView *w){
return FALSE;
}
static gboolean word_starts_with(const GtkTextIter *word_start, const char *prefix) {
gboolean res;
gchar *schema = NULL;
GtkTextIter end = *word_start;
gtk_text_iter_forward_chars(&end, strlen(prefix));
schema = gtk_text_iter_get_slice(word_start, &end);
res = ( g_strcmp0(schema, prefix) == 0 );
g_free(schema);
return res;
}
static gboolean is_space(gunichar ch, gpointer user_data) {
return g_unichar_isspace(ch);
}
static void insert_link_tags(GtkTextBuffer *buffer, const GtkTextIter *begin, const GtkTextIter *end) {
GtkTextIter iter = *begin;
while(gtk_text_iter_compare(&iter, end) < 0) {
if(gtk_text_iter_starts_word(&iter) && (
word_starts_with(&iter, "http://") ||
word_starts_with(&iter, "https://") ||
word_starts_with(&iter, "ftp://") ||
word_starts_with(&iter, "ftps://"))) {
GtkTextIter uri_begin = iter;
if(gtk_text_iter_forward_find_char(&iter, is_space, NULL, end)) {
gtk_text_buffer_apply_tag_by_name(buffer, "link", &uri_begin, &iter);
}
}
gtk_text_iter_forward_char(&iter);
}
}
void linphone_gtk_push_text(GtkWidget *w, const LinphoneAddress *from,
gboolean me,LinphoneChatRoom *cr,LinphoneChatMessage *msg, gboolean hist){
GtkTextView *text=GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textview"));
GtkTextBuffer *buffer=gtk_text_view_get_buffer(text);
GtkTextIter iter,begin;
int off;
GtkTextIter iter, link_start;
GtkTextMark *link_start_mark = NULL;
char *from_str=linphone_address_as_string_uri_only(from);
gchar *from_message=(gchar *)g_object_get_data(G_OBJECT(w),"from_message");
GHashTable *table=(GHashTable*)g_object_get_data(G_OBJECT(w),"table");
@ -159,40 +191,35 @@ void linphone_gtk_push_text(GtkWidget *w, const LinphoneAddress *from,
int tnow_day;
int tnow_year;
gtk_text_buffer_get_start_iter(buffer,&begin);
gtk_text_buffer_get_end_iter(buffer,&iter);
off=gtk_text_iter_get_offset(&iter);
gtk_text_buffer_get_end_iter(buffer, &iter);
if(g_strcmp0(from_message,from_str)!=0){
gtk_text_buffer_get_iter_at_offset(buffer,&iter,off);
gtk_text_buffer_get_end_iter(buffer,&iter);
gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, get_display_name(from), -1,
"bold", me ? "bg" : NULL, me ? "font_black" : NULL, NULL);
gtk_text_buffer_get_end_iter(buffer,&iter);
"from", me ? "me" : NULL, NULL);
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter, " : ", -1,
"bold", me ? "bg" : NULL, me ? "font_black" : NULL, NULL);
gtk_text_buffer_get_end_iter(buffer,&iter);
"from", me ? "me" : NULL, NULL);
gtk_text_buffer_insert(buffer,&iter,"\n",-1);
g_free(from_message);
g_object_set_data(G_OBJECT(w),"from_message",g_strdup(from_str));
ms_free(from_str);
}
gtk_text_buffer_get_end_iter(buffer,&iter);
link_start_mark = gtk_text_buffer_create_mark(buffer, NULL, &iter, TRUE);
gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, linphone_chat_message_get_text(msg), -1,
"margin", me ? "bg" : NULL, me ? "font_black" : NULL, NULL);
gtk_text_buffer_get_end_iter(buffer,&iter);
"body", me ? "me" : NULL, NULL);
gtk_text_buffer_insert(buffer,&iter,"\n",-1);
gtk_text_buffer_get_end_iter(buffer,&iter);
gtk_text_buffer_get_iter_at_mark(buffer, &link_start, link_start_mark);
insert_link_tags(buffer, &link_start, &iter);
gtk_text_buffer_delete_mark(buffer, link_start_mark);
t=linphone_chat_message_get_time(msg);
switch (linphone_chat_message_get_state (msg)){
case LinphoneChatMessageStateInProgress:
{
g_hash_table_insert(table,(gpointer)msg,GINT_TO_POINTER(gtk_text_iter_get_line(&iter)));
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,"Sending ..",-1,
"right","small","italic","font_grey","bg",NULL);
"status", me ? "me" : NULL, NULL);
g_object_set_data(G_OBJECT(w),"table",table);
break;
}
case LinphoneChatMessageStateDelivered:
{
tnow=time(NULL);
tm=localtime(&tnow);
tnow_day=tm->tm_yday;
@ -204,28 +231,17 @@ void linphone_gtk_push_text(GtkWidget *w, const LinphoneAddress *from,
strftime(buf,80,"%H:%M",tm);
}
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,buf,-1,
"right","small","italic","font_grey",me ? "bg":NULL,NULL);
"status", me ? "me" : NULL, NULL);
break;
}
case LinphoneChatMessageStateNotDelivered:
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,"Message not sent",-1,
"right","small","italic","font_grey",me ? "bg":NULL,NULL);
break;
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,"Message not sent",-1,
"status", me ? "me" : NULL, NULL);
break;
default : gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,"Sending ..",-1,
"right","small","italic","font_grey",me ? "bg":NULL,NULL);
"status", me ? "me" : NULL, NULL);
}
gtk_text_buffer_get_end_iter(buffer,&iter);
gtk_text_buffer_insert(buffer,&iter,"\n",-1);
g_idle_add((GSourceFunc)scroll_to_end,text);
ms_free(from_str);
}
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);
}
void update_chat_state_message(LinphoneChatMessageState state,LinphoneChatMessage *msg){
@ -278,7 +294,7 @@ void update_chat_state_message(LinphoneChatMessageState state,LinphoneChatMessag
default : result="Sending ..";
}
gtk_text_buffer_insert_with_tags_by_name(b,&iter,result,-1,
"right","small","italic","font_grey","bg",NULL);
"status", "me", NULL);
g_object_set_data(G_OBJECT(page),"table",table);
}
}
@ -375,6 +391,95 @@ static void linphone_gtk_chat_add_contact(const LinphoneAddress *addr){
linphone_gtk_show_friends();
}
static GdkColor *_linphone_gtk_chatroom_get_link_color(GtkWidget *chatview) {
GValue color_value = {0};
g_value_init(&color_value, GDK_TYPE_COLOR);
gtk_style_get_style_property(
gtk_widget_get_style(chatview),
G_OBJECT_TYPE(chatview),
"link-color", &color_value);
return (GdkColor *)g_value_get_boxed(&color_value);
}
static gboolean link_event_handler(GtkTextTag *tag, GObject *text_view,GdkEvent *event, GtkTextIter *iter, gpointer user_data) {
if(event->type == GDK_BUTTON_PRESS) {
GtkTextIter uri_begin = *iter;
GtkTextIter uri_end = *iter;
gchar *uri = NULL;
gtk_text_iter_backward_to_tag_toggle(&uri_begin, tag);
gtk_text_iter_forward_to_tag_toggle(&uri_end, tag);
uri = gtk_text_iter_get_slice(&uri_begin, &uri_end);
if(((GdkEventButton *)event)->button == 1) {
GError *error = NULL;
gtk_show_uri(NULL, uri, gdk_event_get_time(event), &error);
if(error) {
g_warning("Could not open %s from chat: %s", uri, error->message);
g_error_free(error);
}
} else if(((GdkEventButton *)event)->button == 3) {
GtkMenu *menu = GTK_MENU(g_object_get_data(text_view, "link_ctx_menu"));
g_object_set_data_full(G_OBJECT(menu), "uri", g_strdup(uri), g_free);
gtk_menu_popup(menu, NULL, NULL, NULL, NULL, 3, gdk_event_get_time(event));
}
g_free(uri);
return TRUE;
}
return FALSE;
}
static void chatroom_enable_hand_cursor(GdkWindow *window, gboolean hand_cursor_enabled) {
#if GTK_CHECK_VERSION(2,22,0)
GdkCursor *cursor = gdk_window_get_cursor(window);
GdkCursor *new_cursor = NULL;
if(!hand_cursor_enabled && gdk_cursor_get_cursor_type(cursor) != GDK_XTERM) {
new_cursor = gdk_cursor_new(GDK_XTERM);
} else if(hand_cursor_enabled && gdk_cursor_get_cursor_type(cursor) != GDK_HAND1) {
new_cursor = gdk_cursor_new(GDK_HAND1);
}
if(new_cursor) {
gdk_window_set_cursor(window, new_cursor);
gdk_cursor_unref(new_cursor);
}
#endif
}
static gboolean chatroom_event(GtkWidget *widget, GdkEvent *event, gpointer user_data) {
gint wx, wy, bx, by;
GtkTextView *chatroom = GTK_TEXT_VIEW(widget);
GtkTextBuffer *buffer = gtk_text_view_get_buffer(chatroom);
GtkTextTag *link_tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buffer), "link");
GdkWindow *window = gtk_text_view_get_window(chatroom, GTK_TEXT_WINDOW_TEXT);
GtkTextIter iter;
if(event->type == GDK_MOTION_NOTIFY) {
GdkEventMotion *motion_ev = (GdkEventMotion *)event;
wx = motion_ev->x;
wy = motion_ev->y;
gtk_text_view_window_to_buffer_coords(chatroom, GTK_TEXT_WINDOW_TEXT, wx, wy, &bx, &by);
gtk_text_view_get_iter_at_location(chatroom, &iter, bx, by);
if(gtk_text_iter_has_tag(&iter, link_tag)) {
chatroom_enable_hand_cursor(window, TRUE);
} else {
chatroom_enable_hand_cursor(window, FALSE);
}
}
return FALSE;
}
static gboolean copy_uri_into_clipboard_handler(GtkMenuItem *menuitem, gpointer user_data) {
GtkWidget *menu = gtk_widget_get_parent(GTK_WIDGET(menuitem));
const gchar *uri = (const gchar *)g_object_get_data(G_OBJECT(menu), "uri");
GtkClipboard *clipboard = NULL;
GdkAtom clipboard_atom = gdk_atom_intern("CLIPBOARD", TRUE);
if(clipboard_atom == GDK_NONE) {
g_warning("Could not find CLIPBOARD atom");
return FALSE;
}
clipboard = gtk_clipboard_get(clipboard_atom);
if(uri) gtk_clipboard_set_text(clipboard, uri, -1);
return FALSE;
}
GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddress *with){
GtkWidget *chat_view=linphone_gtk_create_widget("main","chatroom_frame");
GtkWidget *main_window=linphone_gtk_get_main_window();
@ -389,11 +494,11 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres
MSList *messages;
GHashTable *table;
char *with_str;
GtkTextTag *tmp_tag;
GtkWidget *link_ctx_menu = gtk_menu_new();
GtkWidget *link_ctx_menu_copy_item = gtk_menu_item_new_with_label(_("Copy"));
with_str=linphone_address_as_string_uri_only(with);
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text),GTK_WRAP_WORD_CHAR);
gtk_text_view_set_editable(GTK_TEXT_VIEW(text),FALSE);
gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text),FALSE);
gtk_notebook_append_page(notebook,chat_view,create_tab_chat_header(cr,with));
idx = gtk_notebook_page_num(notebook, chat_view);
gtk_notebook_set_current_page(notebook, idx);
@ -402,24 +507,49 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres
g_object_set_data(G_OBJECT(chat_view),"cr",cr);
g_object_set_data(G_OBJECT(chat_view),"from_message",NULL);
g_object_set_data(G_OBJECT(chat_view),"table",table);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"right","justification", GTK_JUSTIFY_RIGHT,NULL);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"left","justification", GTK_JUSTIFY_LEFT,NULL);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"bold","weight", PANGO_WEIGHT_BOLD,NULL);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"italic","style", PANGO_STYLE_ITALIC,NULL);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"small","size",9*PANGO_SCALE,NULL);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"font_grey","foreground-gdk",&color_grey,NULL);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"font_black","foreground-gdk",&color_black,NULL);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"margin","indent",10,NULL);
gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"bg","paragraph-background-gdk",&color_light_grey,NULL);
gtk_text_buffer_create_tag(
gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"me",
"foreground_gdk", &color_black,
"paragraph-background-gdk", &color_light_grey,
NULL);
gtk_text_buffer_create_tag(
gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"from",
"weight", PANGO_WEIGHT_BOLD,
NULL);
gtk_text_buffer_create_tag(
gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"body",
"indent", 10,
NULL);
gtk_text_buffer_create_tag(
gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"status",
"size-points", 9.0,
"foreground_gdk", &color_grey,
"style", PANGO_STYLE_ITALIC,
"justification", GTK_JUSTIFY_RIGHT,
NULL);
tmp_tag = gtk_text_buffer_create_tag(
gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)),
"link",
"underline", PANGO_UNDERLINE_SINGLE,
"foreground_gdk", _linphone_gtk_chatroom_get_link_color(chat_view),
NULL);
g_signal_connect(G_OBJECT(tmp_tag), "event", G_CALLBACK(link_event_handler), NULL);
g_signal_connect(G_OBJECT(text), "event", G_CALLBACK(chatroom_event), NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(link_ctx_menu), link_ctx_menu_copy_item);
g_signal_connect(G_OBJECT(link_ctx_menu_copy_item), "activate", G_CALLBACK(copy_uri_into_clipboard_handler), NULL);
gtk_widget_show_all(link_ctx_menu);
g_object_set_data_full(G_OBJECT(text), "link_ctx_menu", link_ctx_menu, g_object_unref);
g_object_ref_sink(G_OBJECT(link_ctx_menu));
messages = linphone_chat_room_get_history(cr,NB_MSG_HIST);
display_history_message(chat_view,messages,with);
button = linphone_gtk_get_widget(chat_view,"send");

View file

@ -371,7 +371,6 @@ void linphone_gtk_create_in_call_view(LinphoneCall *call){
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;
@ -634,22 +633,45 @@ void linphone_gtk_uninit_audio_meter(GtkWidget *w){
}
}
typedef enum { VOLUME_CTRL_PLAYBACK, VOLUME_CTRL_RECORD } VolumeControlType;
static void volume_control_value_changed(GtkScaleButton *button, gdouble value, gpointer user_data) {
LinphoneCall *call = (LinphoneCall *)g_object_get_data(G_OBJECT(button), "call");
VolumeControlType type = (VolumeControlType)g_object_get_data(G_OBJECT(button), "type");
if(type == VOLUME_CTRL_PLAYBACK) {
linphone_call_set_speaker_volume_gain(call, value);
} else if(type == VOLUME_CTRL_RECORD) {
linphone_call_set_microphone_volume_gain(call, value);
}
}
static void volume_control_init(GtkWidget *vol_ctrl, VolumeControlType type, LinphoneCall *call) {
g_object_set_data(G_OBJECT(vol_ctrl), "call", call);
g_object_set_data(G_OBJECT(vol_ctrl), "type", (gpointer)type);
if(type == VOLUME_CTRL_PLAYBACK) {
gtk_scale_button_set_value(GTK_SCALE_BUTTON(vol_ctrl), linphone_call_get_speaker_volume_gain(call));
} else if(type == VOLUME_CTRL_RECORD) {
gtk_scale_button_set_value(GTK_SCALE_BUTTON(vol_ctrl), linphone_call_get_microphone_volume_gain(call));
}
g_signal_connect(G_OBJECT(vol_ctrl), "value-changed", G_CALLBACK(volume_control_value_changed), NULL);
}
void linphone_gtk_in_call_view_enable_audio_view(LinphoneCall *call, gboolean val){
GtkWidget *callview=(GtkWidget*)linphone_call_get_user_pointer(call);
GtkWidget *audio_view=linphone_gtk_get_widget(callview,"incall_audioview");
GtkWidget *mic=linphone_gtk_get_widget(callview,"incall_mic_icon");
GtkWidget *spk=linphone_gtk_get_widget(callview,"incall_spk_icon");
GtkWidget *mic_level=linphone_gtk_get_widget(callview,"mic_audiolevel");
GtkWidget *spk_level=linphone_gtk_get_widget(callview,"spk_audiolevel");
GdkPixbuf *pbuf;
GtkWidget *spk_vol_ctrl = linphone_gtk_get_widget(callview, "incall_spk_vol_ctrl_button");
GtkWidget *mic_vol_ctrl = linphone_gtk_get_widget(callview, "incall_mic_vol_ctrl_button");
gtk_image_set_from_pixbuf(GTK_IMAGE(mic),(pbuf=create_pixbuf("mic_active.png")));
g_object_unref(pbuf);
if (val){
gtk_image_set_from_pixbuf(GTK_IMAGE(spk),(pbuf=create_pixbuf("speaker.png")));
g_object_unref(pbuf);
linphone_gtk_init_audio_meter(mic_level,(get_volume_t)linphone_call_get_record_volume,call);
linphone_gtk_init_audio_meter(spk_level,(get_volume_t)linphone_call_get_play_volume,call);
volume_control_init(spk_vol_ctrl, VOLUME_CTRL_PLAYBACK, call);
volume_control_init(mic_vol_ctrl, VOLUME_CTRL_RECORD, call);
gtk_widget_show_all(audio_view);
}else{
linphone_gtk_uninit_audio_meter(mic_level);
@ -709,8 +731,6 @@ char *linphone_gtk_address(const LinphoneAddress *addr){
return ms_strdup(displayname);
}
void linphone_gtk_in_call_view_set_in_call(LinphoneCall *call){
GtkWidget *callview=(GtkWidget*)linphone_call_get_user_pointer(call);
GtkWidget *status=linphone_gtk_get_widget(callview,"in_call_status");

View file

@ -31,13 +31,25 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "ldap/ldapprovider.h"
#ifdef ENABLE_NLS
#ifdef _MSC_VER
// prevent libintl.h from re-defining fprintf and vfprintf
#ifndef fprintf
#define fprintf fprintf
#endif
#ifndef vfprintf
#define vfprintf vfprintf
#endif
#define _GL_STDIO_H
#endif
# include <libintl.h>
# undef _
# define _(String) dgettext (GETTEXT_PACKAGE,String)
#else
# define _(String) (String)
# define ngettext(singular,plural,number) ((number>1) ? (plural) : (singular) )
#endif
#endif // ENABLE_NLS
#undef N_
#define N_(str) (str)
@ -95,7 +107,6 @@ LINPHONE_PUBLIC void linphone_gtk_close_assistant(void);
LINPHONE_PUBLIC LinphoneCore *linphone_gtk_get_core(void);
LINPHONE_PUBLIC GtkWidget *linphone_gtk_get_main_window();
LINPHONE_PUBLIC void linphone_gtk_display_something(GtkMessageType type, const gchar *message);
LINPHONE_PUBLIC void linphone_gtk_start_call(GtkWidget *button);
LINPHONE_PUBLIC void linphone_gtk_call_terminated();
LINPHONE_PUBLIC void linphone_gtk_set_my_presence(LinphoneOnlineStatus ss);
LINPHONE_PUBLIC void linphone_gtk_show_parameters(void);
@ -228,6 +239,7 @@ LINPHONE_PUBLIC void linphone_gtk_logout_clicked(void);
LINPHONE_PUBLIC void linphone_gtk_about_response(GtkDialog *dialog, gint id);
LINPHONE_PUBLIC void linphone_gtk_show_about(void);
LINPHONE_PUBLIC void linphone_gtk_start_call(GtkWidget *w);
LINPHONE_PUBLIC void linphone_gtk_start_chat(GtkWidget *w);
LINPHONE_PUBLIC void linphone_gtk_uri_bar_activate(GtkWidget *w);
LINPHONE_PUBLIC void linphone_gtk_terminate_call(GtkWidget *button);
LINPHONE_PUBLIC void linphone_gtk_decline_clicked(GtkWidget *button);

View file

@ -39,7 +39,7 @@ static gboolean do_login_noprompt(LinphoneProxyConfig *cfg){
linphone_gtk_show_login_frame(cfg,TRUE);
return FALSE;
}
addr=linphone_address_new(linphone_proxy_config_get_identity(cfg));
addr=linphone_address_clone(linphone_proxy_config_get_identity_address(cfg));
linphone_address_set_username(addr,username);
tmp=linphone_address_as_string (addr);
do_login(ssctx,tmp,NULL,NULL);
@ -58,14 +58,14 @@ void linphone_gtk_show_login_frame(LinphoneProxyConfig *cfg, gboolean disable_au
const char *passwd=NULL;
const char *userid=NULL;
gboolean auto_login=linphone_gtk_get_ui_config_int("automatic_login",0);
if (auto_login && !disable_auto_login){
g_timeout_add(250,(GSourceFunc)do_login_noprompt,cfg);
return;
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(mw,"automatic_login")),auto_login);
{
const char *login_image=linphone_gtk_get_ui_config("login_image","linphone-banner.png");
if (login_image){
@ -95,7 +95,7 @@ void linphone_gtk_show_login_frame(LinphoneProxyConfig *cfg, gboolean disable_au
if (username)
linphone_address_set_username(from,username);
}
ai=linphone_core_find_auth_info(lc,linphone_proxy_config_get_domain(cfg),linphone_address_get_username(from),NULL);
/*display the last entered username, if not '?????'*/
if (linphone_address_get_username(from)[0]!='?')
@ -109,7 +109,7 @@ void linphone_gtk_show_login_frame(LinphoneProxyConfig *cfg, gboolean disable_au
passwd!=NULL ? passwd : "");
gtk_entry_set_text(GTK_ENTRY(linphone_gtk_get_widget(mw,"login_userid")),
userid ? userid : "");
linphone_address_destroy(from);
}
@ -150,7 +150,7 @@ void linphone_gtk_login_frame_connect_clicked(GtkWidget *button){
username=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(mw,"login_username")));
password=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(mw,"login_password")));
userid=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(mw,"login_userid")));
if (username==NULL || username[0]=='\0')
return;

View file

@ -191,10 +191,10 @@ char *linphone_gtk_get_config_file(const char *filename){
#define FACTORY_CONFIG_FILE "linphonerc.factory"
static char _factory_config_file[1024];
static const char *linphone_gtk_get_factory_config_file(){
char* path = NULL;
/*try accessing a local file first if exists*/
if (access(FACTORY_CONFIG_FILE,F_OK)==0){
snprintf(_factory_config_file,sizeof(_factory_config_file),
"%s",FACTORY_CONFIG_FILE);
path = ms_strdup(FACTORY_CONFIG_FILE);
} else {
char *progdir;
@ -206,33 +206,31 @@ static const char *linphone_gtk_get_factory_config_file(){
if (basename != NULL) {
basename ++;
*basename = '\0';
snprintf(_factory_config_file, sizeof(_factory_config_file),
"%s\\..\\%s", progdir, FACTORY_CONFIG_FILE);
} else {
if (workingdir!=NULL) {
snprintf(_factory_config_file, sizeof(_factory_config_file),
"%s\\%s", workingdir, FACTORY_CONFIG_FILE);
} else {
free(progdir);
return NULL;
}
path = ms_strdup_printf("%s\\..\\%s", progdir, FACTORY_CONFIG_FILE);
} else if (workingdir!=NULL) {
path = ms_strdup_printf("%s\\%s", workingdir, FACTORY_CONFIG_FILE);
}
#else
basename = strrchr(progdir, '/');
if (basename != NULL) {
basename ++;
*basename = '\0';
snprintf(_factory_config_file, sizeof(_factory_config_file),
"%s/../share/linphone/%s", progdir, FACTORY_CONFIG_FILE);
} else {
free(progdir);
return NULL;
path = ms_strdup_printf("%s/../share/linphone/%s", progdir, FACTORY_CONFIG_FILE);
}
#endif
free(progdir);
}
}
return _factory_config_file;
if (path) {
//use factory file only if it exists
if (access(path,F_OK)==0){
snprintf(_factory_config_file, sizeof(_factory_config_file), "%s", path);
ms_free(path);
return _factory_config_file;
}
ms_free(path);
}
return NULL;
}
LinphoneLDAPContactProvider* linphone_gtk_get_ldap(void){
@ -306,7 +304,7 @@ static void linphone_gtk_init_liblinphone(const char *config_file,
g_free(user_certificates_dir);
linphone_core_enable_video_capture(the_core, TRUE);
linphone_core_enable_video_display(the_core, TRUE);
linphone_core_set_native_video_window_id(the_core,-1);/*don't create the window*/
linphone_core_set_native_video_window_id(the_core,LINPHONE_VIDEO_DISPLAY_NONE);/*don't create the window*/
if (no_video) {
_linphone_gtk_enable_video(FALSE);
linphone_gtk_set_ui_config_int("videoselfview",0);
@ -403,11 +401,11 @@ GtkWidget *linphone_gtk_create_window(const char *window_name, GtkWidget *parent
gtk_builder_connect_signals(builder,w);
linphone_gtk_configure_window(w,window_name);
if(parent) {
gtk_window_set_modal(GTK_WINDOW(w), TRUE);
// gtk_window_set_modal(GTK_WINDOW(w), TRUE);
gtk_window_set_transient_for(GTK_WINDOW(w), GTK_WINDOW(parent));
gtk_window_set_position(GTK_WINDOW(w), GTK_WIN_POS_CENTER_ON_PARENT);
} else {
gtk_window_set_modal(GTK_WINDOW(w), FALSE);
// gtk_window_set_modal(GTK_WINDOW(w), FALSE);
}
return w;
}
@ -484,16 +482,16 @@ void linphone_gtk_display_something(GtkMessageType type,const gchar *message){
/* draw a question box. link to dialog_click callback */
dialog = gtk_message_dialog_new (
GTK_WINDOW(main_window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
"%s",
GTK_BUTTONS_YES_NO,
"%s",
(const gchar*)message);
/* connect to some callback : REVISIT */
/*
g_signal_connect_swapped (G_OBJECT (dialog), "response",
G_CALLBACK (dialog_click),
G_OBJECT (dialog));
G_CALLBACK (dialog_click),
G_OBJECT (dialog));
*/
/* actually show the box */
gtk_widget_show(dialog);
@ -501,15 +499,15 @@ void linphone_gtk_display_something(GtkMessageType type,const gchar *message){
else
{
dialog = gtk_message_dialog_new (GTK_WINDOW(main_window),
GTK_DIALOG_DESTROY_WITH_PARENT,
type,
GTK_BUTTONS_CLOSE,
"%s",
(const gchar*)message);
GTK_DIALOG_DESTROY_WITH_PARENT,
type,
GTK_BUTTONS_CLOSE,
"%s",
(const gchar*)message);
/* Destroy the dialog when the user responds to it (e.g. clicks a button) */
g_signal_connect_swapped (G_OBJECT (dialog), "response",
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (dialog));
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (dialog));
gtk_widget_show(dialog);
}
}
@ -531,7 +529,7 @@ void linphone_gtk_show_about(void){
GtkWidget *about;
const char *tmp;
GdkPixbuf *logo=create_pixbuf(
linphone_gtk_get_ui_config("logo","linphone-banner.png"));
linphone_gtk_get_ui_config("logo","linphone-banner.png"));
static const char *defcfg="defcfg";
about=linphone_gtk_create_window("about", the_ui);
@ -829,7 +827,7 @@ 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,"start_call"),TRUE);
gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"start_call"),TRUE);
}
if (linphone_gtk_use_in_call_view() && call)
linphone_gtk_in_call_view_terminate(call,error);
@ -840,31 +838,26 @@ static void linphone_gtk_update_call_buttons(LinphoneCall *call){
GtkWidget *mw=linphone_gtk_get_main_window();
const MSList *calls=linphone_core_get_calls(lc);
GtkWidget *button;
bool_t start_active=TRUE;
//bool_t stop_active=FALSE;
bool_t add_call=FALSE;
int call_list_size=ms_list_size(calls);
GtkWidget *conf_frame;
if (calls==NULL){
start_active=TRUE;
//stop_active=FALSE;
}else{
//stop_active=TRUE;
start_active=TRUE;
if (calls!=NULL){
add_call=TRUE;
}
button=linphone_gtk_get_widget(mw,"start_call");
gtk_widget_set_sensitive(button,start_active);
gtk_widget_set_visible(button,!add_call);
button=linphone_gtk_get_widget(mw,"start_chat");
gtk_widget_set_visible(button,!add_call);
button=linphone_gtk_get_widget(mw,"add_call");
gtk_widget_set_visible(button,add_call);
if (linphone_core_sound_resources_locked(lc) || (call && linphone_call_get_state(call)==LinphoneCallIncomingReceived)) {
gtk_widget_set_sensitive(button,FALSE);
} else {
gtk_widget_set_sensitive(button,start_active);
gtk_widget_set_sensitive(button,TRUE);
}
gtk_widget_set_visible(button,add_call);
//gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),stop_active);
conf_frame=(GtkWidget *)g_object_get_data(G_OBJECT(mw),"conf_frame");
@ -981,6 +974,18 @@ void linphone_gtk_start_call(GtkWidget *w){
}
void linphone_gtk_start_chat(GtkWidget *w){
GtkWidget *mw=gtk_widget_get_toplevel(w);
GtkWidget *uri_bar=linphone_gtk_get_widget(mw,"uribar");
const char *entered=gtk_entry_get_text(GTK_ENTRY(uri_bar));
LinphoneCore *lc=linphone_gtk_get_core();
LinphoneAddress *addr=linphone_core_interpret_url(lc,entered);
if (addr) {
linphone_gtk_friend_list_set_chat_conversation(addr);
linphone_address_destroy(addr);
}
}
void linphone_gtk_uri_bar_activate(GtkWidget *w){
linphone_gtk_start_call(w);
}
@ -1075,13 +1080,13 @@ static void linphone_gtk_new_unknown_subscriber(LinphoneCore *lc, LinphoneFriend
return;
}
message=g_strdup_printf(_("%s would like to add you to his contact list.\nWould you allow him to see your presence status or add him to your contact list ?\nIf you answer no, this person will be temporarily blacklisted."),url);
message=g_strdup_printf(_("%s would like to add you to his/her contact list.\nWould you add him/her to your contact list and allow him/her to see your presence status?\nIf you answer no, this person will be temporarily blacklisted."),url);
dialog = gtk_message_dialog_new (
GTK_WINDOW(linphone_gtk_get_main_window()),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
"%s",
GTK_BUTTONS_YES_NO,
"%s",
message);
g_free(message);
g_signal_connect(G_OBJECT (dialog), "response",
@ -1346,7 +1351,7 @@ static void linphone_gtk_call_updated_by_remote(LinphoneCall *call){
gboolean video_requested=linphone_call_params_video_enabled(rparams);
gboolean video_used=linphone_call_params_video_enabled(current_params);
g_message("Video used=%i, video requested=%i, automatically_accept=%i",
video_used,video_requested,pol->automatically_accept);
video_used,video_requested,pol->automatically_accept);
if (!video_used && video_requested && !pol->automatically_accept){
linphone_core_defer_call_update(lc,call);
{
@ -1356,13 +1361,13 @@ static void linphone_gtk_call_updated_by_remote(LinphoneCall *call){
if (dname==NULL) dname=linphone_address_get_username(addr);
if (dname==NULL) dname=linphone_address_get_domain(addr);
dialog=gtk_message_dialog_new(GTK_WINDOW(linphone_gtk_get_main_window()),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_YES_NO,
_("%s proposed to start video. Do you accept ?"),dname);
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_YES_NO,
_("%s proposed to start video. Do you accept ?"),dname);
g_object_set_data_full(G_OBJECT(dialog), "call", linphone_call_ref(call), (GDestroyNotify)linphone_call_unref);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(on_call_updated_response), NULL);
g_timeout_add(20000,(GSourceFunc)on_call_updated_timeout,dialog);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(on_call_updated_response), NULL);
g_timeout_add(20000,(GSourceFunc)on_call_updated_timeout,dialog);
gtk_widget_show(dialog);
}
}
@ -1470,7 +1475,7 @@ static void update_registration_status(LinphoneProxyConfig *cfg, LinphoneRegistr
}
static void linphone_gtk_registration_state_changed(LinphoneCore *lc, LinphoneProxyConfig *cfg,
LinphoneRegistrationState rs, const char *msg){
LinphoneRegistrationState rs, const char *msg){
switch (rs){
case LinphoneRegistrationOk:
if (cfg){
@ -1541,7 +1546,7 @@ static GtkWidget *create_icon_menu(){
#ifndef HAVE_GTK_OSX
void linphone_gtk_save_main_window_position(GtkWindow* mw, GdkEvent *event, gpointer data){
gtk_window_get_position(GTK_WINDOW(mw), &main_window_x, &main_window_y);
gtk_window_get_position(GTK_WINDOW(mw), &main_window_x, &main_window_y);
}
#endif
@ -1643,8 +1648,8 @@ void linphone_gtk_load_identities(void){
LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)elem->data;
gtk_list_store_append(store,&iter);
gtk_list_store_set(store,&iter,0,linphone_proxy_config_get_identity(cfg),1,
linphone_proxy_config_is_registered(cfg) ? GTK_STOCK_YES : NULL,
2,cfg,-1);
linphone_proxy_config_is_registered(cfg) ? GTK_STOCK_YES : NULL,
2,cfg,-1);
if (cfg==def) {
def_index=i;
}
@ -1707,6 +1712,7 @@ 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 *start_chat_icon;
static const char *search_icon;
static gboolean update_check_menu;
static gboolean buttons_have_borders;
@ -1716,8 +1722,9 @@ static void linphone_gtk_configure_main_window(){
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");
start_call_icon=linphone_gtk_get_ui_config("start_call_icon","call_start.png");
add_call_icon=linphone_gtk_get_ui_config("add_call_icon","call_add.png");
start_chat_icon=linphone_gtk_get_ui_config("start_chat_icon","chat_start.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);
@ -1730,16 +1737,22 @@ static void linphone_gtk_configure_main_window(){
}
if (start_call_icon){
gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"start_call")),
create_pixmap (start_call_icon));
create_pixmap (start_call_icon));
if (!buttons_have_borders)
gtk_button_set_relief(GTK_BUTTON(linphone_gtk_get_widget(w,"start_call")),GTK_RELIEF_NONE);
}
if (add_call_icon){
gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"add_call")),
create_pixmap (add_call_icon));
create_pixmap (add_call_icon));
if (!buttons_have_borders)
gtk_button_set_relief(GTK_BUTTON(linphone_gtk_get_widget(w,"add_call")),GTK_RELIEF_NONE);
}
if (start_chat_icon){
gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"start_chat")),
create_pixmap (start_chat_icon));
if (!buttons_have_borders)
gtk_button_set_relief(GTK_BUTTON(linphone_gtk_get_widget(w,"start_chat")),GTK_RELIEF_NONE);
}
if (search_icon){
GdkPixbuf *pbuf=create_pixbuf(search_icon);
if(pbuf) {

View file

@ -118,6 +118,9 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="border_width">4</property>
<property name="editable">False</property>
<property name="wrap_mode">word-char</property>
<property name="cursor_visible">False</property>
</object>
</child>
</object>
@ -399,67 +402,104 @@
</child>
<child>
<object class="GtkHBox" id="incall_audioview">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkImage" id="incall_mic_icon">
<object class="GtkHBox" id="incall_mic_vol_control">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-missing-image</property>
<property name="icon-size">1</property>
<child>
<object class="GtkVolumeButton" id="incall_mic_vol_ctrl_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="has_tooltip">True</property>
<property name="relief">none</property>
<property name="focus_on_click">False</property>
<property name="orientation">vertical</property>
<property name="icons">audio-volume-muted
audio-volume-high
audio-volume-low
audio-volume-medium</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkProgressBar" id="mic_audiolevel">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">5</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="padding">10</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkProgressBar" id="mic_audiolevel">
<property name="width_request">90</property>
<property name="height_request">10</property>
<object class="GtkHBox" id="incall_spk_vol_control">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkVolumeButton" id="incall_spk_vol_ctrl_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes">Click here to set the speakers volume</property>
<property name="relief">none</property>
<property name="focus_on_click">False</property>
<property name="orientation">vertical</property>
<property name="icons">audio-volume-muted
audio-volume-high
audio-volume-low
audio-volume-medium</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkProgressBar" id="spk_audiolevel">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">5</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="padding">10</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="incall_spk_icon">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-missing-image</property>
<property name="icon-size">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkProgressBar" id="spk_audiolevel">
<property name="width_request">90</property>
<property name="height_request">10</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">1</property>
<property name="pack_type">end</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">2</property>
<property name="padding">5</property>
<property name="position">3</property>
</packing>
</child>
@ -1021,6 +1061,19 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="keypad">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="linphone_gtk_create_keypad" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="add_call">
<property name="can_focus">True</property>
@ -1032,8 +1085,7 @@
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">6</property>
<property name="pack_type">end</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
<child>
@ -1046,22 +1098,21 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">6</property>
<property name="pack_type">end</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="keypad">
<object class="GtkButton" id="start_chat">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="linphone_gtk_create_keypad" swapped="no"/>
<signal name="clicked" handler="linphone_gtk_start_chat" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
<property name="fill">True</property>
<property name="position">4</property>
<property name="pack_type">end</property>
</packing>
</child>
<child>

View file

@ -117,7 +117,7 @@ static gboolean _linphone_status_icon_desc_is_supported(
gboolean *result,
LinphoneStatusIconDescIsSupportedResultCb cb,
void *user_data) {
return desc->is_supported(desc, result, cb, user_data);
}
@ -131,7 +131,7 @@ static void _linphone_status_icon_desc_is_supported_result_cb(
const _LinphoneStatusIconDesc *desc,
gboolean result,
_LinphoneStatusIconDescSearchCtx *ctx) {
if(!result) {
ctx->i = g_slist_next(ctx->i);
for(; ctx->i; ctx->i = g_slist_next(ctx->i)) {
@ -140,12 +140,12 @@ static void _linphone_status_icon_desc_is_supported_result_cb(
&result,
(LinphoneStatusIconDescIsSupportedResultCb)_linphone_status_icon_desc_is_supported_result_cb,
ctx)) {
if(result) break;
} else return;
}
}
if(ctx->i) {
const _LinphoneStatusIconDesc *desc = (const _LinphoneStatusIconDesc *)g_slist_nth_data(ctx->i, 0);
ms_message("StatusIcon: found implementation: %s", desc->impl_name);
@ -153,7 +153,7 @@ static void _linphone_status_icon_desc_is_supported_result_cb(
} else {
g_warning("StatusIcon: no implementation found");
}
g_free(ctx);
}
@ -161,21 +161,21 @@ static gboolean _linphone_status_icon_find_first_available_impl(
const _LinphoneStatusIconDesc **desc,
LinphoneStatusIconDescFindResultCb cb,
void *user_data) {
gboolean result;
_LinphoneStatusIconDescSearchCtx *ctx = g_new0(_LinphoneStatusIconDescSearchCtx, 1);
ctx->cb = cb;
ctx->user_data = user_data;
ms_message("StatusIcon: looking for implementation...");
for(ctx->i=_linphone_status_icon_impls; ctx->i; ctx->i = g_slist_next(ctx->i)) {
if(_linphone_status_icon_desc_is_supported(
(const _LinphoneStatusIconDesc *)g_slist_nth_data(ctx->i, 0),
&result,
(LinphoneStatusIconDescIsSupportedResultCb)_linphone_status_icon_desc_is_supported_result_cb,
ctx)) {
if(result) {
*desc = (const _LinphoneStatusIconDesc *)g_slist_nth_data(ctx->i, 0);
ms_message("StatusIcon: found implementation: %s", (*desc)->impl_name);
@ -187,7 +187,7 @@ static gboolean _linphone_status_icon_find_first_available_impl(
}
g_warning("StatusIcon: no implementation found");
*desc = NULL;
sync_return:
g_free(ctx);
return 1;
@ -266,15 +266,15 @@ void _linphone_status_icon_create_implementations_list(void) {
gboolean linphone_status_icon_init(LinphoneStatusIconReadyCb ready_cb, void *user_data) {
const _LinphoneStatusIconDesc *desc;
void **ctx;
ms_message("StatusIcon: Initialising");
_linphone_status_icon_create_implementations_list();
ctx = g_new(void *, 2);
ctx[0] = ready_cb;
ctx[1] = user_data;
if(_linphone_status_icon_find_first_available_impl(&desc, _linphone_status_icon_init_cb, ctx)) {
_linphone_status_icon_selected_desc = desc;
g_free(ctx);
@ -317,7 +317,7 @@ static void _linphone_status_icon_impl_gtk_popup_menu(GtkStatusIcon *status_icon
static void _linphone_status_icon_impl_gtk_init(LinphoneStatusIcon *si) {
const char *icon_path=linphone_gtk_get_ui_config("icon",LINPHONE_ICON);
const char *call_icon_path=linphone_gtk_get_ui_config("start_call_icon","startcall-green.png");
const char *call_icon_path=linphone_gtk_get_ui_config("start_call_icon","call_start.png");
GdkPixbuf *pbuf=create_pixbuf(icon_path);
GtkStatusIcon *icon=gtk_status_icon_new_from_pixbuf(pbuf);
g_signal_connect_swapped(G_OBJECT(icon),"activate", G_CALLBACK(_linphone_status_icon_impl_gtk_on_click_cb), si);
@ -375,7 +375,7 @@ static gboolean _linphone_status_icon_impl_is_supported(
gboolean *result,
LinphoneStatusIconDescIsSupportedResultCb cb,
void *user_data) {
*result = 1;
return 1;
}
@ -409,7 +409,7 @@ static gboolean _linphone_status_icon_impl_gtkosx_app_is_supported(
gboolean *result,
LinphoneStatusIconDescIsSupportedResultCb cb,
void *user_data) {
*result = 1;
return 1;
}
@ -472,10 +472,10 @@ static void _linphone_status_icon_impl_sn_start(LinphoneStatusIcon *si) {
BcStatusNotifierParams *params;
BcStatusNotifierToolTip *tooltip = bc_status_notifier_tool_tip_new("linphone", si->params->title, si->params->desc);
BcStatusNotifierSignalsVTable vtable = {NULL};
vtable.activate_called_cb = _linphone_status_icon_impl_sn_activated_cb;
vtable.context_menu_called_cb = _linphone_status_icon_impl_sn_menu_called_cb;
params = bc_status_notifier_params_new();
bc_status_notifier_params_set_dbus_prefix(params, "org.kde");
bc_status_notifier_params_set_category(params, BcStatusNotifierCategoryCommunications);
@ -484,15 +484,15 @@ static void _linphone_status_icon_impl_sn_start(LinphoneStatusIcon *si) {
bc_status_notifier_params_set_icon_name(params, "linphone");
bc_status_notifier_params_set_tool_tip(params, tooltip);
bc_status_notifier_params_set_vtable(params, &vtable, si);
bc_status_notifier_start(sn, params, NULL, NULL);
bc_status_notifier_tool_tip_unref(tooltip);
bc_status_notifier_params_unref(params);
}
static void _linphone_status_icon_impl_sn_enable_blinking(LinphoneStatusIcon *si, gboolean val) {
BcStatusNotifier *sn = (BcStatusNotifier *)si->data;
BcStatusNotifier *sn = (BcStatusNotifier *)si->data;
if(val) {
bc_status_notifier_update_status(sn, BcStatusNotifierStatusNeedsAttention);
} else {
@ -513,16 +513,16 @@ static gboolean _linphone_status_icon_impl_sn_is_supported(
gboolean *result,
LinphoneStatusIconDescIsSupportedResultCb cb,
void *user_data) {
_LinphoneStatusIconDesc *desc2;
void **data;
const char *desktop = g_getenv("XDG_CURRENT_DESKTOP");
if(desktop == NULL || g_strcmp0(desktop, "KDE") != 0) {
*result = FALSE;
return TRUE;
}
desc2 = g_new(_LinphoneStatusIconDesc, 1);
*desc2 = *desc;
data = g_new(void *, 3);

View file

@ -94,13 +94,13 @@ static gboolean drag_drop(GtkWidget *widget, GdkDragContext *drag_context, gint
return TRUE;
}
static unsigned long get_native_handle(GdkWindow *gdkw){
static void *get_native_handle(GdkWindow *gdkw){
#ifdef GDK_WINDOWING_X11
return (unsigned long)GDK_WINDOW_XID(gdkw);
return (void *)GDK_WINDOW_XID(gdkw);
#elif defined(WIN32)
return (unsigned long)GDK_WINDOW_HWND(gdkw);
return (void *)GDK_WINDOW_HWND(gdkw);
#elif defined(__APPLE__)
return (unsigned long)gdk_quartz_window_get_nsview(gdkw);
return (void *)gdk_quartz_window_get_nsview(gdkw);
#endif
g_warning("No way to get the native handle from gdk window");
return 0;
@ -132,7 +132,7 @@ static gint resize_video_window(LinphoneCall *call){
static void on_video_window_destroy(GtkWidget *w, guint timeout){
g_source_remove(timeout);
linphone_core_set_native_video_window_id(linphone_gtk_get_core(),(unsigned long)-1);
linphone_core_set_native_video_window_id(linphone_gtk_get_core(),LINPHONE_VIDEO_DISPLAY_NONE);
}
static void video_window_set_fullscreen(GtkWidget *w, gboolean val){
@ -314,7 +314,7 @@ static void on_video_preview_destroyed(GtkWidget *video_preview, GtkWidget *mw){
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,-1);
linphone_core_set_native_preview_window_id(lc,(void *)(unsigned long)-1);
g_source_remove(timeout_id);
}

View file

@ -704,7 +704,7 @@ LINPHONE_PUBLIC void sal_default_set_sdp_handling(Sal* h, SalOpSDPHandling handl
LINPHONE_PUBLIC void sal_call_set_sdp_handling(SalOp *h, SalOpSDPHandling handling) ;
/*Registration*/
int sal_register(SalOp *op, const char *proxy, const char *from, int expires);
int sal_register(SalOp *op, const char *proxy, const char *from, int expires,SalAddress* old_contact);
/*refresh a register, -1 mean use the last known value*/
int sal_register_refresh(SalOp *op, int expires);
int sal_unregister(SalOp *h);
@ -800,6 +800,11 @@ LINPHONE_PUBLIC void sal_set_recv_error(Sal *sal,int value);
/*always answer 480 if value=true*/
LINPHONE_PUBLIC void sal_enable_unconditional_answer(Sal *sal,int value);
LINPHONE_PUBLIC bool_t sal_pending_trans_checking_enabled(const Sal *sal) ;
LINPHONE_PUBLIC int sal_enable_pending_trans_checking(Sal *sal, bool_t value) ;
/*refresher retry after value in ms*/
LINPHONE_PUBLIC void sal_set_refresher_retry_after(Sal *sal,int value);
LINPHONE_PUBLIC int sal_get_refresher_retry_after(const Sal *sal);

@ -1 +1 @@
Subproject commit 7494e580b6127b950f29a5dff731789ed605b3a6
Subproject commit c9e33c769b2865f5dc8e2366d9f2060daa95b893

2
oRTP

@ -1 +1 @@
Subproject commit d9377cb47177cd92d2a1971cd389221aeebcabde
Subproject commit 6ace4eed11a93209de13b39cade47a54d534e950

View file

@ -20,43 +20,7 @@
#
############################################################################
set(PIXMAPS
active_chat.png
addcall-green.png
call.png
call_status_incoming.png
call_status_outgoing.png
chat_message_delivered.png
chat_message_inprogress.png
chat_message_not_delivered.png
chat.png
composing_active_chat.png
composing_chat.png
contact-orange.png
contact_starred.png
contact_unstarred.png
dialer-orange.png
dialer.png
history-orange.png
hold_off.png
hold_on.png
linphone-banner.png
linphone.icns
linphone.png
mic_active.png
mic_muted.png
notok.png
ok.png
speaker.png
startcall-green.png
startcall-small.png
status-green.png
status-offline.png
status-orange.png
status-red.png
stopcall-red.png
stopcall-small.png
)
file(GLOB PIXMAPS "*.png" "linphone.icns")
install(FILES ${PIXMAPS}
DESTINATION ${PACKAGE_DATA_DIR}/pixmaps/linphone

View file

@ -9,10 +9,10 @@ pixmap_DATA= \
status-red.png \
status-offline.png \
call.png \
chat.png active_chat.png composing_chat.png composing_active_chat.png\
chat.png chat_start.png active_chat.png composing_chat.png composing_active_chat.png\
chat_message_inprogress.png chat_message_delivered.png chat_message_not_delivered.png\
contact-orange.png dialer-orange.png history-orange.png\
startcall-green.png startcall-small.png stopcall-red.png stopcall-small.png addcall-green.png linphone.icns \
contact-orange.png history-orange.png\
call_start.png startcall-small.png stopcall-red.png stopcall-small.png call_add.png linphone.icns \
contact_starred.png contact_unstarred.png \
speaker.png \
call_status_incoming.png call_status_outgoing.png \

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

BIN
pixmaps/call_add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
pixmaps/call_start.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
pixmaps/chat_start.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 5 KiB

170
po/ar.po
View file

@ -9,10 +9,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 14:12+0000\n"
"Last-Translator: محيي الدين <tx99h4@hotmail.com>\n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/linphone-gtk/language/ar/)\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Arabic (http://www.transifex.com/p/linphone-gtk/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -139,88 +139,88 @@ msgstr "ابدأ مرشد الصوت"
msgid "Run self test and exit 0 if succeed"
msgstr "شغِّل الاختبار الذاتي ثم اخرِجْ 0 إذا نجح"
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s يريد إضافتك إلى جهة اتصاله.\nهل تريد السماح له برؤية معلومات حضورك وكذا إضافته إلى جهة اتصالك أيضا ؟ إذا أجبت بلا، سيُحظَر هذا الشخص مؤقتا."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr "ادخل كلمة السر لـ <i>%s</i>\n في نطاق <i>%s</i>:"
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "خطأ في المكالمة"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "إنتهت المكالمة"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "مكالمة واردة"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "أجِبْ"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "ارفضْ"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "المكالمة متوقفة"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>بواسطة %s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "يود %s تشغيل الفيديو. هل تقبل ذلك ؟"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "وصلة إلى الموقع وِبْ"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "لِنْفُونْ"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr "الهاتف المرئي عبر الإنترنت"
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (افتراضي)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "التحويل إلى %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "لا وجود للوحة الصوت على هذا الحاسوب.\nلن تتمكن من تلقي أو إجراء أي مكالمة."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "هاتف SIP المرئي الحر"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr "أهلا\n"
@ -304,75 +304,75 @@ msgstr "الحساب"
#: ../gtk/propertybox.c:1161
msgid "English"
msgstr "الإنجليزية"
msgstr "English"
#: ../gtk/propertybox.c:1162
msgid "French"
msgstr "الفرنسية"
msgstr "Français"
#: ../gtk/propertybox.c:1163
msgid "Swedish"
msgstr "السويدية"
msgstr "Svenska"
#: ../gtk/propertybox.c:1164
msgid "Italian"
msgstr "الإيطالية"
msgstr "Italiano"
#: ../gtk/propertybox.c:1165
msgid "Spanish"
msgstr "الإسبانية"
msgstr "Español"
#: ../gtk/propertybox.c:1166
msgid "Brazilian Portugese"
msgstr "البرتغالية البرازيلية"
msgstr "Português do Brasil"
#: ../gtk/propertybox.c:1167
msgid "Polish"
msgstr "البولونية"
msgstr "Polski"
#: ../gtk/propertybox.c:1168
msgid "German"
msgstr "الألمانية"
msgstr "Deutsch"
#: ../gtk/propertybox.c:1169
msgid "Russian"
msgstr "الروسية"
msgstr "Русский"
#: ../gtk/propertybox.c:1170
msgid "Japanese"
msgstr "اليابانية"
msgstr "日本語"
#: ../gtk/propertybox.c:1171
msgid "Dutch"
msgstr "الهولندية"
msgstr "Nederlands"
#: ../gtk/propertybox.c:1172
msgid "Hungarian"
msgstr "الهنغارية"
msgstr "Magyar"
#: ../gtk/propertybox.c:1173
msgid "Czech"
msgstr "التشيكية"
msgstr "Čeština"
#: ../gtk/propertybox.c:1174
msgid "Chinese"
msgstr "الصينية المبسَّطة"
msgstr "简体中文"
#: ../gtk/propertybox.c:1175
msgid "Traditional Chinese"
msgstr "الصينية التقليدية"
msgstr "繁体中文"
#: ../gtk/propertybox.c:1176
msgid "Norwegian"
msgstr "النرويجية"
msgstr "Norsk bokmål"
#: ../gtk/propertybox.c:1177
msgid "Hebrew"
msgstr "العبرية"
msgstr "עברית"
#: ../gtk/propertybox.c:1178
msgid "Serbian"
msgstr "الصربية"
msgstr "Српски"
#: ../gtk/propertybox.c:1179
msgid "Arabic"
@ -380,7 +380,7 @@ msgstr "العربية"
#: ../gtk/propertybox.c:1180
msgid "Turkish"
msgstr "التركية"
msgstr "Türkçe"
#: ../gtk/propertybox.c:1237
msgid ""
@ -587,7 +587,7 @@ msgstr "التحقق من الحساب في تقدم"
msgid "Error"
msgstr "خطأ"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "في طور الإنهاء"
@ -793,101 +793,101 @@ msgstr "يجلب من %s"
msgid "Downloading of remote configuration from %s failed."
msgstr "فَشِل تنزيل التهيئة عن بعد من %s ."
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr "لم يكتشف صوتاً"
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "خافِت"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "جيد"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "صاخب"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr "هل سمعت ثلاث رنات ؟"
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr "لم يعثر على تفضيلات الصوت"
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr "لم يتمكن من تشغيل التحكم في الصوت للنظام"
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr "مرحبا !\nسيمكنك هذا المرشد من تهيئة إعدادات الصوت من أجل لِنْفُونْ"
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "جهاز الالتقاط"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr "الحجم المسجَّل"
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "صامت"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr "تفضيلات الصوت للنظام"
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr "جهاز السماع"
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "شغِّل ثلاث رنَّات"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr "اضغط على زر التسجيل وانطق ببعض الكلمات"
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr "استمع لصوتك المسجَّل"
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr "تسجيل"
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr "تشغيل"
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr "لنُشغِّل لِنْفُونْ الآن"
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr "مرشد الصوت"
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr "مرشد الصوت"
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr "معايرة كسب الميكروفون"
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr "معايرة شدة مكبر الصوت"
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr "سَجِّل واقرأ "
@ -1764,60 +1764,60 @@ msgstr "تجري التهيئة..."
msgid "Please wait while fetching configuration from server..."
msgstr "رجاءً انتظر ريثما ينتهي من جلب الإعدادات من الخادم..."
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "جاهز"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr "تجري التهيئة"
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "يجري البحث عن وجهة رقم الهاتف..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "لم يتمكن من إيجاد هذا الرقم."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "يتصل ب"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "لم يتمكن من الاتصال"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "آسف، وصل عدد المكالمات الآنية إلى حده الأقصى"
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "يتصل بك"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr "ويطلب ردا تلقائيا."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "يجري تعديل إعدادات المكالمة..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "متصل."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "أُلغيت المكالمة"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "لم يتمكن من توقيف المكالمة مؤقتا"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "وضع المكالمة قيد الانتظار..."
@ -1893,7 +1893,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "إن هوية SIP التي أدخلت غير صحيحة.\nيجب أن تكون بهذا النمط sip:username@proxydomain، مثلا sip:alice@example.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "تعذر الولوج بالهوية %s"
@ -2017,7 +2017,7 @@ msgstr "شارة التحقق من الهوية هي %s"
msgid "Call parameters were successfully modified."
msgstr "عُدِّلت معاملات المكالمات بنجاج."
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

130
po/cs.po
View file

@ -9,10 +9,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/language/cs/)\n"
"Language-Team: Czech (http://www.transifex.com/p/linphone-gtk/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -133,88 +133,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s si vás chce přidat do svého adresáře.\nDovolíte mu, aby viděl váš stav přítomnosti, nebo si ho také chcete přidat do svého adresáře?\nOdpovíte-li ne, tato osobo bude dočasně blokována."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "Chyba hovoru"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Hovor ukončen"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Příchozí hovor"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Odpovědět"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Odmítnout"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "Hovor odložen"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>kým: %s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "%s navrhuje začít videohovor. Přijímáte?"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Odkaz na webovou stránku"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (Výchozí)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "Byly jsme přepojeni na %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "Na tomto počítači nebyla objevena žádná zvuková karta.\nNebudete moci vytáčet a přijímat a zvukové hovory."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Volný SIP videofon"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -578,7 +578,7 @@ msgstr ""
msgid "Error"
msgstr "Chyba"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "Ukončuje se"
@ -784,101 +784,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1755,60 +1755,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Připraven."
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Vyhledává se umístění čísla…"
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Toto číslo nelze vyhledat."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Navazuje se spojení"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "Nelze volat"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "Je nám líto, ale byl dosažen maximální počet současných hovorů."
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "vás volá"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr " a požaduje automatickou zvednutí."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "Upravují se parametry hovoru…"
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Připojeno."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "Hovor přerušen"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "Hovor nebylo možné odložit"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "Současný hovor se odkládá…"
@ -1884,7 +1884,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "SIP identita, kterou jste zadali, není platná.\nMěla by mít tvar sip:uživatel@proxydoména, například sip:alice@example.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "Nelze se přihlásit jako %s"
@ -2008,7 +2008,7 @@ msgstr "Klíč k ověření totožnosti je %s"
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

132
po/de.po
View file

@ -12,10 +12,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-27 14:57+0000\n"
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
"Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/language/de/)\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: German (http://www.transifex.com/p/linphone-gtk/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -134,88 +134,88 @@ msgstr "Starte den Audio-Assistent"
msgid "Run self test and exit 0 if succeed"
msgstr "Selbsttest ausführen und mit 0 beenden, wenn erfolgreich"
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s möchte Sie zu seiner Kontaktliste hinzufügen.\nMöchten Sie ihm erlauben, Ihren Anwesenheitsstatus zu sehen, oder ihn zu Ihrer Kontaktliste hinzufügen?\nWenn Sie mit Nein antworten, wird diese Person vorläufig blockiert."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr "Bitte geben Sie Ihr Passwort für den Benutzernamen <i>%s</i>\n für Bereich <i>%s</i> ein:"
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "Anruf fehlgeschlagen"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Anruf beendet"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Eingehender Anruf"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Annehmen"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Abweisen"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "Anruf wird gehalten"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>von %s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "%s schlägt vor, eine Videoübertragung zu starten. Nehmen Sie an?"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Website-Verknüpfung"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr "Ein Internet-Video-Telefon"
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (Vorgabe)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "Vermittlung nach %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "Auf diesem Rechner können keine Soundkarten gefunden werden.\nSie können keine Audio-Anrufe tätigen oder entgegennehmen."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Ein freies SIP-Video-Telefon"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr "Hallo\n"
@ -578,7 +578,7 @@ msgstr "Kontogültigkeitsprüfung läuft"
msgid "Error"
msgstr "Fehler"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "Fertigstellen"
@ -784,101 +784,101 @@ msgstr "abrufen von %s"
msgid "Downloading of remote configuration from %s failed."
msgstr "Herunterladen der Fernkonfiguration von %s fehlgeschlagen"
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr "Keine Stimme ermittelt"
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "zu gering"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "gut"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "zu laut"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr "Haben Sie die drei Signaltöne gehört?"
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr "Toneinstellungen nicht gefunden"
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr "Systemtonsteuerung kann nicht gestartet werden"
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr "Willkommen!\nDieser Assistent hilft Ihnen die Audioeinstellungen für Linphone einzurichten."
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "Aufnahmegerät"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr "aufgenommene Lautstärke"
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "Keine Stimme"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr "Systemtoneinstellungen"
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr "Wiedergabegerät"
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "spiele drei Pieptöne ab"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr "Drücken Sie den Aufnahmeknopf und sagen Sie etwas"
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr "Hören Sie das Aufgenommene"
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr "Aufnahme"
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr "Wiedergabe"
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr "Linphone jetzt starten"
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr "Audio-Assistant"
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr "Audio-Assistant"
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr "Einrichtung MIkrofonverstärker"
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr "Einrichtung Lautstärke"
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr "aufnehmen und abspielen"
@ -1755,60 +1755,60 @@ msgstr "Einstellen..."
msgid "Please wait while fetching configuration from server..."
msgstr "Bitte warten Sie während die Einstellungen vom Server abgerufen werden..."
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Bereit"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr "Einstellen"
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Telefonnummernziel wird gesucht..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Diese Nummer kann nicht aufgelöst werden."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Verbindungsaufbau"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "Anruf kann nicht getätigt werden."
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht."
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "ruft Sie an"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr " und fragt nach automatischer Antwort."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "Die Anrufparameter werden verändert..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Verbunden."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "Anruf abgebrochen"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "Anruf kann nicht gehalten werden"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "Aktueller Anruf wird gehalten..."
@ -1884,7 +1884,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "Die von Ihnen eingegebene SIP-Identität ist ungültig.\nSie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:alice@beispiel.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "Anmeldung als %s fehlgeschlagen"
@ -2008,7 +2008,7 @@ msgstr "Authentifizierungs-Token ist %s"
msgid "Call parameters were successfully modified."
msgstr "Anrufparameter wurden erfolgreich geändert."
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

130
po/es.po
View file

@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/language/es/)\n"
"Language-Team: Spanish (http://www.transifex.com/p/linphone-gtk/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -129,88 +129,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s desea añadirle a su lista de contactos.\n¿Desea permitirle ver su estado de presencia o añadirle a su lista de contactos?\nSi responde no, esta persona será bloqueada temporalmente."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr ""
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr ""
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Llamada entrante"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Contestar"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr ""
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Enlace a la Web"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr ""
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (Opción predeterminada)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "Somos transferidos a %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "No se ha encontrado una tarjeta de sonido en este equipo.\nNo será posible realizar o recibir llamadas de audio."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Un video-teléfono SIP gratuito"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -573,7 +573,7 @@ msgstr ""
msgid "Error"
msgstr ""
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr ""
@ -779,101 +779,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1750,60 +1750,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr ""
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Buscando el número de teléfono del destinatario…"
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "No se ha podido resolver este número."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr ""
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr ""
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "Disculpe, se ha alcanzado el máximo número de llamadas simultáneas"
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr ""
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr "y ha solicitado auto respuesta."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "Modificando parámetros de llamada…"
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Conectado."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr ""
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "No se pudo pausar la llamada"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "Pausando la llamada actual..."
@ -1879,7 +1879,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "La identidad SIP que ha introducido no es válida.\nDebe ser del tipo sip:username@proxydomain, como por ejemplo sip:alice@example.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr ""
@ -2003,7 +2003,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

130
po/fr.po
View file

@ -12,10 +12,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 14:02+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/language/fr/)\n"
"Language-Team: French (http://www.transifex.com/p/linphone-gtk/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -134,88 +134,88 @@ msgstr "Démarre l'assistant audio"
msgid "Run self test and exit 0 if succeed"
msgstr "Exécuter le test local et retourner 0 en cas de succès"
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s souhaite vous ajouter à sa liste de contact.\nSouhaitez vous l'autoriser à voir votre information de présence et l'ajouter à votre liste également ?\nSi vous répondez non, cette personne sera mise temporairement sur liste noire."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr "Entrez le mot de passe pour <i>%s</i>\n sur le domaine <i>%s</i>:"
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "Erreur lors de l'appel"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Appel terminé."
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Appel entrant"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Répondre"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Refuser"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "Appel en pause"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "b>par %s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "%s propose de démarrer la vidéo. Acceptez-vous ?"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Lien site web"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr "Appels vidéo via internet"
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (par défaut)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "Transfert vers %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "Aucune carte son n'a été détectée sur cet ordinateur.\nVous ne pourrez pas effectuer d'appels audio."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Un visiophone libre"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr "Bonjour\n"
@ -578,7 +578,7 @@ msgstr "Vérification de la validité du compte en cours"
msgid "Error"
msgstr "Erreur"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "En cours darrêt."
@ -784,101 +784,101 @@ msgstr "chargement depuis %s"
msgid "Downloading of remote configuration from %s failed."
msgstr "Le chargement de la configuration depuis %s a échoué."
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr "Voix non détectée"
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "Trop bas"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "Bien"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "Trop bruyant"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr "Avez-vous entendu trois bips ?"
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr "Préférences son non trouvé"
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr "Impossible de démarrer le contrôleur système du son"
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr "Bienvenue !\nCet assistant va vous aider à régler les paramètres audio de votre ordinateur pour une utilisation optimale avec Linphone."
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "Périphérique de capture"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr "Volume enregistré"
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "Silencieux"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr "Préférences son système"
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr "Périphérique d'écoute"
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "Joue trois bips"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr "Appuyer sur le bouton enregistrer et dites quelques mots"
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr "Ecoutez votre voix enregistrée"
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr "Enregistrer"
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr "Jouer"
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr "Démarrons Linphone maintenant"
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr "Assistant audio"
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr "Assistant audio"
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr "Calibration du gain du microphone"
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr "Calibration du volume du haut parleur"
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr "Enregistrer et joue"
@ -1755,60 +1755,60 @@ msgstr "Configuration en cours"
msgid "Please wait while fetching configuration from server..."
msgstr "Veuillez patenter un instant pendant le chargement de la configuration distante..."
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Prêt."
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr "Configuration en cours"
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Recherche de la destination du numéro de téléphone..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "La destination n'a pu être trouvée."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Appel de"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "Echec de l'appel"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "Désolé, le nombre maximum d'appels simultanés est atteint."
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "vous appelle"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr "et sollicite un décrochage automatique."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "Modifications des paramètres d'appels..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "En ligne."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "Appel abandonné"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "La mise en attente a échoué"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "Mise en attente de l'appel..."
@ -1884,7 +1884,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "L'identité SIP que vous avez fourni est invalide.\nElle doit être de la forme sip:utilisateur@domaine, comme par exemple sip:alice@example.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "Echec de la connexion en tant que %s"
@ -2008,7 +2008,7 @@ msgstr "Le jeton d'authentification est %s"
msgid "Call parameters were successfully modified."
msgstr "Les paramètres d'appel ont été modifiés avec succès."
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

130
po/he.po
View file

@ -12,10 +12,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/language/he/)\n"
"Language-Team: Hebrew (http://www.transifex.com/p/linphone-gtk/language/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -134,88 +134,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s מעוניין להוסיפך אל רשימת אנשי הקשר שלו.\nהאם ברצונך להרשות להם לראות את מצב נוכחותך או להוסיפם אל רשימת אנשי הקשר שלך ?\nהיה ותשובתך תהיה לא, אדם זה יהיה מסומן באופן זמני ברשימה השחורה."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr "אנא הזן סיסמה עבור משתמש <i>%s</i>\nבמתחם <i>%s</i>:"
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "שגיאת קריאה"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "שיחה הסתיימה"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "קריאה נכנסת"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "לענות"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "לדחות"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "שיחה הושהתה"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>על ידי %s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "%s רוצה להתחיל וידאו. האם אתה מסכים ?"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "קישור אתר רשת"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (ברירת מחדל)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "אנחנו מועברים אל %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "לא אותרו כרטיסי קול במחשב זה.\nלא תהיה ביכולתך לשלוח או לקבל שיחות אודיו."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "וידאופון SIP חופשי"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -578,7 +578,7 @@ msgstr ""
msgid "Error"
msgstr "שגיאה"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "מסיים כעת"
@ -784,101 +784,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "נמוך מדי"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "טוב"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "חזק מדי"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "התקן לכידה"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "אין קול"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr "התקן השמעה"
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "נגן שלושה צפצופים"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr "הבא נתחיל את Linphone עכשיו"
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1755,60 +1755,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "מוכן"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "מחפש כעת עבור יעד מספר טלפון..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "לא ניתן לפתור את מספר זה."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "מתקשר כעת"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "לא ניתן להתקשר"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "הגענו אל המספר המרבי של שיחות מקבילות, עמך הסליחה"
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "מתקשר/ת אליך"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr " ומבקש/ת מענה אוטומטי."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "מתאים כעת פרמטרים של שיחה..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "מקושר."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "קריאה בוטלה"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "לא ניתן להשהות את השיחה"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "משהה כעת שיחה נוכחית..."
@ -1884,7 +1884,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "זהות sip שהוזנה הינה שגויה.\nזו צריכה להיראות כמו sip:username@proxydomain, למשל sip:alice@example.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "לא ניתן להתחבר בזהות %s"
@ -2008,7 +2008,7 @@ msgstr "אות האימות הינה %s"
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

130
po/hu.po
View file

@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/language/hu/)\n"
"Language-Team: Hungarian (http://www.transifex.com/p/linphone-gtk/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -129,88 +129,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s szeretné Önt hozzáadni partnerlistájához.\nSzeretné megengedni neki, hogy lássa az Ön jelenlétét, illetve hozzá szeretné adni a partnerlistához?\nHa nemmel válaszol, ez a személy átmenetileg tiltólistára kerül."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "Hiba a hívás közben"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Hívás vége"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Beérkező hívás"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Hívás fogadása"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Elutasítás"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "Hívás várakoztatva"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>a következő által: %s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "%s szerené elidítani a videót. Elfogadja?"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Internetes oldal"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (Alapértelmezett)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "Át vagyunk irányítva ide: %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "Hangkártya nincs érzékelve ezen a számítógépen.\nNem fog tudni hang hívásokat küldeni vagy fogadni."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Egy ingyenes SIP video-telefon"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -573,7 +573,7 @@ msgstr ""
msgid "Error"
msgstr "Hiba"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "Befejezés"
@ -779,101 +779,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1750,60 +1750,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Kész"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Telefonszám-cél keresése..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Nem sikkerült értelmezni a számot."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Kapcsolódás"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "Nem sikerült hívni"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "Elnézést, elértük a egyidejű hívások maximális számát"
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "kapcsolatba lépett veled."
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr "és automatikus választ kért."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "A hívási jellemzők módosítása..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Kapcsolódva."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "Hívás megszakítva"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "Nem sikerült várakoztatni a hívást"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "Jelenlegi hívás várakoztatásának aktiválása..."
@ -1879,7 +1879,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "Az Ön által megadott SIP identitás érvénytelen.\nÍgy kéne kinéznie: sip:felhasznalonev@proxytartomany, például sip:aladar@pelda.hu"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "Nem sikerült belépni ezzel: %s"
@ -2003,7 +2003,7 @@ msgstr "Hitelesítési jel: %s"
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

727
po/it.po

File diff suppressed because it is too large Load diff

130
po/ja.po
View file

@ -9,10 +9,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/language/ja/)\n"
"Language-Team: Japanese (http://www.transifex.com/p/linphone-gtk/language/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -129,88 +129,88 @@ msgstr "オーディオアシスタントを実行"
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s が連絡相手にあなたを追加しようとしています。\nあなたのステータスを参照させるか、もしくは連絡先リストに追加することができます。\nあなたが拒否すると、この人は一時的にブラックリストへ登録されます。"
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "呼出エラー"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "呼出終了"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "着信"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "応答"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "拒否"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "呼び出しの一時停止"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>%s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "ウェブサイトリンク"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (デフォルト)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "%s に転送しました"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr ""
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "無料 SIP ビデオ-電話"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -572,7 +572,7 @@ msgstr ""
msgid "Error"
msgstr "エラー"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "終了"
@ -778,101 +778,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr "音声が検出できません"
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "小さい"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "丁度よい"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "大きい"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr "3回のビープ音が聞こえましたか"
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr "音声の設定が見つかりません"
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr "音声制御システムを起動できません"
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "キャプチャーデバイス"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr "録音音量"
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "音声なし"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr "システムサウンド設定"
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "3回分のビープ音を再生する"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr "録音した音声を聞く"
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr "録音"
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr "再生"
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr "Linphoneをはじめる"
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr "音声アシスタント"
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr "音声アシスタント"
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr "マイクのゲイン測定"
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr "スピーカーの音量測定"
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr "録音して再生"
@ -1749,60 +1749,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "準備"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr ""
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr ""
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr ""
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr ""
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr ""
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr ""
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr "と自動応答を尋ねる"
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "コールパラメーターの変更..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "接続しました。"
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "呼び出しを打ち切る"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "呼び出しを一時停止できませんでした"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "現在の通話を一時停止..."
@ -1878,7 +1878,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr ""
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr ""
@ -2002,7 +2002,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

View file

@ -8,10 +8,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/linphone-gtk/language/nb_NO/)\n"
"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/p/linphone-gtk/language/nb_NO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -130,88 +130,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s vil legge deg til i hans/hennes kontaktliste.\nVil du tillate vedkommende å se din tilstedestatus eller legge vedkommende i din kontaktliste?\nHvis du svarer nei vil personen bli svartelyst midlertidig."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr ""
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Samtale avsluttet"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Innkommende samtale"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Svarer"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Avvis"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr ""
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Peker til nettsted"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (Standard)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "Vi er overført til %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "Klarte ikke å finne noe lydkort på denne datamaskinen.\nDu vil ikke kunne sende eller motta lydsamtaler."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "En gratis SIP video-telefon"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -574,7 +574,7 @@ msgstr ""
msgid "Error"
msgstr ""
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr ""
@ -780,101 +780,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1751,60 +1751,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Klar"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Ser etter telefonnummer for destinasjonen..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Kan ikke tilkoble dette nummeret."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Tilknytter"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "Kunne ikke ringe"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "Beklager, du har nådd maksimalt antall samtidige samtaler"
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "Kontakter deg."
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr " og ba om autosvar."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "Endrer ringeparametre..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Tilkoblet"
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "Samtale avbrutt"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "Kunne ikke pause samtalen"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "Pauser nåværende samtale"
@ -1880,7 +1880,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "SIP adressen du har angitt er feil. Adressen bør se ut som sip: brukernavn@domenenavn, f.eks sip:ola@eksempel.no"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "Ikke ikke logge inn som %s"
@ -2004,7 +2004,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

130
po/nl.po
View file

@ -8,10 +8,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/language/nl/)\n"
"Language-Team: Dutch (http://www.transifex.com/p/linphone-gtk/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -130,88 +130,88 @@ msgstr "Doorloop de audio-instelwizard"
msgid "Run self test and exit 0 if succeed"
msgstr "Draai een zelftest en exit 0 wanneer succesvol"
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s wil u toevoegen aan zijn/haar contactpersonenlijst.\nWilt u toestaan dat hij/zij uw aanwezigheidsstatus ziet of hem/haar toevoegen aan uw contactpersonenljst?\nIndien u nee antwoordt, zal deze persoon tijdelijk op de zwarte lijst worden gezet."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr "Vul uw wachtwoord in voor gebruikersnaam <i>%s</i>\nop realm <i>%s</i>"
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "Oproepfout"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Oproep beëindigd"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Inkomende oproep"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Opnemen"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Weigeren"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "Oproep gepauzeerd"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>door %s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "%s stelt u voor om video in te schakelen. Wilt u dit accepteren?"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Websitelink"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (Standaard)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "We zijn overgeschakeld naar %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "Er zijn geluidskaarten aangetroffen op deze computer.\nU zult niet in staat zijn om audio-oproepen te ontvangen of versturen."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Een gratis SIP-videotelefoon"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -574,7 +574,7 @@ msgstr ""
msgid "Error"
msgstr "Fout"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "Bezig met vernietigen"
@ -780,101 +780,101 @@ msgstr "bezig met ophalen van %s"
msgid "Downloading of remote configuration from %s failed."
msgstr "Het downloaden van de externe configuratie van %s is mislukt."
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr "Er is geen stem gedetecteerd"
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "Te zacht"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "Goed"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "Te hard"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr "Heeft u drie pieptonen gehoord?"
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr "De geluidsvoorkeuren zijn niet gevonden"
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr "Het systeemgeluidspaneel kon niet worden gestart"
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr "Welkom!\nDeze instelwizard zal u begeleiden bij het instellen van de audio-instellingen van Linphone"
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "Opname-apparaat"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr "Opgenomen volume"
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "Geen stem"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr "Systeemgeluidsinstellingen"
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr "Afspeelapparaat"
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "Drie pieptonen afspelen"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr "Klik op de opnameknop en zeg enkele woorden"
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr "Luister naar uw opgenomen stem"
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr "Opnemen"
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr "Afspelen"
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr "Laten we nu Linphone opstarten"
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr "Audio-instelwizard"
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr "Audio-instelwizard"
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr "Kalibratie van het microfoonbereik"
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr "Kalibratie van het luidsprekervolume"
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr "Opnemen en afspelen"
@ -1751,60 +1751,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Gereed."
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Zoekt de lokatie van het telefoonnummer..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Kon dit nummer niet vinden."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Verbinden"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr ""
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr ""
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr ""
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr ""
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr ""
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Verbonden."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr ""
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr ""
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr ""
@ -1880,7 +1880,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr ""
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr ""
@ -2004,7 +2004,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

128
po/pl.po
View file

@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/language/pl/)\n"
"Language-Team: Polish (http://www.transifex.com/p/linphone-gtk/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -131,88 +131,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr ""
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr ""
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr ""
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr ""
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr ""
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr ""
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr ""
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr ""
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr ""
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr ""
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr ""
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -576,7 +576,7 @@ msgstr ""
msgid "Error"
msgstr ""
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr ""
@ -782,101 +782,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1753,60 +1753,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr ""
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr ""
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr ""
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr ""
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr ""
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr ""
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr ""
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr ""
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr ""
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Połączony"
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr ""
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr ""
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr ""
@ -1882,7 +1882,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr ""
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr ""
@ -2006,7 +2006,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

View file

@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/linphone-gtk/language/pt_BR/)\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/p/linphone-gtk/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -129,88 +129,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr ""
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr ""
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Camadas recebidas"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr ""
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr ""
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr ""
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr ""
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr ""
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr ""
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr ""
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr ""
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -573,7 +573,7 @@ msgstr ""
msgid "Error"
msgstr ""
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr ""
@ -779,101 +779,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1750,60 +1750,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr ""
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Procurando por telefone de destino..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Não foi possível encontrar este número."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr ""
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr ""
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr ""
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr ""
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr ""
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr ""
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Conectado."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr ""
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr ""
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr ""
@ -1879,7 +1879,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr ""
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr ""
@ -2003,7 +2003,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

132
po/ru.po
View file

@ -12,10 +12,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 22:09+0000\n"
"Last-Translator: AlexL <loginov.alex.valer@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/language/ru/)\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Russian (http://www.transifex.com/p/linphone-gtk/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -138,88 +138,88 @@ msgstr "Запустить помощника аудио"
msgid "Run self test and exit 0 if succeed"
msgstr "Запустить самотест и выйти при успехе со статусом 0"
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s вы бы хотели быть добавленным в этот контактный лист.\nВы разрешаете ему(ей) видеть ваш статус присутствия или добавить в контактный лист?\nЕсли вы ответите Нет, эта персона будет временно в чёрном списке."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr "Пожалуйста, введите пароль для пользователя <i>%s</i>\n для реалм (рилм) <i>%s</i>:"
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "Ошибка звонка"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Звонок окончен"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Входящий звонок"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Ответ"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Отклонить"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "Звонок приостановлен"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>%s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "%s предложил запустить видео. Вы принимаете?"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Домашняя страница"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr "Видео интернет телефон"
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (по умолчанию)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "Мы передали в %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "Звуковые карты не были обнаружены на этом компьютере.\nВы не сможете отправлять или получать аудио звонки."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Свободный SIP видео-телефон"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr "Привет\n"
@ -584,7 +584,7 @@ msgstr "Проверка действительности учётной зап
msgid "Error"
msgstr "Ошибка"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "Прерывание"
@ -790,101 +790,101 @@ msgstr "получение от %s"
msgid "Downloading of remote configuration from %s failed."
msgstr "Загрузка удалённой конфигурации из %s неудачна."
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr "Голос не обнаружен"
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "Слишком тихо"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "Хорошо"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "Слишком громко"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr "Вы слышали 3 сигнала?"
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr "Настройки звука не найдены"
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr "Не удаётся запустить системное управление звуком"
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr "Добро пожаловать!\nЭтот ассистент поможет вам настроить настройки аудио для Linphone."
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "Устройство захвата"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr "Уровень записи"
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "Нет голоса"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr "Системные настройки звука"
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr "Устройство воспроизведения"
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "Проиграть три сигнала"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr "Нажмите кнопку записи и скажите несколько слов"
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr "Прослушайте ваш записанный голос"
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr "Запись"
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr "Воспроизведение"
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr "Давайте сейчас запустим linphone"
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr "Помощник аудио"
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr "Помощник аудио"
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr "Калибровка усиления микрофона"
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr "Калибровка громкости динамика"
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr "Записать и проиграть"
@ -1761,60 +1761,60 @@ msgstr "Конфигурирование..."
msgid "Please wait while fetching configuration from server..."
msgstr "Пожалуйста, подождите пока получается конфигурация с сервера..."
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Готов"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr "Конфигурирование"
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Поиск назначения для телефонного номера.."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Не получилось принять решение по этому номеру."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Соединение"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "Невозможно позвонить"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "К сожалению, мы достигли максимального количества одновременных звонков"
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "контактирует с вами"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr "и спросил автоматический ответ."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "Изменение параметров звонка..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Соединён."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "Звонок отменён"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "Невозможно приостановить звонок"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "Приостановка текущего звонка..."
@ -1890,7 +1890,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "Неверные параметры для sip идентификации\nДолжно выглядеть как sip:имя_пользователя@домен_прокси, как например, sip:alice@example.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "Невозможно зайти как: %s"
@ -2014,7 +2014,7 @@ msgstr "Маркер проверки подлинности: %s"
msgid "Call parameters were successfully modified."
msgstr "Параметры звонка были успешно изменены."
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

130
po/sr.po
View file

@ -8,10 +8,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/language/sr/)\n"
"Language-Team: Serbian (http://www.transifex.com/p/linphone-gtk/language/sr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -132,88 +132,88 @@ msgstr "Покреће помоћника звука"
msgid "Run self test and exit 0 if succeed"
msgstr "Покреће самоиспробавање и излази 0 ако је успешно"
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s жели да вас дода на списак пријатеља.\nДа ли желите да му допустите да види ваше стање присуства или да га додате на ваш списак пријатеља ?\nАко одговорите са не, ова особа ће привремено бити стављена на списак забрана."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr "Унесите вашу лозинку за корисничко име <i>%s</i>\n на подручју <i>%s</i>:"
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "Грешка позива"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Позив је завршен"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Долазни позив"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Јави се"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Одбиј"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "Позив је заустављен"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr "<b>од %s</b>"
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr "%s предлаже да започнете видео. Да ли прихватате ?"
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Веза веб сајта"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Линфон"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (основно)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "Преселили смо се на %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "Ниједна звучна картица није откривена на овом рачунару.\nНећете бити у могућности да шаљете или да примате звучне позиве."
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Слободан СИП телефон са снимком"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -577,7 +577,7 @@ msgstr ""
msgid "Error"
msgstr "Грешка"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "Завршавам"
@ -783,101 +783,101 @@ msgstr "довлачим са „%s“"
msgid "Downloading of remote configuration from %s failed."
msgstr "Преузимање удаљеног подешавања са „%s“ није успело."
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr "Глас није откривен"
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "Сувише низак"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "Добар"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "Сувише гласан"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr "Да ли сте чули три писка ?"
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr "Нисам пронашао поставке звука "
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr "Не могу да покренем управљање звуком система "
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr "Добро дошли!\nОвај помоћник ће вам помоћи да подесите поставке звука за Линфон"
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "Уређај за снимање"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr "Снимљени волумен"
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "Нема гласа"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr "Поставке звука система"
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr "Уређај за пуштање"
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "Пусти три писка"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr "Притисните дугме за снимање и реците нешто"
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr "Слушајте ваш снимљени глас"
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr "Сними"
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr "Пусти"
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr "Хајде сада да покренемо Линфон"
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr "Помоћник звука"
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr "Помоћник звука"
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr "Дотеривање појачања микрофона"
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr "Дотеривање јачине звука звучника"
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr "Снимите и пустите"
@ -1754,60 +1754,60 @@ msgstr "Подешавам..."
msgid "Please wait while fetching configuration from server..."
msgstr "Сачекајте док довучем подешавања са сервера..."
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Спреман"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr "Подешавам"
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Тражим одредиште телефонског броја..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Не могу да решим овај број."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Ступам у везу"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "Не могу да позовем"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "Извините, достигли смо највећи број истовремених позива"
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "вам се обраћа"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr " и затражени само-одговор."
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "Мењам параметре позива..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Повезан сам."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "Позив је прекинут"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "Не могу да зауставим позив"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "Заустављам тренутни позив..."
@ -1883,7 +1883,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "Сип идентитет који сте унели није исправан.\nТреба да изгледа као „sip:корисник@домен-посредника, као што је „sip:alice@example.net“"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "Не могу да се пријавим као %s"
@ -2007,7 +2007,7 @@ msgstr "Симбол потврђивања идентитета је „%s“"
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

130
po/sv.po
View file

@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/language/sv/)\n"
"Language-Team: Swedish (http://www.transifex.com/p/linphone-gtk/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -129,88 +129,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s skulle vilja lägga till dig till hans/hennes kontaktlista.\nVill du tillåta honom/henne att se din närvarostatus eller lägga till honom/henne till din kontaktlista?\nOm du svarar nej, personen kommer att vara bannlyst."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr ""
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Samtalet slut"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Inkommande samtal"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr ""
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Avböj"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr ""
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "Webbsajt"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (Default)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr ""
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr ""
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "En gratis SIP video-telefon"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -573,7 +573,7 @@ msgstr ""
msgid "Error"
msgstr ""
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr ""
@ -779,101 +779,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1750,60 +1750,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Redo"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "Leta efter telefonnummer för destinationen..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Kan inte nå dett nummer."
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Kontaktar"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr ""
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr ""
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr ""
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr ""
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr ""
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Kopplad"
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr ""
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr ""
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr ""
@ -1879,7 +1879,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "SIP adressen som du matade in är inte rätt. Adressen borde se ut som sip:namn@domän, såsom sip:peter@exempel.se"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "Kunde inte logga in som %s"
@ -2003,7 +2003,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

128
po/tr.po
View file

@ -8,10 +8,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Turkish (http://www.transifex.com/projects/p/linphone-gtk/language/tr/)\n"
"Language-Team: Turkish (http://www.transifex.com/p/linphone-gtk/language/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -130,88 +130,88 @@ msgstr "Ses yardımcısını çalıştır"
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr "Çağrı yanlış"
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Çağrı sonlandırıldı"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "Gelen çağrı"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "Yanıt"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Reddet"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr "Çağrı duraklatıldı"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr ""
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "İnternet "
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr "Görüntülü internet telefonu"
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr ""
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr ""
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr ""
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "Özgür bir SİP görüntülü-telefon"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr "Merhaba\n"
@ -574,7 +574,7 @@ msgstr ""
msgid "Error"
msgstr "Hata"
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr "Sonlandırma"
@ -780,101 +780,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr "Ses olmadığı algılandı"
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr "Çok düşük"
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr "İyi"
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr "Çok yüksek"
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr "Üç bip sesi duydun mu?"
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr "Ses tercihleri bulunamadı"
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr "Ses kontrol sistemi başlatılamıyor"
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr "Hoşgeldiniz!\nBu yardımcı,Linphone'un ses ayarlarını yapılandırmanıza yardım edecek"
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr "Görüntü yakalama aygıtı"
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr "Ses yok"
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr "Sistem ses tercihleri"
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr "Oynatma aygıtı"
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr "Üç bip sesi çal"
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr "Kayıt tuşuna bas ve bazı kelimeler söyle"
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr "Kaydettiğin sesi dinle"
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr "Kayıt"
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr "Çalma"
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr "Ses Yardımcısı"
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr "Ses yardımcısı"
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr "Kaydet ve Oynat"
@ -1751,60 +1751,60 @@ msgstr "Yapılandırılıyor..."
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Hazır"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr "Yapılandırılıyor"
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr ""
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr ""
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "Bağlanıyor"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr ""
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr ""
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr ""
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr ""
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr ""
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Bağlandı."
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "Çağrı iptal edildi"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr ""
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr ""
@ -1880,7 +1880,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr ""
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr ""
@ -2004,7 +2004,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

View file

@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-gtk/language/zh_CN/)\n"
"Language-Team: Chinese (China) (http://www.transifex.com/p/linphone-gtk/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -127,88 +127,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s 想加您为联系人。\n您是否允许他看到您的在线状态或者将它加为您的联系人允许?\n如果您回答否则会将该人临时性的放入黑名单"
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr ""
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "呼叫结束"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "呼入"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr ""
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "拒绝"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr ""
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "网站"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (默认)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr ""
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "未在此计算机上检测到声卡。\n您无法发送或接收音频呼叫。"
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "免费的 SIP 视频电话"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -570,7 +570,7 @@ msgstr ""
msgid "Error"
msgstr ""
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr ""
@ -776,101 +776,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1747,60 +1747,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "就绪"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "查询电话号码目的地..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "该号码无法解析。"
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "联系中"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr ""
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr ""
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "正在联系您"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr " 并询问了自动回答。"
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr ""
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "已连接。"
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr ""
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr ""
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr ""
@ -1876,7 +1876,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "您输入的地址无效。\n它应具有“sip:用户名@代理域”的形式,例如 sip:alice@example.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "无法登录为 %s"
@ -2000,7 +2000,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

View file

@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: linphone-gtk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-26 15:49+0200\n"
"PO-Revision-Date: 2015-06-26 13:49+0000\n"
"POT-Creation-Date: 2015-07-17 09:34+0200\n"
"PO-Revision-Date: 2015-07-17 07:34+0000\n"
"Last-Translator: Belledonne Communications <support@belledonne-communications.com>\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/linphone-gtk/language/zh_TW/)\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/p/linphone-gtk/language/zh_TW/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -127,88 +127,88 @@ msgstr ""
msgid "Run self test and exit 0 if succeed"
msgstr ""
#: ../gtk/main.c:1082
#: ../gtk/main.c:1078
#, c-format
msgid ""
"%s would like to add you to his contact list.\n"
"Would you allow him to see your presence status or add him to your contact list ?\n"
"%s would like to add you to his/her contact list.\n"
"Would you add him/her to your contact list and allow him/her to see your presence status?\n"
"If you answer no, this person will be temporarily blacklisted."
msgstr "%s 想要加您加入他的連絡人清單。\n您是否要允許他看見您的上線狀態或將他加入您的連絡人清單\n如果您回答否這個人會被暫時列入黑名單。"
msgstr ""
#: ../gtk/main.c:1159
#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username <i>%s</i>\n"
" at realm <i>%s</i>:"
msgstr ""
#: ../gtk/main.c:1280
#: ../gtk/main.c:1276
msgid "Call error"
msgstr ""
#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "通話已結束"
#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
msgstr "來電"
#: ../gtk/main.c:1288 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
#: ../gtk/main.c:1284 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5
msgid "Answer"
msgstr "接聽"
#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "拒接"
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
msgid "Call paused"
msgstr ""
#: ../gtk/main.c:1296
#: ../gtk/main.c:1292
#, c-format
msgid "<b>by %s</b>"
msgstr ""
#: ../gtk/main.c:1366
#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
msgstr ""
#: ../gtk/main.c:1521
#: ../gtk/main.c:1517
msgid "Website link"
msgstr "網站連結"
#: ../gtk/main.c:1580 ../gtk/waiting.ui.h:1
#: ../gtk/main.c:1576 ../gtk/waiting.ui.h:1
msgid "Linphone"
msgstr "Linphone"
#: ../gtk/main.c:1581
#: ../gtk/main.c:1577
msgid "A video internet phone"
msgstr ""
#: ../gtk/main.c:1640
#: ../gtk/main.c:1636
#, c-format
msgid "%s (Default)"
msgstr "%s (預設值)"
#: ../gtk/main.c:1978 ../coreapi/callbacks.c:1077
#: ../gtk/main.c:1974 ../coreapi/callbacks.c:1077
#, c-format
msgid "We are transferred to %s"
msgstr "我們被轉接到 %s"
#: ../gtk/main.c:1988
#: ../gtk/main.c:1984
msgid ""
"No sound cards have been detected on this computer.\n"
"You won't be able to send or receive audio calls."
msgstr "在這臺電腦中偵測不到音效卡。\n您將無法傳送或接收語音電話。"
#: ../gtk/main.c:2120
#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
msgstr "自由的 SIP 視訊電話"
#: ../gtk/main.c:2229
#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
msgstr ""
@ -570,7 +570,7 @@ msgstr ""
msgid "Error"
msgstr ""
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
msgstr ""
@ -776,101 +776,101 @@ msgstr ""
msgid "Downloading of remote configuration from %s failed."
msgstr ""
#: ../gtk/audio_assistant.c:98
#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
msgstr ""
#: ../gtk/audio_assistant.c:99
#: ../gtk/audio_assistant.c:104
msgid "Too low"
msgstr ""
#: ../gtk/audio_assistant.c:100
#: ../gtk/audio_assistant.c:105
msgid "Good"
msgstr ""
#: ../gtk/audio_assistant.c:101
#: ../gtk/audio_assistant.c:106
msgid "Too loud"
msgstr ""
#: ../gtk/audio_assistant.c:183
#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
msgstr ""
#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297
#: ../gtk/audio_assistant.c:299 ../gtk/audio_assistant.c:304
msgid "Sound preferences not found "
msgstr ""
#: ../gtk/audio_assistant.c:306
#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
msgstr ""
#: ../gtk/audio_assistant.c:318
#: ../gtk/audio_assistant.c:325
msgid ""
"Welcome!\n"
"This assistant will help you to configure audio settings for Linphone"
msgstr ""
#: ../gtk/audio_assistant.c:328
#: ../gtk/audio_assistant.c:335
msgid "Capture device"
msgstr ""
#: ../gtk/audio_assistant.c:329
#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
msgstr ""
#: ../gtk/audio_assistant.c:333
#: ../gtk/audio_assistant.c:340
msgid "No voice"
msgstr ""
#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373
#: ../gtk/audio_assistant.c:341 ../gtk/audio_assistant.c:380
msgid "System sound preferences"
msgstr ""
#: ../gtk/audio_assistant.c:369
#: ../gtk/audio_assistant.c:376
msgid "Playback device"
msgstr ""
#: ../gtk/audio_assistant.c:370
#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
msgstr ""
#: ../gtk/audio_assistant.c:403
#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
msgstr ""
#: ../gtk/audio_assistant.c:404
#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
msgstr ""
#: ../gtk/audio_assistant.c:405
#: ../gtk/audio_assistant.c:412
msgid "Record"
msgstr ""
#: ../gtk/audio_assistant.c:406
#: ../gtk/audio_assistant.c:413
msgid "Play"
msgstr ""
#: ../gtk/audio_assistant.c:433
#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
msgstr ""
#: ../gtk/audio_assistant.c:503
#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
msgstr ""
#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:32
#: ../gtk/audio_assistant.c:520 ../gtk/main.ui.h:32
msgid "Audio assistant"
msgstr ""
#: ../gtk/audio_assistant.c:518
#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
msgstr ""
#: ../gtk/audio_assistant.c:524
#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
msgstr ""
#: ../gtk/audio_assistant.c:529
#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
msgstr ""
@ -1747,60 +1747,60 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
#: ../coreapi/linphonecore.c:1567
#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "準備就緒"
#: ../coreapi/linphonecore.c:2583
#: ../coreapi/linphonecore.c:2413
msgid "Configuring"
msgstr ""
#: ../coreapi/linphonecore.c:2757
#: ../coreapi/linphonecore.c:2587
msgid "Looking for telephone number destination..."
msgstr "尋找電話號碼目的端..."
#: ../coreapi/linphonecore.c:2759
#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "無法解析這個號碼。"
#. must be known at that time
#: ../coreapi/linphonecore.c:3045
#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "正在連絡"
#: ../coreapi/linphonecore.c:3050
#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
msgstr "無法通話"
#: ../coreapi/linphonecore.c:3201
#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
msgstr "抱歉,我們已達瀏同步通話的最大數目"
#: ../coreapi/linphonecore.c:3359
#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
msgstr "正在連絡您"
#: ../coreapi/linphonecore.c:3360
#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
msgstr "並要求自動接聽。"
#: ../coreapi/linphonecore.c:3486
#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
msgstr "修改通話參數..."
#: ../coreapi/linphonecore.c:3865
#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "已連線。"
#: ../coreapi/linphonecore.c:3890
#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
msgstr "通話已放棄"
#: ../coreapi/linphonecore.c:4087
#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
msgstr "無法暫停通話"
#: ../coreapi/linphonecore.c:4090
#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
msgstr "暫停目前的通話..."
@ -1876,7 +1876,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "您輸入的 sip 身分是無效的。\n它應該看起來像 sip:使用者名稱@代理網域,像是 sip:alice@example.net"
#: ../coreapi/proxy.c:1427
#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "無法以 %s 登入"
@ -2000,7 +2000,7 @@ msgstr ""
msgid "Call parameters were successfully modified."
msgstr ""
#: ../coreapi/linphonecall.c:3822
#: ../coreapi/linphonecall.c:3826
#, c-format
msgid "You have missed %i call."
msgid_plural "You have missed %i calls."

View file

@ -363,7 +363,6 @@ void simple_call_base(bool_t enable_multicast_recv_side) {
const LinphoneAddress *from;
LinphoneCall *pauline_call;
LinphoneProxyConfig* marie_cfg;
const char* marie_id = NULL;
belle_sip_object_enable_leak_detector(TRUE);
begin=belle_sip_object_get_object_count();
@ -373,9 +372,8 @@ void simple_call_base(bool_t enable_multicast_recv_side) {
/* with the account manager, we might lose the identity */
marie_cfg = linphone_core_get_default_proxy_config(marie->lc);
marie_id = linphone_proxy_config_get_identity(marie_cfg);
{
LinphoneAddress* marie_addr = linphone_address_new(marie_id);
LinphoneAddress* marie_addr = linphone_address_clone(linphone_proxy_config_get_identity_address(marie_cfg));
char* marie_tmp_id = NULL;
linphone_address_set_display_name(marie_addr, "Super Marie");
marie_tmp_id = linphone_address_as_string(marie_addr);
@ -385,7 +383,7 @@ void simple_call_base(bool_t enable_multicast_recv_side) {
linphone_proxy_config_done(marie_cfg);
ms_free(marie_tmp_id);
linphone_address_unref(marie_addr);
linphone_address_destroy(marie_addr);
}
linphone_core_enable_audio_multicast(pauline->lc,enable_multicast_recv_side);
@ -695,14 +693,14 @@ static void simple_call_compatibility_mode(void) {
stats* stat_marie=&marie->stat;
stats* stat_pauline=&pauline->stat;
LinphoneProxyConfig* proxy;
LinphoneAddress* identity;
const LinphoneAddress* identity;
LinphoneAddress* proxy_address;
char*tmp;
LCSipTransports transport;
linphone_core_get_default_proxy(lc_marie,&proxy);
BC_ASSERT_PTR_NOT_NULL (proxy);
identity = linphone_address_new(linphone_proxy_config_get_identity(proxy));
identity = linphone_proxy_config_get_identity_address(proxy);
proxy_address=linphone_address_new(linphone_proxy_config_get_addr(proxy));
@ -733,7 +731,6 @@ static void simple_call_compatibility_mode(void) {
BC_ASSERT_PTR_NOT_NULL(linphone_core_get_current_call_remote_address(lc_pauline));
if (linphone_core_get_current_call_remote_address(lc_pauline)) {
BC_ASSERT_TRUE(linphone_address_weak_equal(identity,linphone_core_get_current_call_remote_address(lc_pauline)));
linphone_address_destroy(identity);
linphone_core_accept_call(lc_pauline,linphone_core_get_current_call(lc_pauline));
@ -2314,9 +2311,6 @@ static void call_with_file_player(void) {
/*make sure the record file doesn't already exists, otherwise this test will append new samples to it*/
unlink(recordpath);
// inter-correlation is very sensitive to variable offset when comparing files, so using a fixed jitter
// buffer length should help it a lot.
linphone_core_enable_audio_adaptive_jittcomp(pauline->lc, FALSE);
/*caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player*/
linphone_core_use_files(marie->lc,TRUE);
@ -2832,17 +2826,15 @@ static void call_established_with_complex_rejected_operation(void) {
linphone_call_send_info_message(linphone_core_get_current_call(marie->lc),linphone_core_create_info_message(marie->lc));
/*by chance, UPDATES can be sent in // to invite, but drawback is that it will not be rejected with 491*/
params=linphone_core_create_call_params(marie->lc,linphone_core_get_current_call(marie->lc));
params->no_user_consent=TRUE;
sal_enable_pending_trans_checking(marie->lc->sal,FALSE); /*to allow // transactions*/
linphone_core_enable_payload_type(marie->lc,linphone_core_find_payload_type(marie->lc,"PCMU",8000,1),TRUE);
linphone_core_enable_payload_type(marie->lc,linphone_core_find_payload_type(marie->lc,"PCMA",8000,1),FALSE);
linphone_core_update_call( marie->lc
,linphone_core_get_current_call(marie->lc)
,params);
linphone_call_params_destroy(params);
BC_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,3));
@ -2862,6 +2854,58 @@ static void call_established_with_complex_rejected_operation(void) {
linphone_core_manager_destroy(pauline);
}
static void call_established_with_rejected_info_during_reinvite(void) {
LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc");
LinphoneCoreManager* pauline = linphone_core_manager_new(transport_supported(LinphoneTransportTls) ? "pauline_rc" : "pauline_tcp_rc");
bool_t call_ok=FALSE;
BC_ASSERT_TRUE((call_ok=call(pauline,marie)));
if (call_ok){
BC_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,1));
BC_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,1));
linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/
linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/
linphone_core_enable_payload_type(marie->lc,linphone_core_find_payload_type(marie->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/
linphone_core_enable_payload_type(marie->lc,linphone_core_find_payload_type(marie->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/
/*just to authenticate marie*/
linphone_call_send_info_message(linphone_core_get_current_call(marie->lc),linphone_core_create_info_message(marie->lc));
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_inforeceived,1));
BC_ASSERT_EQUAL(pauline->stat.number_of_inforeceived,1, int, "%d");
/*to give time for 200ok to arrive*/
wait_for_until(marie->lc,pauline->lc,NULL,0,1000);
//sal_enable_pending_trans_checking(marie->lc->sal,FALSE); /*to allow // transactions*/
linphone_call_send_info_message(linphone_core_get_current_call(marie->lc),linphone_core_create_info_message(marie->lc));
//sal_set_send_error(marie->lc->sal, -1); /*to avoid 491 pending to be sent*/
linphone_core_update_call( pauline->lc
,linphone_core_get_current_call(pauline->lc)
,linphone_call_get_current_params(linphone_core_get_current_call(pauline->lc)));
wait_for_until(pauline->lc,pauline->lc,NULL,0,2000); /*to avoid 491 pending to be sent to early*/
BC_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2));
/*just to sleep*/
linphone_core_terminate_all_calls(pauline->lc);
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1));
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1));
}
linphone_core_manager_destroy(marie);
linphone_core_manager_destroy(pauline);
}
static void call_established_with_rejected_reinvite(void) {
LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc");
@ -2990,22 +3034,32 @@ static void call_redirect(void){
}
static void call_established_with_rejected_reinvite_with_error(void) {
static void call_established_with_rejected_reinvite_with_error_base(bool_t trans_pending) {
LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc");
LinphoneCoreManager* pauline = linphone_core_manager_new(transport_supported(LinphoneTransportTls) ? "pauline_rc" : "pauline_tcp_rc");
bool_t call_ok=TRUE;
int result;
BC_ASSERT_TRUE((call_ok=call(pauline,marie)));
if (call_ok){
linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*add PCMA*/
sal_enable_unconditional_answer(marie->lc->sal,TRUE);
if (trans_pending) {
LinphoneInfoMessage * info = linphone_core_create_info_message(pauline->lc);
linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),info);
linphone_core_update_call( pauline->lc
} else
sal_enable_unconditional_answer(marie->lc->sal,TRUE);
result = linphone_core_update_call( pauline->lc
,linphone_core_get_current_call(pauline->lc)
,linphone_call_get_current_params(linphone_core_get_current_call(pauline->lc)));
if (trans_pending)
BC_ASSERT_NOT_EQUAL(result,0, int, "%d");
else
BC_ASSERT_EQUAL(result,0,int, "%d");
BC_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2));
@ -3015,6 +3069,9 @@ static void call_established_with_rejected_reinvite_with_error(void) {
check_call_state(pauline,LinphoneCallStreamsRunning);
check_call_state(marie,LinphoneCallStreamsRunning);
if (!trans_pending)
sal_enable_unconditional_answer(marie->lc->sal,FALSE);
/*just to sleep*/
linphone_core_terminate_all_calls(pauline->lc);
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1));
@ -3025,6 +3082,14 @@ static void call_established_with_rejected_reinvite_with_error(void) {
linphone_core_manager_destroy(pauline);
}
static void call_established_with_rejected_reinvite_with_error(void) {
call_established_with_rejected_reinvite_with_error_base(FALSE);
}
static void call_established_with_rejected_reinvite_with_trans_pending_error(void) {
call_established_with_rejected_reinvite_with_error_base(TRUE);
}
static void call_rejected_because_wrong_credentials_with_params(const char* user_agent,bool_t enable_auth_req_cb) {
LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc");
LinphoneAuthInfo* good_auth_info=linphone_auth_info_clone(linphone_core_find_auth_info(marie->lc,NULL,linphone_address_get_username(marie->identity),NULL));
@ -4145,10 +4210,6 @@ static void simple_stereo_call(const char *codec_name, int clock_rate, int bitra
marie = linphone_core_manager_new( "marie_rc");
pauline = linphone_core_manager_new(transport_supported(LinphoneTransportTls) ? "pauline_rc" : "pauline_tcp_rc");
// inter-correlation is very sensitive to variable offset when comparing files, so using a fixed jitter
// buffer length should help it a lot.
linphone_core_enable_audio_adaptive_jittcomp(pauline->lc, FALSE);
/*make sure we have opus*/
pt = linphone_core_find_payload_type(marie->lc, codec_name, clock_rate, 2);
if (!pt) {
@ -4174,14 +4235,14 @@ static void simple_stereo_call(const char *codec_name, int clock_rate, int bitra
lp_config_set_string(pauline->lc->config,"sound","features","NONE");
if (!BC_ASSERT_TRUE(call(pauline,marie))) goto end;
wait_for_until(marie->lc, pauline->lc, &dummy, 1,1000);
wait_for_until(marie->lc, pauline->lc, &dummy, 1,6000);
end_call(pauline, marie);
if (clock_rate!=48000) {
ms_warning("Similarity checking not implemented for files not having the same sampling rate");
}else{
#if !defined(__arm__) && !defined(__arm64__) && !defined(TARGET_IPHONE_SIMULATOR) && !defined(ANDROID)
#if !defined(__arm__) && !defined(__arm64__) && !TARGET_IPHONE_SIMULATOR && !defined(ANDROID)
double similar;
const double threshold = .7f;
BC_ASSERT_EQUAL(ms_audio_diff(stereo_file,recordpath,&similar,audio_cmp_max_shift,NULL,NULL), 0, int, "%d");
@ -4194,6 +4255,7 @@ end:
linphone_core_manager_destroy(marie);
linphone_core_manager_destroy(pauline);
ms_free(stereo_file);
unlink(recordpath);
ms_free(recordpath);
leaked_objects=belle_sip_object_get_object_count()-begin;
@ -4216,6 +4278,96 @@ static void simple_mono_call_opus(void){
simple_stereo_call("opus", 48000, 150, FALSE);
}
static void call_with_fqdn_in_sdp(void) {
LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc");
LinphoneCoreManager* pauline = linphone_core_manager_new(transport_supported(LinphoneTransportTls) ? "pauline_rc" : "pauline_tcp_rc");
LpConfig *lp;
bool_t call_ok;
lp = linphone_core_get_config(marie->lc);
lp_config_set_string(lp,"rtp","bind_address","localhost");
lp = linphone_core_get_config(pauline->lc);
lp_config_set_string(lp,"rtp","bind_address","localhost");
BC_ASSERT_TRUE(call_ok=call(pauline,marie));
if (!call_ok) goto end;
liblinphone_tester_check_rtcp(pauline,marie);
#ifdef VIDEO_ENABLED
BC_ASSERT_TRUE(add_video(pauline,marie, TRUE));
liblinphone_tester_check_rtcp(pauline,marie);
#endif
/*just to sleep*/
linphone_core_terminate_all_calls(pauline->lc);
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1));
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1));
end:
linphone_core_manager_destroy(marie);
linphone_core_manager_destroy(pauline);
}
static void call_with_rtp_io_mode(void) {
LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc");
LinphoneCoreManager* pauline = linphone_core_manager_new(transport_supported(LinphoneTransportTls) ? "pauline_rc" : "pauline_tcp_rc");
LinphonePlayer *player;
char *hellopath = bc_tester_res("sounds/ahbahouaismaisbon.wav");
char *recordpath = create_filepath(bc_tester_get_writable_dir_prefix(), "record-call_with_file_player", "wav");
bool_t call_ok;
/* Make sure that the record file doesn't already exists, otherwise this test will append new samples to it. */
unlink(recordpath);
/* The caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player. */
linphone_core_use_files(marie->lc, TRUE);
linphone_core_set_play_file(marie->lc, NULL);
linphone_core_set_record_file(marie->lc, recordpath);
/* The callee uses the RTP IO mode with the PCMU codec to send back audio to the caller. */
disable_all_audio_codecs_except_one(pauline->lc, "pcmu", -1);
lp_config_set_int(pauline->lc->config, "sound", "rtp_io", 1);
lp_config_set_string(pauline->lc->config, "sound", "rtp_local_addr", "127.0.0.1");
lp_config_set_string(pauline->lc->config, "sound", "rtp_remote_addr", "127.0.0.1");
lp_config_set_int(pauline->lc->config, "sound", "rtp_local_port", 17076);
lp_config_set_int(pauline->lc->config, "sound", "rtp_remote_port", 17076);
lp_config_set_string(pauline->lc->config, "sound", "rtp_map", "pcmu/8000/1");
BC_ASSERT_TRUE((call_ok = call(marie, pauline)));
if (!call_ok) goto end;
player = linphone_call_get_player(linphone_core_get_current_call(marie->lc));
BC_ASSERT_PTR_NOT_NULL(player);
if (player) {
BC_ASSERT_TRUE(linphone_player_open(player, hellopath, on_eof, marie) == 0);
BC_ASSERT_TRUE(linphone_player_start(player) == 0);
}
/* This assert should be modified to be at least as long as the WAV file */
BC_ASSERT_TRUE(wait_for_until(pauline->lc, marie->lc, &marie->stat.number_of_player_eof, 1, 10000));
linphone_core_terminate_all_calls(marie->lc);
BC_ASSERT_TRUE(wait_for(pauline->lc, marie->lc, &pauline->stat.number_of_LinphoneCallEnd, 1));
BC_ASSERT_TRUE(wait_for(pauline->lc, marie->lc, &marie->stat.number_of_LinphoneCallEnd, 1));
if (ms_tags_list_contains_tag(ms_factory_get_platform_tags(ms_factory_get_fallback()), "embedded")) {
ms_warning("Cannot run audio diff on embedded platform");
remove(recordpath);
} else {
double similar;
const int threshold = 90;
BC_ASSERT_EQUAL(ms_audio_diff(hellopath, recordpath, &similar, audio_cmp_max_shift, NULL, NULL), 0, int, "%d");
BC_ASSERT_GREATER(100 * similar, threshold, int, "%d");
BC_ASSERT_LOWER(100 * similar, 100, int, "%d");
if ((threshold < (100 * similar)) && ((100 * similar) < 100)) {
remove(recordpath);
}
}
end:
linphone_core_manager_destroy(marie);
linphone_core_manager_destroy(pauline);
ms_free(recordpath);
ms_free(hellopath);
}
test_t call_tests[] = {
{ "Early declined call", early_declined_call },
{ "Call declined", call_declined },
@ -4317,7 +4469,9 @@ test_t call_tests[] = {
{ "Call established with rejected RE-INVITE",call_established_with_rejected_reinvite},
{ "Call established with rejected incoming RE-INVITE", call_established_with_rejected_incoming_reinvite },
{ "Call established with rejected RE-INVITE in error", call_established_with_rejected_reinvite_with_error},
{ "Call established with rejected RE-INVITE with trans pending error", call_established_with_rejected_reinvite_with_trans_pending_error},
{ "Call established with complex rejected operation",call_established_with_complex_rejected_operation},
{ "Call established with rejected info during re-invite",call_established_with_rejected_info_during_reinvite},
{ "Call redirected by callee", call_redirect},
{ "Call with specified codec bitrate", call_with_specified_codec_bitrate},
{ "Call with in-dialog UPDATE request", call_with_in_dialog_update },
@ -4338,7 +4492,9 @@ test_t call_tests[] = {
{ "Unsuccessful call with transport change after released",unsucessfull_call_with_transport_change_after_released},
{ "Simple stereo call with L16", simple_stereo_call_l16 },
{ "Simple stereo call with opus", simple_stereo_call_opus },
{ "Simple mono call with opus", simple_mono_call_opus }
{ "Simple mono call with opus", simple_mono_call_opus },
{ "Call with FQDN in SDP", call_with_fqdn_in_sdp},
{ "Call with RTP IO mode", call_with_rtp_io_mode }
};
test_suite_t call_test_suite = {

View file

@ -777,7 +777,7 @@ static void file_transfer_message_rcs_to_external_body_client(void) {
reset_counters(&pauline->stat);
}
linphone_chat_message_cbs_set_msg_state_changed(cbs,liblinphone_tester_chat_message_msg_state_changed);
linphone_chat_message_cbs_set_file_transfer_send(cbs, file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_send(cbs, tester_file_transfer_send);
linphone_chat_room_send_chat_message(chat_room,message);
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageExtBodyReceived,1));
fclose(file_to_send);

View file

@ -169,7 +169,7 @@ void liblinphone_tester_uninit(void) {
}
#if !defined(ANDROID) && !__ios && !(defined(LINPHONE_WINDOWS_PHONE) || defined(LINPHONE_WINDOWS_UNIVERSAL))
#if !__ios && !(defined(LINPHONE_WINDOWS_PHONE) || defined(LINPHONE_WINDOWS_UNIVERSAL))
static const char* liblinphone_helper =
"\t\t\t--verbose\n"
@ -196,6 +196,14 @@ int main (int argc, char *argv[])
liblinphone_tester_init(NULL);
if (strstr(argv[0], ".libs")) {
char res_dir[128] = {0};
// this allows to launch liblinphone_tester from outside of tester directory
strncpy(res_dir, argv[0], strstr(argv[0], ".libs")-argv[0]);
bc_tester_set_resource_dir_prefix(res_dir);
bc_tester_set_writable_dir_prefix(res_dir);
}
for(i = 1; i < argc; ++i) {
if (strcmp(argv[i], "--verbose") == 0) {
linphone_core_set_log_level_mask(ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL);
@ -226,14 +234,14 @@ int main (int argc, char *argv[])
} else if (strcmp(argv[i],"--keep-recorded-files")==0){
liblinphone_tester_keep_recorded_files(TRUE);
} else {
int ret = bc_tester_parse_args(argc, argv, i);
if (ret>0) {
i += ret - 1;
int bret = bc_tester_parse_args(argc, argv, i);
if (bret>0) {
i += bret - 1;
continue;
} else if (ret<0) {
} else if (bret<0) {
bc_tester_helper(argv[0], liblinphone_helper);
}
return ret;
return bret;
}
}

View file

@ -262,8 +262,8 @@ void notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf);
void text_message_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from_address, const char *message);
void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage* message);
void file_transfer_received(LinphoneChatMessage *message, const LinphoneContent* content, const LinphoneBuffer *buffer);
LinphoneBuffer * file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size);
LinphoneBuffer * memory_file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size);
LinphoneBuffer * tester_file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size);
LinphoneBuffer * tester_memory_file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size);
void file_transfer_progress_indication(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total);
void is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room);
void info_message_received(LinphoneCore *lc, LinphoneCall *call, const LinphoneInfoMessage *msg);

View file

@ -91,13 +91,13 @@ char big_file[128000]; /* a buffer to simulate a big file for the file transfer
/*
* function called when the file transfer is initiated. file content should be feed into object LinphoneContent
* */
LinphoneBuffer * file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size){
LinphoneBuffer * tester_file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size){
LinphoneBuffer *lb;
size_t file_size;
size_t size_to_send;
FILE *file_to_send;
uint8_t *buf;
if (size == 0) return linphone_buffer_new(); /*end of file*/
file_to_send = linphone_chat_message_get_user_data(message);
fseek(file_to_send, 0, SEEK_END);
file_size = ftell(file_to_send);
@ -105,16 +105,15 @@ LinphoneBuffer * file_transfer_send(LinphoneChatMessage *message, const Linphone
size_to_send = MIN(size, file_size - offset);
buf = ms_malloc(size_to_send);
if (fread(buf, size_to_send, 1, file_to_send)!=size_to_send){
ms_error("fread error");
// reaching end of file
}
lb = linphone_buffer_new_from_data(buf, size_to_send);
ms_free(buf);
return lb;
}
LinphoneBuffer * memory_file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size){
LinphoneBuffer * tester_memory_file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size){
size_t size_to_send = MIN(size, sizeof(big_file) - offset);
if (size == 0) return linphone_buffer_new(); /*end of file*/
return linphone_buffer_new_from_data((uint8_t *)big_file + offset, size_to_send);
}
@ -484,7 +483,7 @@ static void file_transfer_message(void) {
reset_counters(&pauline->stat);
}
linphone_chat_message_cbs_set_msg_state_changed(cbs,liblinphone_tester_chat_message_msg_state_changed);
linphone_chat_message_cbs_set_file_transfer_send(cbs, file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_send(cbs, tester_file_transfer_send);
linphone_chat_room_send_chat_message(chat_room,message);
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1));
fclose(file_to_send);
@ -553,7 +552,7 @@ static void small_file_transfer_message(void) {
}
cbs = linphone_chat_message_get_callbacks(message);
linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed);
linphone_chat_message_cbs_set_file_transfer_send(cbs, memory_file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_send(cbs, tester_memory_file_transfer_send);
linphone_chat_room_send_chat_message(chat_room,message);
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1));
if (marie->stat.last_received_chat_message ) {
@ -660,7 +659,7 @@ static void lime_file_transfer_message_base(bool_t encrypt_file) {
cbs = linphone_chat_message_get_callbacks(message);
linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed);
linphone_chat_message_cbs_set_file_transfer_send(cbs, memory_file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_send(cbs, tester_memory_file_transfer_send);
linphone_chat_room_send_chat_message(chat_room,message);
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1));
if (marie->stat.last_received_chat_message ) {
@ -957,7 +956,7 @@ static void file_transfer_message_io_error_upload(void) {
}
cbs = linphone_chat_message_get_callbacks(message);
linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed);
linphone_chat_message_cbs_set_file_transfer_send(cbs, memory_file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_send(cbs, tester_memory_file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_progress_indication(cbs, file_transfer_progress_indication);
linphone_chat_room_send_chat_message(chat_room,message);
@ -1095,7 +1094,7 @@ static void file_transfer_message_upload_cancelled(void) {
}
cbs = linphone_chat_message_get_callbacks(message);
linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed);
linphone_chat_message_cbs_set_file_transfer_send(cbs, memory_file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_send(cbs, tester_memory_file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_progress_indication(cbs, file_transfer_progress_indication);
linphone_chat_room_send_chat_message(chat_room,message);
@ -1219,7 +1218,7 @@ static void file_transfer_using_external_body_url(void) {
}
}
static void file_transfer_message_two_messages() {
static void file_transfer_2_messages_simultaneously() {
if (transport_supported(LinphoneTransportTls)) {
LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc");
char* to;
@ -1259,19 +1258,26 @@ static void file_transfer_message_two_messages() {
linphone_chat_message_set_user_data(message, file_to_send);
message2 = linphone_chat_room_create_file_transfer_message(pauline_room, content);
linphone_chat_message_set_user_data(message2, file_to_send);
linphone_content_unref(content);
{
/*just to have time to purge message stored in the server*/
int dummy=0;
wait_for_until(marie->lc,pauline->lc,&dummy,1,100); /*just to have time to purge message stored in the server*/
wait_for_until(marie->lc,pauline->lc,&dummy,1,100);
reset_counters(&marie->stat);
reset_counters(&pauline->stat);
}
cbs = linphone_chat_message_get_callbacks(message);
linphone_chat_message_cbs_set_msg_state_changed(cbs,liblinphone_tester_chat_message_msg_state_changed);
linphone_chat_message_cbs_set_file_transfer_send(cbs, file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_send(cbs, tester_file_transfer_send);
cbs = linphone_chat_message_get_callbacks(message2);
linphone_chat_message_cbs_set_msg_state_changed(cbs,liblinphone_tester_chat_message_msg_state_changed);
linphone_chat_message_cbs_set_file_transfer_send(cbs, file_transfer_send);
linphone_chat_message_cbs_set_file_transfer_send(cbs, tester_file_transfer_send);
BC_ASSERT_EQUAL(ms_list_size(linphone_core_get_chat_rooms(marie->lc)), 0, int, "%d");
linphone_chat_room_send_chat_message(pauline_room,message);
linphone_chat_room_send_chat_message(pauline_room,message2);
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1));
@ -1279,8 +1285,17 @@ static void file_transfer_message_two_messages() {
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,2));
message2 = marie->stat.last_received_chat_message;
fclose(file_to_send);
BC_ASSERT_EQUAL(ms_list_size(linphone_core_get_chat_rooms(marie->lc)), 1, int, "%d");
if (ms_list_size(linphone_core_get_chat_rooms(marie->lc)) != 1) {
char * buf = ms_strdup_printf("Found %d rooms instead of 1: ", ms_list_size(linphone_core_get_chat_rooms(marie->lc)));
MSList *it = linphone_core_get_chat_rooms(marie->lc);
while (it) {
const LinphoneAddress * peer = linphone_chat_room_get_peer_address(it->data);
buf = ms_strcat_printf("%s, ", linphone_address_get_username(peer));
it = it->next;
}
ms_error("%s", buf);
}
cbs = linphone_chat_message_get_callbacks(message);
linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed);
@ -1299,7 +1314,6 @@ static void file_transfer_message_two_messages() {
BC_ASSERT_TRUE(compare_files(send_filepath, receive_filepath));
linphone_chat_message_unref(message);
linphone_content_unref(content);
linphone_core_manager_destroy(pauline);
ms_free(send_filepath);
ms_free(receive_filepath);
@ -1696,7 +1710,7 @@ test_t message_tests[] = {
{ "File transfer message upload cancelled", file_transfer_message_upload_cancelled },
{ "File transfer message download cancelled", file_transfer_message_download_cancelled },
{ "File transfer message using external body url", file_transfer_using_external_body_url },
{ "File transfer 2 messages simultaneously", file_transfer_message_two_messages },
{ "File transfer 2 messages simultaneously", file_transfer_2_messages_simultaneously },
{ "Text message denied", text_message_denied },
{ "Info message", info_message },
{ "Info message with body", info_message_with_body },

View file

@ -78,10 +78,26 @@ static void phone_normalization_with_dial_escape_plus(void){
linphone_proxy_config_destroy(proxy);
}
#define SIP_URI_CHECK(actual, expected) { \
LinphoneAddress* res = linphone_proxy_config_normalize_sip_uri(NULL, actual); \
char* actual_str = linphone_address_as_string_uri_only(res); \
BC_ASSERT_STRING_EQUAL(actual_str, expected); \
ms_free(actual_str); \
linphone_address_destroy(res); \
}
static void sip_uri_normalization(void) {
BC_ASSERT_PTR_NULL(linphone_proxy_config_normalize_sip_uri(NULL, "test"));
SIP_URI_CHECK("test@linphone.org", "sip:test@linphone.org");
SIP_URI_CHECK("test@linphone.org;transport=tls", "sip:test@linphone.org;transport=tls");
}
test_t proxy_config_tests[] = {
{ "Phone normalization without proxy", phone_normalization_without_proxy },
{ "Phone normalization with proxy", phone_normalization_with_proxy },
{ "Phone normalization with dial escape plus", phone_normalization_with_dial_escape_plus },
{ "SIP URI normalization", sip_uri_normalization },
};
test_suite_t proxy_config_test_suite = {

View file

@ -170,6 +170,8 @@ static void quality_reporting_not_sent_if_call_not_started() {
linphone_core_set_max_calls(pauline->lc,0);
out_call = linphone_core_invite(marie->lc,"pauline");
BC_ASSERT_PTR_NOT_NULL(out_call);
if(out_call == NULL) goto end;
linphone_call_ref(out_call);
BC_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallError,1, 10000));
@ -189,6 +191,7 @@ static void quality_reporting_not_sent_if_call_not_started() {
BC_ASSERT_EQUAL(marie->stat.number_of_LinphonePublishProgress,0, int, "%d");
BC_ASSERT_EQUAL(marie->stat.number_of_LinphonePublishOk,0, int, "%d");
end:
linphone_core_manager_destroy(marie);
linphone_core_manager_destroy(pauline);
}

View file

@ -680,7 +680,7 @@ static void io_recv_error_retry_immediatly(){
BC_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationFailed,0,int,"%d");
sal_set_recv_error(lc->sal, 1); /*reset*/
BC_ASSERT_TRUE(wait_for(lc,lc,&counters->number_of_LinphoneRegistrationOk,register_ok-number_of_udp_proxy+register_ok));
BC_ASSERT_TRUE(wait_for_until(lc,lc,&counters->number_of_LinphoneRegistrationOk,register_ok-number_of_udp_proxy+register_ok,30000));
linphone_core_manager_destroy(lcm);
}

Binary file not shown.

View file

@ -240,6 +240,7 @@ bool_t transport_supported(LinphoneTransportType transport) {
LinphoneCoreManager* linphone_core_manager_init(const char* rc_file) {
LinphoneCoreManager* mgr= ms_new0(LinphoneCoreManager,1);
char *rc_path = NULL;
char *hellopath = bc_tester_res("sounds/hello8000.wav");
mgr->number_of_cunit_error_at_creation = CU_get_number_of_failures();
mgr->v_table.registration_state_changed=registration_state_changed;
mgr->v_table.auth_info_requested=auth_info_requested;
@ -289,16 +290,17 @@ LinphoneCoreManager* linphone_core_manager_init(const char* rc_file) {
#endif
linphone_core_set_play_file(mgr->lc,hellopath); /*is also used when in pause*/
ms_free(hellopath);
if( manager_count >= 2){
char *hellopath = bc_tester_res("sounds/hello8000.wav");
char *recordpath = ms_strdup_printf("%s/record_for_lc_%p.wav",bc_tester_get_writable_dir_prefix(),mgr->lc);
ms_message("Manager for '%s' using files", rc_file ? rc_file : "--");
linphone_core_set_use_files(mgr->lc, TRUE);
linphone_core_set_play_file(mgr->lc,hellopath);
linphone_core_set_record_file(mgr->lc,recordpath);
ms_free(recordpath);
ms_free(hellopath);
}
linphone_core_set_user_certificates_path(mgr->lc,bc_tester_get_writable_dir_prefix());
if (rc_path) ms_free(rc_path);
@ -329,7 +331,7 @@ void linphone_core_manager_start(LinphoneCoreManager *mgr, const char* rc_file,
linphone_core_get_default_proxy(mgr->lc,&proxy);
if (proxy) {
mgr->identity = linphone_address_new(linphone_proxy_config_get_identity(proxy));
mgr->identity = linphone_address_clone(linphone_proxy_config_get_identity_address(proxy));
linphone_address_clean(mgr->identity);
}
}

View file

@ -46,15 +46,9 @@ static const char* get_ip_from_hostname(const char * tunnel_hostname){
return output;
}
static char* get_public_contact_ip(LinphoneCore* lc) {
long contact_host_ip_len;
char contact_host_ip[255];
char * contact = linphone_proxy_config_get_contact(linphone_core_get_default_proxy_config(lc));
const LinphoneAddress * contact = linphone_proxy_config_get_contact(linphone_core_get_default_proxy_config(lc));
BC_ASSERT_PTR_NOT_NULL(contact);
contact_host_ip_len = strchr(contact, ':')-contact;
strncpy(contact_host_ip, contact, contact_host_ip_len);
contact_host_ip[contact_host_ip_len]='\0';
ms_free(contact);
return ms_strdup(contact_host_ip);
return ms_strdup(linphone_address_get_domain(contact));
}

View file

@ -38,13 +38,13 @@ extern void *gdk_quartz_window_get_nsview(GdkWindow *window);
#include <gdk/gdkkeysyms.h>
static unsigned long get_native_handle(GdkWindow *gdkw) {
static void *get_native_handle(GdkWindow *gdkw) {
#ifdef GDK_WINDOWING_X11
return (unsigned long)GDK_WINDOW_XID(gdkw);
return (void *)GDK_WINDOW_XID(gdkw);
#elif defined(_WIN32)
return (unsigned long)GDK_WINDOW_HWND(gdkw);
return (void *)GDK_WINDOW_HWND(gdkw);
#elif defined(__APPLE__)
return (unsigned long)gdk_quartz_window_get_nsview(gdkw);
return (void *)gdk_quartz_window_get_nsview(gdkw);
#endif
g_warning("No way to get the native handle from gdk window");
return 0;

View file

@ -76,6 +76,9 @@ hand_written_functions = [
HandWrittenClassMethod('Buffer', 'new_from_data', 'linphone_buffer_new_from_data', "Create a new LinphoneBuffer object from existing data.\n\n:param data: The initial data to store in the LinphoneBuffer.\n:type data: ByteArray\n:returns: A new LinphoneBuffer object.\n:rtype: linphone.Buffer"),
HandWrittenProperty('Buffer', 'content', 'linphone_buffer_get_content', 'linphone_buffer_set_content', "[ByteArray] Set the content of the data buffer."),
HandWrittenProperty('Content', 'buffer', 'linphone_content_get_buffer', 'linphone_content_set_buffer', "[ByteArray] Set the content data buffer."),
HandWrittenProperty('Call', 'native_video_window_id', 'linphone_call_get_native_video_window_id', 'linphone_call_set_native_video_window_id', "[int] Set the native video window id where the video is to be displayed."),
HandWrittenProperty('Core', 'native_preview_window_id', 'linphone_core_get_native_preview_window_id', 'linphone_core_set_native_preview_window_id', "[int] Set the native window id where the preview video (local camera) is to be displayed. This has to be used in conjonction with :py:meth:`linphone.Core.use_preview_window` . MacOS, Linux, Windows: if not set or zero the core will create its own window, unless the special id -1 is given."),
HandWrittenProperty('Core', 'native_video_window_id', 'linphone_core_get_native_video_window_id', 'linphone_core_set_native_video_window_id', "[int] Set the native video window id where the video is to be displayed. For MacOS, Linux, Windows: if not set or LINPHONE_VIDEO_DISPLAY_AUTO the core will create its own window, unless the special id LINPHONE_VIDEO_DISPLAY_NONE is given."),
HandWrittenProperty('Core', 'sip_transports', 'linphone_core_get_sip_transports', 'linphone_core_set_sip_transports', "[:py:class:`linphone.SipTransports`] Sets the ports to be used for each transport. A zero value port for a given transport means the transport is not used. A value of LC_SIP_TRANSPORT_RANDOM (-1) means the port is to be chosen randomly by the system."),
HandWrittenProperty('Core', 'sip_transports_used', 'linphone_core_get_sip_transports_used', None, "[:py:class:`linphone.SipTransports`] Retrieves the real port number assigned for each sip transport (udp, tcp, tls). A zero value means that the transport is not activated. If LC_SIP_TRANSPORT_RANDOM was passed to :py:attr:`linphone.Core.sip_transports`, the random port choosed by the system is returned."),
HandWrittenProperty('Core', 'sound_devices', 'linphone_core_get_sound_devices', None, "[list of string] Get the available sound devices."),

View file

@ -1,3 +1,9 @@
static PyObject * pylinphone_Call_get_native_video_window_id(PyObject *self, void *closure);
static int pylinphone_Call_set_native_video_window_id(PyObject *self, PyObject *value, void *closure);
static PyObject * pylinphone_Core_get_native_preview_window_id(PyObject *self, void *closure);
static int pylinphone_Core_set_native_preview_window_id(PyObject *self, PyObject *value, void *closure);
static PyObject * pylinphone_Core_get_native_video_window_id(PyObject *self, void *closure);
static int pylinphone_Core_set_native_video_window_id(PyObject *self, PyObject *value, void *closure);
static PyObject * pylinphone_Core_get_sip_transports(PyObject *self, void *closure);
static int pylinphone_Core_set_sip_transports(PyObject *self, PyObject *value, void *closure);
static void pylinphone_Core_dealloc(PyObject *self);

View file

@ -128,6 +128,152 @@ static PyObject * pylinphone_module_method_set_log_handler(PyObject *self, PyObj
}
static PyObject * pylinphone_Call_get_native_video_window_id(PyObject *self, void *closure) {
void * cresult;
PyObject * pyresult;
PyObject * pyret;
const LinphoneCall *native_ptr;
native_ptr = pylinphone_Call_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Call instance");
return NULL;
}
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p])", __FUNCTION__, self, native_ptr);
cresult = linphone_call_get_native_video_window_id(native_ptr);
pylinphone_dispatch_messages();
pyret = Py_BuildValue("k", (unsigned long)cresult);
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> %p", __FUNCTION__, pyret);
return pyret;
}
static int pylinphone_Call_set_native_video_window_id(PyObject *self, PyObject *value, void *closure) {
LinphoneCall *native_ptr;
unsigned long _id;
native_ptr = pylinphone_Call_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Call instance");
return -1;
}
if (value == NULL) {
PyErr_SetString(PyExc_TypeError, "Cannot delete the 'native_video_window_id' attribute.");
return -1;
}
if (!PyInt_Check(value)) {
PyErr_SetString(PyExc_TypeError, "The 'native_video_window_id' attribute value must be a unsigned int.");
return -1;
}
_id = (unsigned long)PyInt_AsUnsignedLongMask(value);
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p], %u)", __FUNCTION__, self, native_ptr, _id);
linphone_call_set_native_video_window_id(native_ptr, (void *)_id);
pylinphone_dispatch_messages();
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> 0", __FUNCTION__);
return 0;
}
static PyObject * pylinphone_Core_get_native_preview_window_id(PyObject *self, void *closure) {
void * cresult;
PyObject * pyresult;
PyObject * pyret;
const LinphoneCore *native_ptr;
native_ptr = pylinphone_Core_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Core instance");
return NULL;
}
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p])", __FUNCTION__, self, native_ptr);
cresult = linphone_core_get_native_preview_window_id(native_ptr);
pylinphone_dispatch_messages();
pyret = Py_BuildValue("k", (unsigned long)cresult);
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> %p", __FUNCTION__, pyret);
return pyret;
}
static int pylinphone_Core_set_native_preview_window_id(PyObject *self, PyObject *value, void *closure) {
LinphoneCore *native_ptr;
unsigned long _id;
native_ptr = pylinphone_Core_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Core instance");
return -1;
}
if (value == NULL) {
PyErr_SetString(PyExc_TypeError, "Cannot delete the 'native_preview_window_id' attribute.");
return -1;
}
if (!PyInt_Check(value)) {
PyErr_SetString(PyExc_TypeError, "The 'native_preview_window_id' attribute value must be a unsigned int.");
return -1;
}
_id = (unsigned long)PyInt_AsUnsignedLongMask(value);
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p], %u)", __FUNCTION__, self, native_ptr, _id);
linphone_core_set_native_preview_window_id(native_ptr, (void *)_id);
pylinphone_dispatch_messages();
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> 0", __FUNCTION__);
return 0;
}
static PyObject * pylinphone_Core_get_native_video_window_id(PyObject *self, void *closure) {
void * cresult;
PyObject * pyresult;
PyObject * pyret;
const LinphoneCore *native_ptr;
native_ptr = pylinphone_Core_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Core instance");
return NULL;
}
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p])", __FUNCTION__, self, native_ptr);
cresult = linphone_core_get_native_video_window_id(native_ptr);
pylinphone_dispatch_messages();
pyret = Py_BuildValue("k", (unsigned long)cresult);
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> %p", __FUNCTION__, pyret);
return pyret;
}
static int pylinphone_Core_set_native_video_window_id(PyObject *self, PyObject *value, void *closure) {
LinphoneCore *native_ptr;
unsigned long _id;
native_ptr = pylinphone_Core_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Core instance");
return -1;
}
if (value == NULL) {
PyErr_SetString(PyExc_TypeError, "Cannot delete the 'native_video_window_id' attribute.");
return -1;
}
if (!PyInt_Check(value)) {
PyErr_SetString(PyExc_TypeError, "The 'native_video_window_id' attribute value must be a unsigned int.");
return -1;
}
_id = (unsigned long)PyInt_AsUnsignedLongMask(value);
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p], %u)", __FUNCTION__, self, native_ptr, _id);
linphone_core_set_native_video_window_id(native_ptr, (void *)_id);
pylinphone_dispatch_messages();
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> 0", __FUNCTION__);
return 0;
}
static PyObject * pylinphone_Core_get_sip_transports(PyObject *self, void *closure) {
PyObject *pytr;
LCSipTransports tr = { 0 };

View file

@ -38,16 +38,6 @@ class TestSetup:
assert_equals(lc.config.get_int('sip', 'sip_tcp_port', -2), -1)
assert_equals(lc.config.get_int('sip', 'sip_tls_port', -2), -1)
def test_interpret_url(self):
lc = linphone.Core.new({}, None, None)
assert lc is not None
sips_address = "sips:margaux@sip.linphone.org"
address = lc.interpret_url(sips_address)
assert address is not None
assert_equals(address.scheme, "sips")
assert_equals(address.username, "margaux")
assert_equals(address.domain, "sip.linphone.org")
def test_lpconfig_from_buffer(self):
buffer = "[buffer]\ntest=ok"
buffer_linebreaks = "[buffer_linebreaks]\n\n\n\r\n\n\r\ntest=ok"