diff --git a/README.macos.md b/README.macos.md
index 40160a654..5e34f88ad 100644
--- a/README.macos.md
+++ b/README.macos.md
@@ -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
diff --git a/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx b/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx
index 19e757bfa..3aeb9f3b9 100644
Binary files a/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx and b/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx differ
diff --git a/build/windows10/liblinphone/liblinphone.vcxproj b/build/windows10/liblinphone/liblinphone.vcxproj
index 1ac61e9b3..5d1809af7 100644
--- a/build/windows10/liblinphone/liblinphone.vcxproj
+++ b/build/windows10/liblinphone/liblinphone.vcxproj
@@ -175,10 +175,10 @@
false
- version.bat
+ version.bat
- Batch script to get the git version
+ Batch script to get the git version
diff --git a/configure.ac b/configure.ac
index a401b4bb1..191c7fd7d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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 ;;
diff --git a/console/commands.c b/console/commands.c
index d24bfa16b..539d33512 100644
--- a/console/commands.c
+++ b/console/commands.c
@@ -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);
diff --git a/console/linphonec.c b/console/linphonec.c
index 78dd1e019..cdf06f474 100644
--- a/console/linphonec.c
+++ b/console/linphonec.c
@@ -65,15 +65,6 @@
#endif /*_WIN32_WCE*/
-#ifdef ENABLE_NLS
-#include
-#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;
}
}
diff --git a/console/linphonec.h b/console/linphonec.h
index 3265d42ac..23c0ee5a0 100644
--- a/console/linphonec.h
+++ b/console/linphonec.h
@@ -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;
diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt
index 68f7b82b7..117d7b6c0 100644
--- a/coreapi/CMakeLists.txt
+++ b/coreapi/CMakeLists.txt
@@ -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
diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am
index b16105aea..d4c4516ce 100644
--- a/coreapi/Makefile.am
+++ b/coreapi/Makefile.am
@@ -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 \
diff --git a/coreapi/account_creator.c b/coreapi/account_creator.c
index d93bd4a5e..23cdffb28 100644
--- a/coreapi/account_creator.c
+++ b/coreapi/account_creator.c
@@ -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);
diff --git a/coreapi/account_creator.h b/coreapi/account_creator.h
index 7a1277d2f..f2231984a 100644
--- a/coreapi/account_creator.h
+++ b/coreapi/account_creator.h
@@ -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
diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c
index 957a0e4ca..6e3a6cba9 100644
--- a/coreapi/bellesip_sal/sal_impl.c
+++ b/coreapi/bellesip_sal/sal_impl.c
@@ -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;
+}
diff --git a/coreapi/bellesip_sal/sal_impl.h b/coreapi/bellesip_sal/sal_impl.h
index 4cceba127..eae0c6bb3 100644
--- a/coreapi/bellesip_sal/sal_impl.h
+++ b/coreapi/bellesip_sal/sal_impl.h
@@ -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 {
diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c
index acc629f39..f6e7087bb 100644
--- a/coreapi/bellesip_sal/sal_op_call.c
+++ b/coreapi/bellesip_sal/sal_op_call.c
@@ -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;
}
diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c
index 7361486e7..d19091c96 100644
--- a/coreapi/bellesip_sal/sal_op_impl.c
+++ b/coreapi/bellesip_sal/sal_op_impl.c
@@ -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);
}
diff --git a/coreapi/bellesip_sal/sal_op_info.c b/coreapi/bellesip_sal/sal_op_info.c
index 9abc73818..3cffb8e55 100644
--- a/coreapi/bellesip_sal/sal_op_info.c
+++ b/coreapi/bellesip_sal/sal_op_info.c
@@ -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);
}
diff --git a/coreapi/bellesip_sal/sal_op_registration.c b/coreapi/bellesip_sal/sal_op_registration.c
index d56587db2..961ba4a34 100644
--- a/coreapi/bellesip_sal/sal_op_registration.c
+++ b/coreapi/bellesip_sal/sal_op_registration.c
@@ -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);
}
diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c
index fddd8886a..618a14e59 100644
--- a/coreapi/callbacks.c
+++ b/coreapi/callbacks.c
@@ -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 {
diff --git a/coreapi/chat.c b/coreapi/chat.c
index abbbbf745..362079682 100644
--- a/coreapi/chat.c
+++ b/coreapi/chat.c
@@ -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;
}
diff --git a/coreapi/conference.c b/coreapi/conference.c
index 75f451736..5479c8315 100644
--- a/coreapi/conference.c
+++ b/coreapi/conference.c
@@ -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) {
diff --git a/coreapi/linphone_proxy_config.h b/coreapi/linphone_proxy_config.h
new file mode 100644
index 000000000..7c1912ed3
--- /dev/null
+++ b/coreapi/linphone_proxy_config.h
@@ -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
+ * 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 .
+ *
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 .
+ *
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 ;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 .
+**/
+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 \ .
+ * 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
diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c
index 791b345aa..f92680316 100644
--- a/coreapi/linphonecall.c
+++ b/coreapi/linphonecall.c
@@ -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) {
diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c
index 2e70f820f..00ec99070 100644
--- a/coreapi/linphonecore.c
+++ b/coreapi/linphonecore.c
@@ -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 \ .
- * 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:
diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h
index f57b6aad6..e9a3d9161 100644
--- a/coreapi/linphonecore.h
+++ b/coreapi/linphonecore.h
@@ -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 .
- *
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 .
- *
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);
diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc
index dccaf6cfa..509712753 100644
--- a/coreapi/linphonecore_jni.cc
+++ b/coreapi/linphonecore_jni.cc
@@ -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);
diff --git a/coreapi/localplayer.c b/coreapi/localplayer.c
index 964c1c920..eb53eb640 100644
--- a/coreapi/localplayer.c
+++ b/coreapi/localplayer.c
@@ -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);
diff --git a/coreapi/lpconfig.c b/coreapi/lpconfig.c
index 2f09c133b..09889d06a 100644
--- a/coreapi/lpconfig.c
+++ b/coreapi/lpconfig.c
@@ -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;
}
diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c
index 22da7b8d0..a5985f4d3 100644
--- a/coreapi/message_storage.c
+++ b/coreapi/message_storage.c
@@ -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
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){
diff --git a/coreapi/misc.c b/coreapi/misc.c
index afa04f9bd..d94b170e3 100644
--- a/coreapi/misc.c
+++ b/coreapi/misc.c
@@ -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;
diff --git a/coreapi/plugins/buddylookup/src/lookup.c b/coreapi/plugins/buddylookup/src/lookup.c
index 48a8d3bb2..736e7aa35 100644
--- a/coreapi/plugins/buddylookup/src/lookup.c
+++ b/coreapi/plugins/buddylookup/src/lookup.c
@@ -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;
diff --git a/coreapi/private.h b/coreapi/private.h
index f6a3ef131..2ba84988d 100644
--- a/coreapi/private.h
+++ b/coreapi/private.h
@@ -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
+
#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);
diff --git a/coreapi/proxy.c b/coreapi/proxy.c
index 2cfa26b20..9d3bdc3d6 100644
--- a/coreapi/proxy.c
+++ b/coreapi/proxy.c
@@ -23,22 +23,23 @@ Copyright (C) 2000 Simon MORLAT (simon.morlat@linphone.org)
#include "lpconfig.h"
#include "private.h"
#include "mediastreamer2/mediastream.h"
+#include "enum.h"
#include
/*store current config related to server location*/
-static void linphone_proxy_config_store_server_config(LinphoneProxyConfig* obj) {
- if (obj->saved_identity) linphone_address_destroy(obj->saved_identity);
- if (obj->reg_identity)
- obj->saved_identity = linphone_address_new(obj->reg_identity);
+static void linphone_proxy_config_store_server_config(LinphoneProxyConfig* cfg) {
+ if (cfg->saved_identity) linphone_address_destroy(cfg->saved_identity);
+ if (cfg->identity_address)
+ cfg->saved_identity = linphone_address_clone(cfg->identity_address);
else
- obj->saved_identity = NULL;
+ cfg->saved_identity = NULL;
- if (obj->saved_proxy) linphone_address_destroy(obj->saved_proxy);
- if (obj->reg_proxy)
- obj->saved_proxy = linphone_address_new(obj->reg_proxy);
+ if (cfg->saved_proxy) linphone_address_destroy(cfg->saved_proxy);
+ if (cfg->reg_proxy)
+ cfg->saved_proxy = linphone_address_new(cfg->reg_proxy);
else
- obj->saved_proxy = NULL;
+ cfg->saved_proxy = NULL;
}
LinphoneProxyConfigAddressComparisonResult linphone_proxy_config_address_equal(const LinphoneAddress *a, const LinphoneAddress *b) {
@@ -59,17 +60,16 @@ LinphoneProxyConfigAddressComparisonResult linphone_proxy_config_address_equal(c
return LinphoneProxyConfigAddressDifferent; /*either username, domain or port ar not equals*/
}
-LinphoneProxyConfigAddressComparisonResult linphone_proxy_config_is_server_config_changed(const LinphoneProxyConfig* obj) {
- LinphoneAddress *current_identity=obj->reg_identity?linphone_address_new(obj->reg_identity):NULL;
- LinphoneAddress *current_proxy=obj->reg_proxy?linphone_address_new(obj->reg_proxy):NULL;
+LinphoneProxyConfigAddressComparisonResult linphone_proxy_config_is_server_config_changed(const LinphoneProxyConfig* cfg) {
+ LinphoneAddress *current_proxy=cfg->reg_proxy?linphone_address_new(cfg->reg_proxy):NULL;
LinphoneProxyConfigAddressComparisonResult result_identity;
LinphoneProxyConfigAddressComparisonResult result;
- result = linphone_proxy_config_address_equal(obj->saved_identity,current_identity);
+ result = linphone_proxy_config_address_equal(cfg->saved_identity,cfg->identity_address);
if (result == LinphoneProxyConfigAddressDifferent) goto end;
result_identity = result;
- result = linphone_proxy_config_address_equal(obj->saved_proxy,current_proxy);
+ result = linphone_proxy_config_address_equal(cfg->saved_proxy,current_proxy);
if (result == LinphoneProxyConfigAddressDifferent) goto end;
/** If the proxies are equal use the result of the difference between the identities,
* otherwise the result is weak-equal and so weak-equal must be returned even if the
@@ -78,7 +78,6 @@ LinphoneProxyConfigAddressComparisonResult linphone_proxy_config_is_server_confi
if (result == LinphoneProxyConfigAddressEqual) result = result_identity;
end:
- if (current_identity) linphone_address_destroy(current_identity);
if (current_proxy) linphone_address_destroy(current_proxy);
return result;
}
@@ -97,7 +96,7 @@ void linphone_proxy_config_write_all_to_config_file(LinphoneCore *lc){
lp_config_set_int(lc->config,"sip","default_proxy",linphone_core_get_default_proxy(lc,NULL));
}
-static void linphone_proxy_config_init(LinphoneCore* lc, LinphoneProxyConfig *obj) {
+static void linphone_proxy_config_init(LinphoneCore* lc, LinphoneProxyConfig *cfg) {
const char *dial_prefix = lc ? lp_config_get_default_string(lc->config,"proxy","dial_prefix",NULL) : NULL;
const char *identity = lc ? lp_config_get_default_string(lc->config, "proxy", "reg_identity", NULL) : NULL;
const char *proxy = lc ? lp_config_get_default_string(lc->config, "proxy", "reg_proxy", NULL) : NULL;
@@ -107,40 +106,31 @@ static void linphone_proxy_config_init(LinphoneCore* lc, LinphoneProxyConfig *ob
const char *contact_params = lc ? lp_config_get_default_string(lc->config, "proxy", "contact_parameters", NULL) : NULL;
const char *contact_uri_params = lc ? lp_config_get_default_string(lc->config, "proxy", "contact_uri_parameters", NULL) : NULL;
- obj->expires = lc ? lp_config_get_default_int(lc->config, "proxy", "reg_expires", 3600) : 3600;
- obj->reg_sendregister = lc ? lp_config_get_default_int(lc->config, "proxy", "reg_sendregister", 1) : 1;
- obj->dial_prefix = dial_prefix ? ms_strdup(dial_prefix) : NULL;
- obj->dial_escape_plus = lc ? lp_config_get_default_int(lc->config, "proxy", "dial_escape_plus", 0) : 0;
- obj->privacy = lc ? lp_config_get_default_int(lc->config, "proxy", "privacy", LinphonePrivacyDefault) : LinphonePrivacyDefault;
- obj->reg_identity = identity ? ms_strdup(identity) : NULL;
- obj->reg_proxy = proxy ? ms_strdup(proxy) : NULL;
- obj->reg_route = route ? ms_strdup(route) : NULL;
- obj->domain = NULL;
- obj->realm = realm ? ms_strdup(realm) : NULL;
- obj->quality_reporting_enabled = lc ? lp_config_get_default_int(lc->config, "proxy", "quality_reporting_enabled", 0) : 0;
- obj->quality_reporting_collector = quality_reporting_collector ? ms_strdup(quality_reporting_collector) : NULL;
- obj->quality_reporting_interval = lc ? lp_config_get_default_int(lc->config, "proxy", "quality_reporting_interval", 0) : 0;
- obj->contact_params = contact_params ? ms_strdup(contact_params) : NULL;
- obj->contact_uri_params = contact_uri_params ? ms_strdup(contact_uri_params) : NULL;
- obj->avpf_mode = lc ? lp_config_get_default_int(lc->config, "proxy", "avpf", LinphoneAVPFDefault) : LinphoneAVPFDefault;
- obj->avpf_rr_interval = lc ? lp_config_get_default_int(lc->config, "proxy", "avpf_rr_interval", 5) : 5;
- obj->publish_expires=-1;
+ cfg->expires = lc ? lp_config_get_default_int(lc->config, "proxy", "reg_expires", 3600) : 3600;
+ cfg->reg_sendregister = lc ? lp_config_get_default_int(lc->config, "proxy", "reg_sendregister", 1) : 1;
+ cfg->dial_prefix = dial_prefix ? ms_strdup(dial_prefix) : NULL;
+ cfg->dial_escape_plus = lc ? lp_config_get_default_int(lc->config, "proxy", "dial_escape_plus", 0) : 0;
+ cfg->privacy = lc ? lp_config_get_default_int(lc->config, "proxy", "privacy", LinphonePrivacyDefault) : LinphonePrivacyDefault;
+ cfg->identity_address = identity ? linphone_address_new(identity) : NULL;
+ cfg->reg_identity = cfg->identity_address ? linphone_address_as_string(cfg->identity_address) : NULL;
+ cfg->reg_proxy = proxy ? ms_strdup(proxy) : NULL;
+ cfg->reg_route = route ? ms_strdup(route) : NULL;
+ cfg->realm = realm ? ms_strdup(realm) : NULL;
+ cfg->quality_reporting_enabled = lc ? lp_config_get_default_int(lc->config, "proxy", "quality_reporting_enabled", 0) : 0;
+ cfg->quality_reporting_collector = quality_reporting_collector ? ms_strdup(quality_reporting_collector) : NULL;
+ cfg->quality_reporting_interval = lc ? lp_config_get_default_int(lc->config, "proxy", "quality_reporting_interval", 0) : 0;
+ cfg->contact_params = contact_params ? ms_strdup(contact_params) : NULL;
+ cfg->contact_uri_params = contact_uri_params ? ms_strdup(contact_uri_params) : NULL;
+ cfg->avpf_mode = lc ? lp_config_get_default_int(lc->config, "proxy", "avpf", LinphoneAVPFDefault) : LinphoneAVPFDefault;
+ cfg->avpf_rr_interval = lc ? lp_config_get_default_int(lc->config, "proxy", "avpf_rr_interval", 5) : 5;
+ cfg->publish_expires=-1;
}
-/**
- * @addtogroup proxies
- * @{
-**/
-
-/**
- * @deprecated, use #linphone_core_create_proxy_config instead
- *Creates an empty proxy config.
-**/
LinphoneProxyConfig *linphone_proxy_config_new() {
return linphone_core_create_proxy_config(NULL);
}
-static void _linphone_proxy_config_destroy(LinphoneProxyConfig *obj);
+static void _linphone_proxy_config_destroy(LinphoneProxyConfig *cfg);
BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(LinphoneProxyConfig);
@@ -152,47 +142,41 @@ BELLE_SIP_INSTANCIATE_VPTR(LinphoneProxyConfig, belle_sip_object_t,
);
LinphoneProxyConfig * linphone_core_create_proxy_config(LinphoneCore *lc) {
- LinphoneProxyConfig *obj = belle_sip_object_new(LinphoneProxyConfig);
- linphone_proxy_config_init(lc,obj);
- return obj;
+ LinphoneProxyConfig *cfg = belle_sip_object_new(LinphoneProxyConfig);
+ linphone_proxy_config_init(lc,cfg);
+ return cfg;
}
-void _linphone_proxy_config_release_ops(LinphoneProxyConfig *obj){
- if (obj->op) {
- sal_op_release(obj->op);
- obj->op=NULL;
+void _linphone_proxy_config_release_ops(LinphoneProxyConfig *cfg){
+ if (cfg->op) {
+ sal_op_release(cfg->op);
+ cfg->op=NULL;
}
- if (obj->publish_op){
- sal_op_release(obj->publish_op);
- obj->publish_op=NULL;
+ if (cfg->publish_op){
+ sal_op_release(cfg->publish_op);
+ cfg->publish_op=NULL;
}
}
-void _linphone_proxy_config_destroy(LinphoneProxyConfig *obj){
- if (obj->reg_proxy!=NULL) ms_free(obj->reg_proxy);
- if (obj->reg_identity!=NULL) ms_free(obj->reg_identity);
- if (obj->reg_route!=NULL) ms_free(obj->reg_route);
- if (obj->quality_reporting_collector!=NULL) ms_free(obj->quality_reporting_collector);
- if (obj->ssctx!=NULL) sip_setup_context_free(obj->ssctx);
- if (obj->domain!=NULL) ms_free(obj->domain);
- if (obj->realm!=NULL) ms_free(obj->realm);
- if (obj->type!=NULL) ms_free(obj->type);
- if (obj->dial_prefix!=NULL) ms_free(obj->dial_prefix);
- if (obj->contact_params) ms_free(obj->contact_params);
- if (obj->contact_uri_params) ms_free(obj->contact_uri_params);
- if (obj->saved_proxy!=NULL) linphone_address_destroy(obj->saved_proxy);
- if (obj->saved_identity!=NULL) linphone_address_destroy(obj->saved_identity);
- if (obj->sent_headers!=NULL) sal_custom_header_free(obj->sent_headers);
- _linphone_proxy_config_release_ops(obj);
+void _linphone_proxy_config_destroy(LinphoneProxyConfig *cfg){
+ if (cfg->reg_proxy!=NULL) ms_free(cfg->reg_proxy);
+ if (cfg->reg_identity!=NULL) ms_free(cfg->reg_identity);
+ if (cfg->identity_address!=NULL) linphone_address_destroy(cfg->identity_address);
+ if (cfg->reg_route!=NULL) ms_free(cfg->reg_route);
+ if (cfg->quality_reporting_collector!=NULL) ms_free(cfg->quality_reporting_collector);
+ if (cfg->ssctx!=NULL) sip_setup_context_free(cfg->ssctx);
+ if (cfg->realm!=NULL) ms_free(cfg->realm);
+ if (cfg->type!=NULL) ms_free(cfg->type);
+ if (cfg->dial_prefix!=NULL) ms_free(cfg->dial_prefix);
+ if (cfg->contact_params) ms_free(cfg->contact_params);
+ if (cfg->contact_uri_params) ms_free(cfg->contact_uri_params);
+ if (cfg->saved_proxy!=NULL) linphone_address_destroy(cfg->saved_proxy);
+ if (cfg->saved_identity!=NULL) linphone_address_destroy(cfg->saved_identity);
+ if (cfg->sent_headers!=NULL) sal_custom_header_free(cfg->sent_headers);
+ if (cfg->pending_contact) linphone_address_unref(cfg->pending_contact);
+ _linphone_proxy_config_release_ops(cfg);
}
-/**
- * Destroys a proxy config.
- * @deprecated
- *
- * @note: LinphoneProxyConfig that have been removed from LinphoneCore with
- * linphone_core_remove_proxy_config() must not be freed.
-**/
void linphone_proxy_config_destroy(LinphoneProxyConfig *cfg) {
belle_sip_object_unref(cfg);
}
@@ -211,28 +195,16 @@ void linphone_proxy_config_unref(LinphoneProxyConfig *cfg) {
belle_sip_object_unref(cfg);
}
-/**
- * Returns a boolean indicating that the user is sucessfully registered on the proxy.
- * @deprecated Use linphone_proxy_config_get_state() instead.
-**/
-bool_t linphone_proxy_config_is_registered(const LinphoneProxyConfig *obj){
- return obj->state == LinphoneRegistrationOk;
+bool_t linphone_proxy_config_is_registered(const LinphoneProxyConfig *cfg){
+ return cfg->state == LinphoneRegistrationOk;
}
-/**
- * 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
-**/
-int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *obj, const char *server_addr){
+int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *cfg, const char *server_addr){
LinphoneAddress *addr=NULL;
char *modified=NULL;
- if (obj->reg_proxy!=NULL) ms_free(obj->reg_proxy);
- obj->reg_proxy=NULL;
+ if (cfg->reg_proxy!=NULL) ms_free(cfg->reg_proxy);
+ cfg->reg_proxy=NULL;
if (server_addr!=NULL && strlen(server_addr)>0){
if (strstr(server_addr,"sip:")==NULL && strstr(server_addr,"sips:")==NULL){
@@ -243,7 +215,7 @@ int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *obj, const char *
if (addr==NULL)
addr=linphone_address_new(server_addr);
if (addr){
- obj->reg_proxy=linphone_address_as_string(addr);
+ cfg->reg_proxy=linphone_address_as_string(addr);
linphone_address_destroy(addr);
}else{
ms_warning("Could not parse %s",server_addr);
@@ -253,43 +225,38 @@ int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *obj, const char *
return 0;
}
-/**
- * Sets the user identity as a SIP address.
- *
- * This identity is normally formed with display name, username and domain, such
- * as:
- * Alice
- * The REGISTER messages will have from and to set to this identity.
- *
-**/
-int linphone_proxy_config_set_identity(LinphoneProxyConfig *obj, const char *identity){
- LinphoneAddress *addr;
+
+int linphone_proxy_config_set_identity_address(LinphoneProxyConfig *cfg, const LinphoneAddress *addr){
+ if (!addr || linphone_address_get_username(addr)==NULL){
+ char* as_string = linphone_address_as_string(addr);
+ ms_warning("Invalid sip identity: %s", addr?as_string:"NULL");
+ ms_free(as_string);
+ return -1;
+ }
+ if (cfg->identity_address != NULL) {
+ linphone_address_destroy(cfg->identity_address);
+ }
+ cfg->identity_address=linphone_address_clone(addr);
+
+ if (cfg->reg_identity!=NULL) {
+ ms_free(cfg->reg_identity);
+ }
+ cfg->reg_identity= linphone_address_as_string(cfg->identity_address);
+ return 0;
+}
+
+int linphone_proxy_config_set_identity(LinphoneProxyConfig *cfg, const char *identity){
if (identity!=NULL && strlen(identity)>0){
- addr=linphone_address_new(identity);
- if (!addr || linphone_address_get_username(addr)==NULL){
- ms_warning("Invalid sip identity: %s",identity);
- if (addr)
- linphone_address_destroy(addr);
- return -1;
- }else{
- if (obj->reg_identity!=NULL) {
- ms_free(obj->reg_identity);
- obj->reg_identity=NULL;
- }
- obj->reg_identity=ms_strdup(identity);
- if (obj->domain){
- ms_free(obj->domain);
- }
- obj->domain=ms_strdup(linphone_address_get_domain(addr));
- linphone_address_destroy(addr);
- return 0;
- }
+ LinphoneAddress *addr=linphone_address_new(identity);
+ int ret=linphone_proxy_config_set_identity_address(cfg, addr);
+ linphone_address_destroy(addr);
+ return ret;
}
return -1;
}
const char *linphone_proxy_config_get_domain(const LinphoneProxyConfig *cfg){
- return cfg->domain;
+ return cfg->identity_address ? linphone_address_get_domain(cfg->identity_address) : NULL;
}
/**
@@ -297,11 +264,11 @@ const char *linphone_proxy_config_get_domain(const LinphoneProxyConfig *cfg){
* 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() ).
**/
-int linphone_proxy_config_set_route(LinphoneProxyConfig *obj, const char *route)
+int linphone_proxy_config_set_route(LinphoneProxyConfig *cfg, const char *route)
{
- if (obj->reg_route!=NULL){
- ms_free(obj->reg_route);
- obj->reg_route=NULL;
+ if (cfg->reg_route!=NULL){
+ ms_free(cfg->reg_route);
+ cfg->reg_route=NULL;
}
if (route!=NULL && route[0] !='\0'){
SalAddress *addr;
@@ -317,19 +284,19 @@ int linphone_proxy_config_set_route(LinphoneProxyConfig *obj, const char *route)
ms_free(tmp);
tmp=NULL;
}
- obj->reg_route=tmp;
+ cfg->reg_route=tmp;
}
return 0;
}
-bool_t linphone_proxy_config_check(LinphoneCore *lc, LinphoneProxyConfig *obj){
- if (obj->reg_proxy==NULL){
+bool_t linphone_proxy_config_check(LinphoneCore *lc, LinphoneProxyConfig *cfg){
+ if (cfg->reg_proxy==NULL){
if (lc)
linphone_core_notify_display_warning(lc,_("The sip proxy address you entered is invalid, it must start with \"sip:\""
" followed by a hostname."));
return FALSE;
}
- if (obj->reg_identity==NULL){
+ if (cfg->identity_address==NULL){
if (lc)
linphone_core_notify_display_warning(lc,_("The sip identity you entered is invalid.\nIt should look like "
"sip:username@proxydomain, such as sip:alice@example.net"));
@@ -338,76 +305,68 @@ bool_t linphone_proxy_config_check(LinphoneCore *lc, LinphoneProxyConfig *obj){
return TRUE;
}
-/**
- * Indicates whether a REGISTER request must be sent to the proxy.
-**/
-void linphone_proxy_config_enableregister(LinphoneProxyConfig *obj, bool_t val){
- obj->reg_sendregister=val;
+void linphone_proxy_config_enableregister(LinphoneProxyConfig *cfg, bool_t val){
+ cfg->reg_sendregister=val;
}
-void linphone_proxy_config_set_expires(LinphoneProxyConfig *obj, int val){
+void linphone_proxy_config_set_expires(LinphoneProxyConfig *cfg, int val){
if (val<0) val=600;
- obj->expires=val;
+ cfg->expires=val;
}
-void linphone_proxy_config_enable_publish(LinphoneProxyConfig *obj, bool_t val){
- obj->publish=val;
+void linphone_proxy_config_enable_publish(LinphoneProxyConfig *cfg, bool_t val){
+ cfg->publish=val;
}
-/**
- * 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 obj the proxy config
-**/
-void linphone_proxy_config_pause_register(LinphoneProxyConfig *obj){
- if (obj->op) sal_op_stop_refreshing(obj->op);
+void linphone_proxy_config_pause_register(LinphoneProxyConfig *cfg){
+ if (cfg->op) sal_op_stop_refreshing(cfg->op);
}
-/**
- * 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.
-**/
-void linphone_proxy_config_edit(LinphoneProxyConfig *obj){
- if (obj->publish && obj->publish_op){
- /*unpublish*/
- sal_publish_presence(obj->publish_op,NULL,NULL,0,(SalPresenceModel *)NULL);
- sal_op_release(obj->publish_op);
- obj->publish_op=NULL;
+void linphone_proxy_config_edit(LinphoneProxyConfig *cfg){
+ if (cfg->publish && cfg->publish_op){
+ /*unpublish*/
+ sal_publish_presence(cfg->publish_op,NULL,NULL,0,(SalPresenceModel *)NULL);
+ sal_op_release(cfg->publish_op);
+ cfg->publish_op=NULL;
}
/*store current config related to server location*/
- linphone_proxy_config_store_server_config(obj);
+ linphone_proxy_config_store_server_config(cfg);
/*stop refresher in any case*/
- linphone_proxy_config_pause_register(obj);
+ linphone_proxy_config_pause_register(cfg);
}
-void linphone_proxy_config_apply(LinphoneProxyConfig *obj,LinphoneCore *lc){
- obj->lc=lc;
- linphone_proxy_config_done(obj);
+void linphone_proxy_config_apply(LinphoneProxyConfig *cfg,LinphoneCore *lc){
+ cfg->lc=lc;
+ linphone_proxy_config_done(cfg);
}
-void linphone_proxy_config_stop_refreshing(LinphoneProxyConfig *obj){
- if (obj->publish_op){
- sal_op_release(obj->publish_op);
- obj->publish_op=NULL;
+void linphone_proxy_config_stop_refreshing(LinphoneProxyConfig * cfg){
+ LinphoneAddress *contact_addr=NULL;
+ if ( cfg->op
+ && cfg->state == LinphoneRegistrationOk
+ && (contact_addr = (LinphoneAddress*)sal_op_get_contact_address(cfg->op))
+ && linphone_address_get_transport(contact_addr) != LinphoneTransportUdp /*with udp, there is a risk of port reuse, so I prefer to not do anything for now*/) {
+ /*need to save current contact in order to reset is later*/
+ linphone_address_ref(contact_addr);
+ if (cfg->pending_contact)
+ linphone_address_unref(cfg->pending_contact);
+ cfg->pending_contact=contact_addr;
+
}
- if (obj->op){
- sal_op_release(obj->op);
- obj->op=NULL;
+ if (cfg->publish_op){
+ sal_op_release(cfg->publish_op);
+ cfg->publish_op=NULL;
+ }
+ if (cfg->op){
+ sal_op_release(cfg->op);
+ cfg->op=NULL;
}
}
-LinphoneAddress *guess_contact_for_register(LinphoneProxyConfig *obj){
+LinphoneAddress *guess_contact_for_register(LinphoneProxyConfig *cfg){
LinphoneAddress *ret=NULL;
- LinphoneAddress *proxy=linphone_address_new(obj->reg_proxy);
+ LinphoneAddress *proxy=linphone_address_new(cfg->reg_proxy);
const char *host;
if (proxy==NULL) return NULL;
@@ -415,22 +374,22 @@ LinphoneAddress *guess_contact_for_register(LinphoneProxyConfig *obj){
if (host!=NULL){
int localport = -1;
const char *localip = NULL;
- LinphoneAddress *contact=linphone_address_new(obj->reg_identity);
+ LinphoneAddress *contact=linphone_address_clone(cfg->identity_address);
linphone_address_clean(contact);
- if (obj->contact_params) {
+ if (cfg->contact_params) {
// We want to add a list of contacts params to the linphone address
- sal_address_set_params(contact,obj->contact_params);
+ sal_address_set_params(contact,cfg->contact_params);
}
- if (obj->contact_uri_params){
- sal_address_set_uri_params(contact,obj->contact_uri_params);
+ if (cfg->contact_uri_params){
+ sal_address_set_uri_params(contact,cfg->contact_uri_params);
}
#ifdef BUILD_UPNP
- if (obj->lc->upnp != NULL && linphone_core_get_firewall_policy(obj->lc)==LinphonePolicyUseUpnp &&
- linphone_upnp_context_get_state(obj->lc->upnp) == LinphoneUpnpStateOk) {
- localip = linphone_upnp_context_get_external_ipaddress(obj->lc->upnp);
- localport = linphone_upnp_context_get_external_port(obj->lc->upnp);
+ if (cfg->lc->upnp != NULL && linphone_core_get_firewall_policy(cfg->lc)==LinphonePolicyUseUpnp &&
+ linphone_upnp_context_get_state(cfg->lc->upnp) == LinphoneUpnpStateOk) {
+ localip = linphone_upnp_context_get_external_ipaddress(cfg->lc->upnp);
+ localport = linphone_upnp_context_get_external_port(cfg->lc->upnp);
}
#endif //BUILD_UPNP
linphone_address_set_port(contact,localport);
@@ -443,73 +402,65 @@ LinphoneAddress *guess_contact_for_register(LinphoneProxyConfig *obj){
return ret;
}
-/**
- * unregister without moving the register_enable flag
- */
void _linphone_proxy_config_unregister(LinphoneProxyConfig *obj) {
- if (obj->op && obj->state == LinphoneRegistrationOk) {
+ if (obj->op && (obj->state == LinphoneRegistrationOk ||
+ (obj->state == LinphoneRegistrationProgress && obj->expires != 0))) {
sal_unregister(obj->op);
}
}
-static void linphone_proxy_config_register(LinphoneProxyConfig *obj){
- if (obj->reg_sendregister){
- LinphoneAddress* proxy=linphone_address_new(obj->reg_proxy);
- LinphoneAddress* to=linphone_address_new(obj->reg_identity);
+static void linphone_proxy_config_register(LinphoneProxyConfig *cfg){
+ if (cfg->reg_sendregister){
+ LinphoneAddress* proxy=linphone_address_new(cfg->reg_proxy);
char* proxy_string;
+ char * from = linphone_address_as_string(cfg->identity_address);
LinphoneAddress *contact;
- ms_message("LinphoneProxyConfig [%p] about to register (LinphoneCore version: %s)",obj,linphone_core_get_version());
+ ms_message("LinphoneProxyConfig [%p] about to register (LinphoneCore version: %s)",cfg,linphone_core_get_version());
proxy_string=linphone_address_as_string_uri_only(proxy);
linphone_address_destroy(proxy);
- if (obj->op)
- sal_op_release(obj->op);
- obj->op=sal_op_new(obj->lc->sal);
+ if (cfg->op)
+ sal_op_release(cfg->op);
+ cfg->op=sal_op_new(cfg->lc->sal);
- linphone_configure_op(obj->lc, obj->op, to, obj->sent_headers, FALSE);
- linphone_address_destroy(to);
+ linphone_configure_op(cfg->lc, cfg->op, cfg->identity_address, cfg->sent_headers, FALSE);
- if ((contact=guess_contact_for_register(obj))) {
- sal_op_set_contact_address(obj->op,contact);
+ if ((contact=guess_contact_for_register(cfg))) {
+ sal_op_set_contact_address(cfg->op,contact);
linphone_address_destroy(contact);
}
- sal_op_set_user_pointer(obj->op,obj);
+ sal_op_set_user_pointer(cfg->op,cfg);
- if (sal_register(obj->op,proxy_string,obj->reg_identity,obj->expires)==0) {
- linphone_proxy_config_set_state(obj,LinphoneRegistrationProgress,"Registration in progress");
+ if (sal_register(cfg->op,proxy_string, cfg->reg_identity, cfg->expires, cfg->pending_contact)==0) {
+ if (cfg->pending_contact) {
+ linphone_address_unref(cfg->pending_contact);
+ cfg->pending_contact=NULL;
+ }
+ linphone_proxy_config_set_state(cfg,LinphoneRegistrationProgress,"Registration in progress");
} else {
- linphone_proxy_config_set_state(obj,LinphoneRegistrationFailed,"Registration failed");
+ linphone_proxy_config_set_state(cfg,LinphoneRegistrationFailed,"Registration failed");
}
ms_free(proxy_string);
+ ms_free(from);
} else {
/* unregister if registered*/
- if (obj->state == LinphoneRegistrationProgress) {
- linphone_proxy_config_set_state(obj,LinphoneRegistrationCleared,"Registration cleared");
+ if (cfg->state == LinphoneRegistrationProgress) {
+ linphone_proxy_config_set_state(cfg,LinphoneRegistrationCleared,"Registration cleared");
}
- _linphone_proxy_config_unregister(obj);
+ _linphone_proxy_config_unregister(cfg);
}
}
-/**
- * Refresh a proxy registration.
- * This is useful if for example you resuming from suspend, thus IP address may have changed.
-**/
-void linphone_proxy_config_refresh_register(LinphoneProxyConfig *obj){
- if (obj->reg_sendregister && obj->op && obj->state!=LinphoneRegistrationProgress){
- if (sal_register_refresh(obj->op,obj->expires) == 0) {
- linphone_proxy_config_set_state(obj,LinphoneRegistrationProgress, "Refresh registration");
+void linphone_proxy_config_refresh_register(LinphoneProxyConfig *cfg){
+ if (cfg->reg_sendregister && cfg->op && cfg->state!=LinphoneRegistrationProgress){
+ if (sal_register_refresh(cfg->op,cfg->expires) == 0) {
+ linphone_proxy_config_set_state(cfg,LinphoneRegistrationProgress, "Refresh registration");
}
}
}
-/**
- * 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 "+".
- *
-**/
void linphone_proxy_config_set_dial_prefix(LinphoneProxyConfig *cfg, const char *prefix){
if (cfg->dial_prefix!=NULL){
ms_free(cfg->dial_prefix);
@@ -518,29 +469,14 @@ void linphone_proxy_config_set_dial_prefix(LinphoneProxyConfig *cfg, const char
if (prefix && prefix[0]!='\0') cfg->dial_prefix=ms_strdup(prefix);
}
-/**
- * Returns dialing prefix.
- *
- *
-**/
const char *linphone_proxy_config_get_dial_prefix(const LinphoneProxyConfig *cfg){
return cfg->dial_prefix;
}
-/**
- * Sets whether liblinphone should replace "+" by international calling prefix in dialed numbers (passed to
- * #linphone_core_invite ).
- *
-**/
void linphone_proxy_config_set_dial_escape_plus(LinphoneProxyConfig *cfg, bool_t val){
cfg->dial_escape_plus=val;
}
-/**
- * Returns whether liblinphone should replace "+" by "00" in dialed numbers (passed to
- * #linphone_core_invite ).
- *
-**/
bool_t linphone_proxy_config_get_dial_escape_plus(const LinphoneProxyConfig *cfg){
return cfg->dial_escape_plus;
}
@@ -597,8 +533,6 @@ typedef struct dial_plan{
}dial_plan_t;
-/* TODO: fill with information for all countries over the world*/
-
static dial_plan_t const dial_plans[]={
//Country , iso country code, e164 country calling code, number length, international usual prefix
{"Afghanistan" ,"AF" , "93" , 9 , "00" },
@@ -884,10 +818,10 @@ bool_t linphone_proxy_config_is_phone_number(LinphoneProxyConfig *proxy, const c
const char *p;
for(p=username;*p!='\0';++p){
if (isdigit(*p) ||
- *p==' ' ||
- *p=='.' ||
- *p=='-' ||
- *p==')' ||
+ *p==' ' ||
+ *p=='.' ||
+ *p=='-' ||
+ *p==')' ||
*p=='(' ||
*p=='/' ||
*p=='+' ||
@@ -938,33 +872,40 @@ static void replace_icp_with_plus(const char *src, char *dest, size_t destlen, c
strncpy(dest+i, src+strlen(icp), destlen-i-1);
}
+static char* replace_plus_with_icp_new(char *phone, const char* icp){
+ return (icp && phone[0]=='+') ? ms_strdup_printf("%s%s", icp, phone+1) : ms_strdup(phone);
+}
-bool_t linphone_proxy_config_normalize_number(LinphoneProxyConfig *inproxy, const char *username, char *result, size_t result_len){
+static char* replace_icp_with_plus_new(char *phone, const char *icp){
+ return (strstr(phone, icp) == phone) ? ms_strdup_printf("+%s", phone+strlen(icp)) : ms_strdup(phone);
+}
+
+bool_t linphone_proxy_config_normalize_number(LinphoneProxyConfig *proxy, const char *username, char *result, size_t result_len){
bool_t ret;
- LinphoneProxyConfig *proxy = inproxy ? inproxy : linphone_proxy_config_new();
+ LinphoneProxyConfig *tmpproxy = proxy ? proxy : linphone_proxy_config_new();
memset(result, 0, result_len);
- if (linphone_proxy_config_is_phone_number(proxy, username)){
+ if (linphone_proxy_config_is_phone_number(tmpproxy, username)){
dial_plan_t dialplan = {0};
char *flatten=flatten_number(username);
ms_debug("Flattened number is '%s'",flatten);
- /*username does not contain a dial prefix nor the proxy, nothing else to do*/
- if (proxy->dial_prefix==NULL || proxy->dial_prefix[0]=='\0'){
+ /*username does not contain a dial prefix nor the tmpproxy, nothing else to do*/
+ if (tmpproxy->dial_prefix==NULL || tmpproxy->dial_prefix[0]=='\0'){
strncpy(result,flatten,result_len-1);
} else {
- lookup_dial_plan_by_ccc(proxy->dial_prefix,&dialplan);
+ lookup_dial_plan_by_ccc(tmpproxy->dial_prefix,&dialplan);
ms_debug("Using dial plan '%s'",dialplan.country);
/* the number has international prefix or +, so nothing to do*/
if (flatten[0]=='+'){
ms_debug("Prefix already present.");
/*eventually replace the plus by the international calling prefix of the country*/
- if (proxy->dial_escape_plus) {
+ if (tmpproxy->dial_escape_plus) {
replace_plus_with_icp(flatten,result,result_len,dialplan.icp);
}else{
strncpy(result, flatten, result_len-1);
}
}else if (strstr(flatten,dialplan.icp)==flatten){
- if (proxy->dial_escape_plus){
+ if (tmpproxy->dial_escape_plus){
strncpy(result, flatten, result_len-1);
}else{
replace_icp_with_plus(flatten, result, result_len, dialplan.icp);
@@ -978,7 +919,7 @@ bool_t linphone_proxy_config_normalize_number(LinphoneProxyConfig *inproxy, cons
skip=numlen-dialplan.nnl;
if (skip<0) skip=0;
/*first prepend international calling prefix or +*/
- if (proxy->dial_escape_plus){
+ if (tmpproxy->dial_escape_plus){
strncpy(result,dialplan.icp,result_len);
i+=strlen(dialplan.icp);
}else{
@@ -994,42 +935,156 @@ bool_t linphone_proxy_config_normalize_number(LinphoneProxyConfig *inproxy, cons
strncpy(result+i,flatten+skip,result_len-i-1);
}
}
-
ms_free(flatten);
ret = TRUE;
} else {
strncpy(result,username,result_len-1);
ret = FALSE;
}
- if (inproxy==NULL) ms_free(proxy);
+ if (proxy==NULL) ms_free(tmpproxy);
return ret;
}
+char* linphone_proxy_config_normalize_phone_number(LinphoneProxyConfig *proxy, const char *username) {
+ LinphoneProxyConfig *tmpproxy = proxy ? proxy : linphone_proxy_config_new();
+ char* result = NULL;
+ if (linphone_proxy_config_is_phone_number(tmpproxy, username)){
+ dial_plan_t dialplan = {0};
+ char * flatten=flatten_number(username);
+ ms_debug("Flattened number is '%s'",flatten);
+
+ /*if proxy has a dial prefix, modify phonenumber accordingly*/
+ if (tmpproxy->dial_prefix!=NULL && tmpproxy->dial_prefix[0]!='\0'){
+ lookup_dial_plan_by_ccc(tmpproxy->dial_prefix,&dialplan);
+ ms_debug("Using dial plan '%s'",dialplan.country);
+ /* the number already starts with + or international prefix*/
+ if (flatten[0]=='+'||strstr(flatten,dialplan.icp)==flatten){
+ ms_debug("Prefix already present.");
+ if (tmpproxy->dial_escape_plus) {
+ result = replace_plus_with_icp_new(flatten,dialplan.icp);
+ } else {
+ result = replace_icp_with_plus_new(flatten,dialplan.icp);
+ }
+ }else{
+ /*0. keep at most national number significant digits */
+ char* flatten_start = flatten + MAX(0, strlen(flatten) - dialplan.nnl);
+ /*1. First prepend international calling prefix or +*/
+ /*2. Second add prefix*/
+ /*3. Finally add user digits */
+
+ result = ms_strdup_printf("%s%s%s"
+ , tmpproxy->dial_escape_plus ? dialplan.icp : "+"
+ , dialplan.ccc
+ , flatten_start);
+ }
+ }
+ if (result==NULL) {
+ result = flatten;
+ } else {
+ ms_free(flatten);
+ }
+ }
+ if (proxy==NULL) ms_free(tmpproxy);
+ return result;
+}
+
+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;
+ }
+}
+
+LinphoneAddress* linphone_proxy_config_normalize_sip_uri(LinphoneProxyConfig *proxy, const char *username) {
+ enum_lookup_res_t *enumres=NULL;
+ char *enum_domain=NULL;
+ char *tmpurl;
+ LinphoneAddress *uri;
+
+ if (*username=='\0') return NULL;
+
+ if (is_enum(username,&enum_domain)){
+ if (proxy) {
+ linphone_core_notify_display_status(proxy->lc,_("Looking for telephone number destination..."));
+ }
+ if (enum_lookup(enum_domain,&enumres)<0){
+ if (proxy) {
+ linphone_core_notify_display_status(proxy->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(username,"sip:")==NULL) && (strstr(username,"sips:")==NULL) ){
+ /* this doesn't look like a true sip uri */
+ if (strchr(username,'@')!=NULL){
+ /* seems like sip: is missing !*/
+ tmpurl=ms_strdup_printf("sip:%s",username);
+ 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 */
+ LinphoneAddress *uri=linphone_address_clone(linphone_proxy_config_get_identity_address(proxy));
+ if (uri==NULL){
+ return NULL;
+ } else {
+ char normalized_username[128];
+ linphone_address_set_display_name(uri,NULL);
+ linphone_proxy_config_normalize_number(proxy,username,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(username);
+ if (uri!=NULL){
+ return _linphone_core_destroy_addr_if_not_sip(uri);
+ }
+
+ return NULL;
+}
+
/**
* Commits modification made to the proxy configuration.
**/
-int linphone_proxy_config_done(LinphoneProxyConfig *obj)
+int linphone_proxy_config_done(LinphoneProxyConfig *cfg)
{
LinphoneProxyConfigAddressComparisonResult res;
- if (!linphone_proxy_config_check(obj->lc,obj))
+ if (!linphone_proxy_config_check(cfg->lc,cfg))
return -1;
/*check if server address as changed*/
- res = linphone_proxy_config_is_server_config_changed(obj);
+ res = linphone_proxy_config_is_server_config_changed(cfg);
if (res != LinphoneProxyConfigAddressEqual) {
/* server config has changed, need to unregister from previous first*/
- if (obj->op) {
+ if (cfg->op) {
if (res == LinphoneProxyConfigAddressDifferent) {
- _linphone_proxy_config_unregister(obj);
+ _linphone_proxy_config_unregister(cfg);
}
- sal_op_set_user_pointer(obj->op,NULL); /*we don't want to receive status for this un register*/
- sal_op_unref(obj->op); /*but we keep refresher to handle authentication if needed*/
- obj->op=NULL;
+ sal_op_set_user_pointer(cfg->op,NULL); /*we don't want to receive status for this un register*/
+ sal_op_unref(cfg->op); /*but we keep refresher to handle authentication if needed*/
+ cfg->op=NULL;
}
}
- obj->commit=TRUE;
- linphone_proxy_config_write_all_to_config_file(obj->lc);
+ cfg->commit=TRUE;
+ linphone_proxy_config_write_all_to_config_file(cfg->lc);
return 0;
}
@@ -1050,19 +1105,14 @@ int linphone_proxy_config_send_publish(LinphoneProxyConfig *proxy, LinphonePrese
if (proxy->state==LinphoneRegistrationOk || proxy->state==LinphoneRegistrationCleared){
if (proxy->publish_op==NULL){
- LinphoneAddress *to=linphone_address_new(linphone_proxy_config_get_identity(proxy));
+ const LinphoneAddress *to=linphone_proxy_config_get_identity_address(proxy);
proxy->publish_op=sal_op_new(proxy->lc->sal);
linphone_configure_op(proxy->lc, proxy->publish_op,
to, NULL, FALSE);
- if (to!=NULL){
- linphone_address_destroy(to);
- }
if (lp_config_get_int(proxy->lc->config,"sip","publish_msg_with_contact",0)){
- SalAddress *addr=sal_address_new(linphone_proxy_config_get_identity(proxy));
- sal_op_set_contact_address(proxy->publish_op,addr);
- sal_address_unref(addr);
+ sal_op_set_contact_address(proxy->publish_op,linphone_proxy_config_get_identity_address(proxy));
}
}
err=sal_publish_presence(proxy->publish_op
@@ -1074,102 +1124,67 @@ int linphone_proxy_config_send_publish(LinphoneProxyConfig *proxy, LinphonePrese
return err;
}
-/**
- * Returns the route set for this proxy configuration.
-**/
-const char *linphone_proxy_config_get_route(const LinphoneProxyConfig *obj){
- return obj->reg_route;
+const char *linphone_proxy_config_get_route(const LinphoneProxyConfig *cfg){
+ return cfg->reg_route;
+}
+
+const LinphoneAddress *linphone_proxy_config_get_identity_address(const LinphoneProxyConfig *cfg){
+ return cfg->identity_address;
+}
+
+const char *linphone_proxy_config_get_identity(const LinphoneProxyConfig *cfg){
+ return cfg->reg_identity;
+}
+
+bool_t linphone_proxy_config_publish_enabled(const LinphoneProxyConfig *cfg){
+ return cfg->publish;
+}
+
+const char *linphone_proxy_config_get_server_addr(const LinphoneProxyConfig *cfg){
+ return cfg->reg_proxy;
}
/**
- * Returns the SIP identity that belongs to this proxy configuration.
- *
- * The SIP identity is a SIP address (Display Name )
+ * @return the duration of registration.
**/
-const char *linphone_proxy_config_get_identity(const LinphoneProxyConfig *obj){
- return obj->reg_identity;
+int linphone_proxy_config_get_expires(const LinphoneProxyConfig *cfg){
+ return cfg->expires;
}
-/**
- * Returns TRUE if PUBLISH request is enabled for this proxy.
-**/
-bool_t linphone_proxy_config_publish_enabled(const LinphoneProxyConfig *obj){
- return obj->publish;
+bool_t linphone_proxy_config_register_enabled(const LinphoneProxyConfig *cfg){
+ return cfg->reg_sendregister;
}
-/**
- * Returns the proxy's SIP address.
-**/
-const char *linphone_proxy_config_get_server_addr(const LinphoneProxyConfig *obj){
- return obj->reg_proxy;
-}
-
-/**
- * Returns the duration of registration.
-**/
-int linphone_proxy_config_get_expires(const LinphoneProxyConfig *obj){
- return obj->expires;
-}
-
-/**
- * Returns TRUE if registration to the proxy is enabled.
-**/
-bool_t linphone_proxy_config_register_enabled(const LinphoneProxyConfig *obj){
- return obj->reg_sendregister;
-}
-
-/**
- * Set optional contact parameters that will be added to the contact information sent in the registration.
- * @param obj the proxy config 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 ;apple-push-id=43143-DFE23F-2323-FA2232.
-**/
-void linphone_proxy_config_set_contact_parameters(LinphoneProxyConfig *obj, const char *contact_params){
- if (obj->contact_params) {
- ms_free(obj->contact_params);
- obj->contact_params=NULL;
+void linphone_proxy_config_set_contact_parameters(LinphoneProxyConfig *cfg, const char *contact_params){
+ if (cfg->contact_params) {
+ ms_free(cfg->contact_params);
+ cfg->contact_params=NULL;
}
if (contact_params){
- obj->contact_params=ms_strdup(contact_params);
+ cfg->contact_params=ms_strdup(contact_params);
}
}
-/**
- * Set optional contact parameters that will be added to the contact information sent in the registration, inside the URI.
- * @param obj the proxy config 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 .
-**/
-void linphone_proxy_config_set_contact_uri_parameters(LinphoneProxyConfig *obj, const char *contact_uri_params){
- if (obj->contact_uri_params) {
- ms_free(obj->contact_uri_params);
- obj->contact_uri_params=NULL;
+void linphone_proxy_config_set_contact_uri_parameters(LinphoneProxyConfig *cfg, const char *contact_uri_params){
+ if (cfg->contact_uri_params) {
+ ms_free(cfg->contact_uri_params);
+ cfg->contact_uri_params=NULL;
}
if (contact_uri_params){
- obj->contact_uri_params=ms_strdup(contact_uri_params);
+ cfg->contact_uri_params=ms_strdup(contact_uri_params);
}
}
-/**
- * Returns previously set contact parameters.
-**/
-const char *linphone_proxy_config_get_contact_parameters(const LinphoneProxyConfig *obj){
- return obj->contact_params;
+const char *linphone_proxy_config_get_contact_parameters(const LinphoneProxyConfig *cfg){
+ return cfg->contact_params;
}
-/**
- * Returns previously set contact URI parameters.
-**/
-const char *linphone_proxy_config_get_contact_uri_parameters(const LinphoneProxyConfig *obj){
- return obj->contact_uri_params;
+const char *linphone_proxy_config_get_contact_uri_parameters(const LinphoneProxyConfig *cfg){
+ return cfg->contact_uri_params;
}
-struct _LinphoneCore * linphone_proxy_config_get_core(const LinphoneProxyConfig *obj){
- return obj->lc;
+struct _LinphoneCore * linphone_proxy_config_get_core(const LinphoneProxyConfig *cfg){
+ return cfg->lc;
}
const char *linphone_proxy_config_get_custom_header(LinphoneProxyConfig *cfg, const char *header_name){
@@ -1183,10 +1198,6 @@ void linphone_proxy_config_set_custom_header(LinphoneProxyConfig *cfg, const cha
cfg->sent_headers=sal_custom_header_append(cfg->sent_headers, header_name, header_value);
}
-/**
- * Add a proxy configuration.
- * This will start registration on the proxy, if registration is enabled.
-**/
int linphone_core_add_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *cfg){
if (!linphone_proxy_config_check(lc,cfg)) {
return -1;
@@ -1200,12 +1211,6 @@ int linphone_core_add_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *cfg){
return 0;
}
-/**
- * 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.
-**/
void linphone_core_remove_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *cfg){
/* check this proxy config is in the list before doing more*/
if (ms_list_find(lc->sip_conf.proxies,cfg)==NULL){
@@ -1249,15 +1254,6 @@ static int linphone_core_get_default_proxy_config_index(LinphoneCore *lc) {
return pos;
}
-/**
- * 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.
-**/
void linphone_core_set_default_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *config){
/* check if this proxy is in our list */
if (config!=NULL){
@@ -1277,20 +1273,11 @@ void linphone_core_set_default_proxy_index(LinphoneCore *lc, int index){
else linphone_core_set_default_proxy(lc,ms_list_nth_data(lc->sip_conf.proxies,index));
}
-/**
- * Returns the default proxy configuration, that is the one used to determine the current identity.
- * @deprecated Use linphone_core_get_default_proxy_config() instead.
-**/
int linphone_core_get_default_proxy(LinphoneCore *lc, LinphoneProxyConfig **config){
if (config!=NULL) *config=lc->default_proxy;
return linphone_core_get_default_proxy_config_index(lc);
}
-/**
- * Returns the default proxy configuration, that is the one used to determine the current identity.
- * @param[in] lc LinphoneCore object
- * @return The default proxy configuration.
-**/
LinphoneProxyConfig * linphone_core_get_default_proxy_config(LinphoneCore *lc) {
return lc->default_proxy;
}
@@ -1299,64 +1286,64 @@ const MSList *linphone_core_get_proxy_config_list(const LinphoneCore *lc){
return lc->sip_conf.proxies;
}
-void linphone_proxy_config_write_to_config_file(LpConfig *config, LinphoneProxyConfig *obj, int index)
+void linphone_proxy_config_write_to_config_file(LpConfig *config, LinphoneProxyConfig *cfg, int index)
{
char key[50];
sprintf(key,"proxy_%i",index);
lp_config_clean_section(config,key);
- if (obj==NULL){
+ if (cfg==NULL){
return;
}
- if (obj->type!=NULL){
- lp_config_set_string(config,key,"type",obj->type);
+ if (cfg->type!=NULL){
+ lp_config_set_string(config,key,"type",cfg->type);
}
- if (obj->reg_proxy!=NULL){
- lp_config_set_string(config,key,"reg_proxy",obj->reg_proxy);
+ if (cfg->reg_proxy!=NULL){
+ lp_config_set_string(config,key,"reg_proxy",cfg->reg_proxy);
}
- if (obj->reg_route!=NULL){
- lp_config_set_string(config,key,"reg_route",obj->reg_route);
+ if (cfg->reg_route!=NULL){
+ lp_config_set_string(config,key,"reg_route",cfg->reg_route);
}
- if (obj->reg_identity!=NULL){
- lp_config_set_string(config,key,"reg_identity",obj->reg_identity);
+ if (cfg->reg_identity!=NULL){
+ lp_config_set_string(config,key,"reg_identity",cfg->reg_identity);
}
- if (obj->realm!=NULL){
- lp_config_set_string(config,key,"realm",obj->realm);
+ if (cfg->realm!=NULL){
+ lp_config_set_string(config,key,"realm",cfg->realm);
}
- if (obj->contact_params!=NULL){
- lp_config_set_string(config,key,"contact_parameters",obj->contact_params);
+ if (cfg->contact_params!=NULL){
+ lp_config_set_string(config,key,"contact_parameters",cfg->contact_params);
}
- if (obj->contact_uri_params!=NULL){
- lp_config_set_string(config,key,"contact_uri_parameters",obj->contact_uri_params);
+ if (cfg->contact_uri_params!=NULL){
+ lp_config_set_string(config,key,"contact_uri_parameters",cfg->contact_uri_params);
}
- if (obj->quality_reporting_collector!=NULL){
- lp_config_set_string(config,key,"quality_reporting_collector",obj->quality_reporting_collector);
+ if (cfg->quality_reporting_collector!=NULL){
+ lp_config_set_string(config,key,"quality_reporting_collector",cfg->quality_reporting_collector);
}
- lp_config_set_int(config,key,"quality_reporting_enabled",obj->quality_reporting_enabled);
- lp_config_set_int(config,key,"quality_reporting_interval",obj->quality_reporting_interval);
- lp_config_set_int(config,key,"reg_expires",obj->expires);
- lp_config_set_int(config,key,"reg_sendregister",obj->reg_sendregister);
- lp_config_set_int(config,key,"publish",obj->publish);
- lp_config_set_int(config, key, "avpf", obj->avpf_mode);
- lp_config_set_int(config, key, "avpf_rr_interval", obj->avpf_rr_interval);
- lp_config_set_int(config,key,"dial_escape_plus",obj->dial_escape_plus);
- lp_config_set_string(config,key,"dial_prefix",obj->dial_prefix);
- lp_config_set_int(config,key,"privacy",obj->privacy);
+ lp_config_set_int(config,key,"quality_reporting_enabled",cfg->quality_reporting_enabled);
+ lp_config_set_int(config,key,"quality_reporting_interval",cfg->quality_reporting_interval);
+ lp_config_set_int(config,key,"reg_expires",cfg->expires);
+ lp_config_set_int(config,key,"reg_sendregister",cfg->reg_sendregister);
+ lp_config_set_int(config,key,"publish",cfg->publish);
+ lp_config_set_int(config, key, "avpf", cfg->avpf_mode);
+ lp_config_set_int(config, key, "avpf_rr_interval", cfg->avpf_rr_interval);
+ lp_config_set_int(config,key,"dial_escape_plus",cfg->dial_escape_plus);
+ lp_config_set_string(config,key,"dial_prefix",cfg->dial_prefix);
+ lp_config_set_int(config,key,"privacy",cfg->privacy);
}
-#define CONFIGURE_STRING_VALUE(obj,config,key,param,param_name) \
+#define CONFIGURE_STRING_VALUE(cfg,config,key,param,param_name) \
{\
- char* default_value = linphone_proxy_config_get_##param(obj)?ms_strdup(linphone_proxy_config_get_##param(obj)):NULL;\
- linphone_proxy_config_set_##param(obj,lp_config_get_string(config,key,param_name,default_value)); \
+ char* default_value = linphone_proxy_config_get_##param(cfg)?ms_strdup(linphone_proxy_config_get_##param(cfg)):NULL;\
+ linphone_proxy_config_set_##param(cfg,lp_config_get_string(config,key,param_name,default_value)); \
if ( default_value) ms_free(default_value); \
}
-#define CONFIGURE_BOOL_VALUE(obj,config,key,param,param_name) \
- linphone_proxy_config_enable_##param(obj,lp_config_get_int(config,key,param_name,linphone_proxy_config_##param##_enabled(obj)));
+#define CONFIGURE_BOOL_VALUE(cfg,config,key,param,param_name) \
+ linphone_proxy_config_enable_##param(cfg,lp_config_get_int(config,key,param_name,linphone_proxy_config_##param##_enabled(cfg)));
-#define CONFIGURE_INT_VALUE(obj,config,key,param,param_name) \
- linphone_proxy_config_set_##param(obj,lp_config_get_int(config,key,param_name,linphone_proxy_config_get_##param(obj)));
+#define CONFIGURE_INT_VALUE(cfg,config,key,param,param_name) \
+ linphone_proxy_config_set_##param(cfg,lp_config_get_int(config,key,param_name,linphone_proxy_config_get_##param(cfg)));
LinphoneProxyConfig *linphone_proxy_config_new_from_config_file(LinphoneCore* lc, int index)
{
@@ -1491,10 +1478,6 @@ SipSetupContext *linphone_proxy_config_get_sip_setup_context(LinphoneProxyConfig
return cfg->ssctx;
}
-/**
- * @}
-**/
-
void linphone_proxy_config_set_user_data(LinphoneProxyConfig *cfg, void *ud) {
cfg->user_data = ud;
}
@@ -1592,16 +1575,15 @@ void linphone_proxy_config_set_privacy(LinphoneProxyConfig *params, LinphonePriv
LinphonePrivacyMask linphone_proxy_config_get_privacy(const LinphoneProxyConfig *params) {
return params->privacy;
}
-void linphone_proxy_config_set_publish_expires(LinphoneProxyConfig *obj, int expires) {
- obj->publish_expires=expires;
+void linphone_proxy_config_set_publish_expires(LinphoneProxyConfig *cfg, int expires) {
+ cfg->publish_expires=expires;
}
-int linphone_proxy_config_get_publish_expires(const LinphoneProxyConfig *obj) {
- if (obj->publish_expires<0) {
- return obj->expires; /*default value is same as register*/
+int linphone_proxy_config_get_publish_expires(const LinphoneProxyConfig *cfg) {
+ if (cfg->publish_expires<0) {
+ return cfg->expires; /*default value is same as register*/
} else {
- return obj->publish_expires;
+ return cfg->publish_expires;
}
-
}
void linphone_proxy_config_enable_avpf(LinphoneProxyConfig *cfg, bool_t enable) {
@@ -1632,6 +1614,6 @@ uint8_t linphone_proxy_config_get_avpf_rr_interval(const LinphoneProxyConfig *cf
return cfg->avpf_rr_interval;
}
-char* linphone_proxy_config_get_contact(const LinphoneProxyConfig *cfg) {
- return sal_op_get_public_uri(cfg->op);
+const LinphoneAddress* linphone_proxy_config_get_contact(const LinphoneProxyConfig *cfg) {
+ return sal_op_get_contact_address(cfg->op);
}
diff --git a/coreapi/quality_reporting.c b/coreapi/quality_reporting.c
index e7e828c4e..4df8a2e0e 100644
--- a/coreapi/quality_reporting.c
+++ b/coreapi/quality_reporting.c
@@ -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);
diff --git a/gtk/chat.c b/gtk/chat.c
index 5479b7330..2075a9fb7 100644
--- a/gtk/chat.c
+++ b/gtk/chat.c
@@ -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");
diff --git a/gtk/incall_view.c b/gtk/incall_view.c
index cb7d1ac0c..15b1396bb 100644
--- a/gtk/incall_view.c
+++ b/gtk/incall_view.c
@@ -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");
diff --git a/gtk/linphone.h b/gtk/linphone.h
index b4bbf02c2..44f73a7f2 100644
--- a/gtk/linphone.h
+++ b/gtk/linphone.h
@@ -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
# 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);
diff --git a/gtk/loginframe.c b/gtk/loginframe.c
index 727a746d1..cbe384c42 100644
--- a/gtk/loginframe.c
+++ b/gtk/loginframe.c
@@ -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;
diff --git a/gtk/main.c b/gtk/main.c
index e936853f9..1c6e6c663 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -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) {
diff --git a/gtk/main.ui b/gtk/main.ui
index 48e5a61d6..1c28c26f3 100644
--- a/gtk/main.ui
+++ b/gtk/main.ui
@@ -118,6 +118,9 @@
True
True
4
+ False
+ word-char
+ False
@@ -399,67 +402,104 @@
False
False
- 2
+ 5
3
@@ -1021,6 +1061,19 @@
0
+
+
+ True
+ True
+ True
+
+
+
+ False
+ True
+ 1
+
+
True
@@ -1032,8 +1085,7 @@
False
False
6
- end
- 1
+ 2
@@ -1046,22 +1098,21 @@
False
True
- 6
- end
- 2
+ 3
-
+
True
True
True
-
+
False
- False
- 3
+ True
+ 4
+ end
diff --git a/gtk/status_icon.c b/gtk/status_icon.c
index ad94d50ad..cbee89f54 100644
--- a/gtk/status_icon.c
+++ b/gtk/status_icon.c
@@ -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);
diff --git a/gtk/videowindow.c b/gtk/videowindow.c
index f0a8b2e5b..ebc5f69a5 100644
--- a/gtk/videowindow.c
+++ b/gtk/videowindow.c
@@ -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);
}
diff --git a/include/sal/sal.h b/include/sal/sal.h
index bceff451d..80f334835 100644
--- a/include/sal/sal.h
+++ b/include/sal/sal.h
@@ -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);
diff --git a/mediastreamer2 b/mediastreamer2
index 7494e580b..c9e33c769 160000
--- a/mediastreamer2
+++ b/mediastreamer2
@@ -1 +1 @@
-Subproject commit 7494e580b6127b950f29a5dff731789ed605b3a6
+Subproject commit c9e33c769b2865f5dc8e2366d9f2060daa95b893
diff --git a/oRTP b/oRTP
index d9377cb47..6ace4eed1 160000
--- a/oRTP
+++ b/oRTP
@@ -1 +1 @@
-Subproject commit d9377cb47177cd92d2a1971cd389221aeebcabde
+Subproject commit 6ace4eed11a93209de13b39cade47a54d534e950
diff --git a/pixmaps/CMakeLists.txt b/pixmaps/CMakeLists.txt
index 301a6a442..800869425 100644
--- a/pixmaps/CMakeLists.txt
+++ b/pixmaps/CMakeLists.txt
@@ -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
diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am
index 10ad6856c..b0fb73d8a 100644
--- a/pixmaps/Makefile.am
+++ b/pixmaps/Makefile.am
@@ -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 \
diff --git a/pixmaps/addcall-green.png b/pixmaps/addcall-green.png
deleted file mode 100644
index 9de8463ca..000000000
Binary files a/pixmaps/addcall-green.png and /dev/null differ
diff --git a/pixmaps/call_add.png b/pixmaps/call_add.png
new file mode 100644
index 000000000..9e2cbb18e
Binary files /dev/null and b/pixmaps/call_add.png differ
diff --git a/pixmaps/call_start.png b/pixmaps/call_start.png
new file mode 100644
index 000000000..77b264d72
Binary files /dev/null and b/pixmaps/call_start.png differ
diff --git a/pixmaps/chat_start.png b/pixmaps/chat_start.png
new file mode 100644
index 000000000..3de673211
Binary files /dev/null and b/pixmaps/chat_start.png differ
diff --git a/pixmaps/dialer-orange.png b/pixmaps/dialer-orange.png
deleted file mode 100644
index 2d715eac0..000000000
Binary files a/pixmaps/dialer-orange.png and /dev/null differ
diff --git a/pixmaps/dialer.png b/pixmaps/dialer.png
index 5da3ad70d..bb9747a90 100644
Binary files a/pixmaps/dialer.png and b/pixmaps/dialer.png differ
diff --git a/po/ar.po b/po/ar.po
index be90313a7..e1e5e75a5 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -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: محيي الدين \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 \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 %s\n"
" at realm %s:"
msgstr "ادخل كلمة السر لـ %s\n في نطاق %s:"
-#: ../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 "by %s"
msgstr "بواسطة %s"
-#: ../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."
diff --git a/po/cs.po b/po/cs.po
index a5b611a29..9feeb6130 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
msgstr "kým: %s"
-#: ../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."
diff --git a/po/de.po b/po/de.po
index 686c59446..738db0d49 100644
--- a/po/de.po
+++ b/po/de.po
@@ -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 \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 \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 %s\n"
" at realm %s:"
msgstr "Bitte geben Sie Ihr Passwort für den Benutzernamen %s\n für Bereich %s 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 "by %s"
msgstr "von %s"
-#: ../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."
diff --git a/po/es.po b/po/es.po
index 3f67ca98e..c18f02175 100644
--- a/po/es.po
+++ b/po/es.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
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."
diff --git a/po/fr.po b/po/fr.po
index a0afc8520..751217994 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -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 \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 %s\n"
" at realm %s:"
msgstr "Entrez le mot de passe pour %s\n sur le domaine %s:"
-#: ../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 "by %s"
msgstr "b>par %s"
-#: ../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 d’arrê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."
diff --git a/po/he.po b/po/he.po
index 54b391bc9..2b1539249 100644
--- a/po/he.po
+++ b/po/he.po
@@ -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 \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 %s\n"
" at realm %s:"
msgstr "אנא הזן סיסמה עבור משתמש %s\nבמתחם %s:"
-#: ../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 "by %s"
msgstr "על ידי %s"
-#: ../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."
diff --git a/po/hu.po b/po/hu.po
index 7e63b4c27..6e8ab77e8 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
msgstr "a következő által: %s"
-#: ../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."
diff --git a/po/it.po b/po/it.po
index e3fd544b6..ac1690617 100644
--- a/po/it.po
+++ b/po/it.po
@@ -3,14 +3,15 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
+# Fabrizio Carrai, 2015
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 \n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/language/it/)\n"
+"Language-Team: Italian (http://www.transifex.com/p/linphone-gtk/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -20,7 +21,7 @@ msgstr ""
#: ../gtk/calllogs.c:149 ../gtk/friendlist.c:976
#, c-format
msgid "Call %s"
-msgstr "Chiamata %s"
+msgstr "Chiama %s"
#: ../gtk/calllogs.c:150 ../gtk/friendlist.c:977
#, c-format
@@ -30,194 +31,194 @@ msgstr "Invia testo a %s"
#: ../gtk/calllogs.c:233
#, c-format
msgid "Recent calls (%i)"
-msgstr ""
+msgstr "Chiamate recenti (%i)"
#: ../gtk/calllogs.c:315
msgid "n/a"
-msgstr ""
+msgstr "n/d"
#: ../gtk/calllogs.c:318
msgid "Aborted"
-msgstr ""
+msgstr "Annullata"
#: ../gtk/calllogs.c:321
msgid "Missed"
-msgstr ""
+msgstr "Persa"
#: ../gtk/calllogs.c:324
msgid "Declined"
-msgstr ""
+msgstr "Rifiutata"
#: ../gtk/calllogs.c:330
#, c-format
msgid "%i minute"
msgid_plural "%i minutes"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%i minuto"
+msgstr[1] "%i minuti"
#: ../gtk/calllogs.c:333
#, c-format
msgid "%i second"
msgid_plural "%i seconds"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%i secondo"
+msgstr[1] "%i secondi"
#: ../gtk/calllogs.c:338
#, c-format
msgid ""
"%s\tQuality: %s\n"
"%s\t%s\t"
-msgstr ""
+msgstr "%s\tQualità: %s\n%s\t%s\t"
#: ../gtk/calllogs.c:342
#, c-format
msgid "%s\t%s"
-msgstr ""
+msgstr "%s\t%s"
#: ../gtk/conference.c:38 ../gtk/main.ui.h:13
msgid "Conference"
-msgstr ""
+msgstr "Conferenza"
#: ../gtk/conference.c:46
msgid "Me"
-msgstr ""
+msgstr "Me"
#: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
#, c-format
msgid "Couldn't find pixmap file: %s"
-msgstr ""
+msgstr "Impossibile trovare il file pixmap %s"
#: ../gtk/main.c:138
msgid "log to stdout some debug information while running."
-msgstr ""
+msgstr "alcune informazioni di debug verranno registrate sullo stdout durante l'esecuzione"
#: ../gtk/main.c:139
msgid "display version and exit."
-msgstr ""
+msgstr "mostra la versione e termina."
#: ../gtk/main.c:140
msgid "path to a file to write logs into."
-msgstr ""
+msgstr "percorso del file di log."
#: ../gtk/main.c:141
msgid "Start linphone with video disabled."
-msgstr ""
+msgstr "Avvia linphone con il video disabilitato."
#: ../gtk/main.c:142
msgid "Start only in the system tray, do not show the main interface."
-msgstr ""
+msgstr "Avvia solo nel system tray, non mostrare l'interfaccia principale."
#: ../gtk/main.c:143
msgid "address to call right now"
-msgstr ""
+msgstr "indirizzo da chiamare adesso"
#: ../gtk/main.c:144
msgid ""
"Specifiy a working directory (should be the base of the installation, eg: "
"c:\\Program Files\\Linphone)"
-msgstr ""
+msgstr "Specificare una directory di lavoro (dovrebbe essere quella di installazione, es: c:\\Program Files\\Linphone)"
#: ../gtk/main.c:145
msgid "Configuration file"
-msgstr ""
+msgstr "File di configurazione"
#: ../gtk/main.c:146
msgid "Run the audio assistant"
-msgstr ""
+msgstr "Avvia l'assistente audio"
#: ../gtk/main.c:147
msgid "Run self test and exit 0 if succeed"
-msgstr ""
+msgstr "Esegui il self test e esci con 0 in caso di successo"
-#: ../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 voui aggiungere il tuo contatto alla sua listaVoui permettere che lui veda il tuo stato o aggiungerlo alla tua lista dei contatti Se rispondi no questo utente sarà momentaneamente bloccato."
+msgstr ""
-#: ../gtk/main.c:1159
+#: ../gtk/main.c:1155
#, c-format
msgid ""
"Please enter your password for username %s\n"
" at realm %s:"
-msgstr ""
+msgstr "Digitare la password per l'utente %s\nnel dominio %s:"
-#: ../gtk/main.c:1280
+#: ../gtk/main.c:1276
msgid "Call error"
-msgstr ""
+msgstr "Errore durante la chiamata"
-#: ../gtk/main.c:1283 ../coreapi/linphonecore.c:3909
+#: ../gtk/main.c:1279 ../coreapi/linphonecore.c:3739
msgid "Call ended"
msgstr "Chiamata terminata"
-#: ../gtk/main.c:1286 ../coreapi/call_log.c:221
+#: ../gtk/main.c:1282 ../coreapi/call_log.c:221
msgid "Incoming call"
-msgstr "Chimata in entrata"
+msgstr "Chiamata in arrivo"
-#: ../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 ""
+msgstr "Risposta"
-#: ../gtk/main.c:1290 ../gtk/main.ui.h:6
+#: ../gtk/main.c:1286 ../gtk/main.ui.h:6
msgid "Decline"
msgstr "Rifiuta"
-#: ../gtk/main.c:1296
+#: ../gtk/main.c:1292
msgid "Call paused"
-msgstr ""
+msgstr "Chiamata in pausa"
-#: ../gtk/main.c:1296
+#: ../gtk/main.c:1292
#, c-format
msgid "by %s"
-msgstr ""
+msgstr "da %s"
-#: ../gtk/main.c:1366
+#: ../gtk/main.c:1362
#, c-format
msgid "%s proposed to start video. Do you accept ?"
-msgstr ""
+msgstr "%s chiede di avviare il video. Accetti ?"
-#: ../gtk/main.c:1521
+#: ../gtk/main.c:1517
msgid "Website link"
-msgstr ""
+msgstr "Collegamento al sito 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 ""
+msgstr "Un videotelefono su internet"
-#: ../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 ""
+msgstr "Siamo trasferiti verso %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 ""
+msgstr "Non è stata trovata nessuna scheda audio.\nNon sarà possibile effettuare o ricevere chiamate in voce."
-#: ../gtk/main.c:2120
+#: ../gtk/main.c:2116
msgid "A free SIP video-phone"
-msgstr ""
+msgstr "Un videotelefono SIP free"
-#: ../gtk/main.c:2229
+#: ../gtk/main.c:2225
#, c-format
msgid "Hello\n"
-msgstr ""
+msgstr "Salve\n"
#: ../gtk/friendlist.c:506
msgid "Add to addressbook"
-msgstr ""
+msgstr "Aggiungi alla rubrica"
#: ../gtk/friendlist.c:692
msgid "Presence status"
@@ -229,11 +230,11 @@ msgstr "Nome"
#: ../gtk/friendlist.c:722
msgid "Call"
-msgstr ""
+msgstr "Chiama"
#: ../gtk/friendlist.c:727
msgid "Chat"
-msgstr ""
+msgstr "Chat"
#: ../gtk/friendlist.c:757
#, c-format
@@ -252,12 +253,12 @@ msgstr "Modifica contatto %s"
#: ../gtk/friendlist.c:979
#, c-format
msgid "Delete contact '%s'"
-msgstr "Elimina contatto %s"
+msgstr "Elimina il contatto %s"
#: ../gtk/friendlist.c:980
#, c-format
msgid "Delete chat history of '%s'"
-msgstr ""
+msgstr "Cancella la cronologia della chat con '%s'"
#: ../gtk/friendlist.c:1031
#, c-format
@@ -266,7 +267,7 @@ msgstr "Aggiungi nuovo contatto dalla directory %s"
#: ../gtk/propertybox.c:597
msgid "Rate (Hz)"
-msgstr ""
+msgstr "Frequenza (Hz)"
#: ../gtk/propertybox.c:603
msgid "Status"
@@ -274,7 +275,7 @@ msgstr "Stato"
#: ../gtk/propertybox.c:616
msgid "IP Bitrate (kbit/s)"
-msgstr ""
+msgstr "IP Bitrate (kbit/s)"
#: ../gtk/propertybox.c:627
msgid "Parameters"
@@ -314,7 +315,7 @@ msgstr "Spagnolo"
#: ../gtk/propertybox.c:1166
msgid "Brazilian Portugese"
-msgstr ""
+msgstr "Portoghese brasiliano"
#: ../gtk/propertybox.c:1167
msgid "Polish"
@@ -346,31 +347,31 @@ msgstr "Ceco"
#: ../gtk/propertybox.c:1174
msgid "Chinese"
-msgstr ""
+msgstr "Cinese"
#: ../gtk/propertybox.c:1175
msgid "Traditional Chinese"
-msgstr ""
+msgstr "Cinese tradizionale"
#: ../gtk/propertybox.c:1176
msgid "Norwegian"
-msgstr ""
+msgstr "Norvegese"
#: ../gtk/propertybox.c:1177
msgid "Hebrew"
-msgstr ""
+msgstr "Ebraico"
#: ../gtk/propertybox.c:1178
msgid "Serbian"
-msgstr ""
+msgstr "Serbo"
#: ../gtk/propertybox.c:1179
msgid "Arabic"
-msgstr ""
+msgstr "Arabo"
#: ../gtk/propertybox.c:1180
msgid "Turkish"
-msgstr ""
+msgstr "Turco"
#: ../gtk/propertybox.c:1237
msgid ""
@@ -379,30 +380,30 @@ msgstr "Riavviare il software per utilizzare la nuova lingua selezionata"
#: ../gtk/propertybox.c:1317
msgid "None"
-msgstr ""
+msgstr "Nessuno"
#: ../gtk/propertybox.c:1321
msgid "SRTP"
-msgstr ""
+msgstr "SRTP"
#: ../gtk/propertybox.c:1327
msgid "DTLS"
-msgstr ""
+msgstr "DTLS"
#: ../gtk/propertybox.c:1334
msgid "ZRTP"
-msgstr ""
+msgstr "ZRTP"
#: ../gtk/update.c:80
#, c-format
msgid ""
"A more recent version is availalble from %s.\n"
"Would you like to open a browser to download it ?"
-msgstr "Una versione più recente è disponibile da %s.\nVuoi aprire un browser per eseguire il download ?"
+msgstr "Una versione più recente è disponibile su %s.\nVuoi aprire un browser per eseguire il download ?"
#: ../gtk/update.c:91
msgid "You are running the lastest version."
-msgstr "Non è stato trovato alcun aggiornamento"
+msgstr "Stai eseguendo la versione più aggiornata."
#: ../gtk/buddylookup.c:85
msgid "Firstname, Lastname"
@@ -410,7 +411,7 @@ msgstr "Nome, Cognome"
#: ../gtk/buddylookup.c:160
msgid "Error communicating with server."
-msgstr "Errore di comunicazione"
+msgstr "Errore di comunicazione con il server."
#: ../gtk/buddylookup.c:164
msgid "Connecting..."
@@ -418,68 +419,68 @@ msgstr "In connessione..."
#: ../gtk/buddylookup.c:168
msgid "Connected"
-msgstr "Connessione"
+msgstr "Connesso"
#: ../gtk/buddylookup.c:172
msgid "Receiving data..."
-msgstr "Ricezione data..."
+msgstr "Ricezione dei dati..."
#: ../gtk/buddylookup.c:180
#, c-format
msgid "Found %i contact"
msgid_plural "Found %i contacts"
msgstr[0] "Trovato %i contatto"
-msgstr[1] "Trovato %i contatti"
+msgstr[1] "Trovati %i contatti"
#: ../gtk/setupwizard.c:161
msgid ""
"Welcome!\n"
"This assistant will help you to use a SIP account for your calls."
-msgstr ""
+msgstr "Benvenuto!\nL'assistente vi aiuterà ad usare un indirizzo SIP per le vostre chiamate."
#: ../gtk/setupwizard.c:170
msgid "Create an account on linphone.org"
-msgstr ""
+msgstr "Creare un account su linphone.org"
#: ../gtk/setupwizard.c:171
msgid "I have already a linphone.org account and I just want to use it"
-msgstr ""
+msgstr "Ho già un account su linphone.org che voglio usare."
#: ../gtk/setupwizard.c:172
msgid "I have already a sip account and I just want to use it"
-msgstr ""
+msgstr "Ho già un account SIP e voglio usarlo"
#: ../gtk/setupwizard.c:173
msgid "I want to specify a remote configuration URI"
-msgstr ""
+msgstr "Voglio specificare un URI per la configurazione remota"
#: ../gtk/setupwizard.c:207
msgid "Enter your account information"
-msgstr ""
+msgstr "Inserire i dati del vostro account"
#: ../gtk/setupwizard.c:222
msgid "Username*"
-msgstr ""
+msgstr "Nome utente*"
#: ../gtk/setupwizard.c:223
msgid "Password*"
-msgstr ""
+msgstr "Password*"
#: ../gtk/setupwizard.c:226
msgid "Domain*"
-msgstr ""
+msgstr "Dominio*"
#: ../gtk/setupwizard.c:227
msgid "Proxy"
-msgstr ""
+msgstr "Proxy"
#: ../gtk/setupwizard.c:264
msgid "Enter your linphone.org username"
-msgstr ""
+msgstr "Immettere il vostro nome utente su linphone.org"
#: ../gtk/setupwizard.c:276 ../gtk/parameters.ui.h:91 ../gtk/ldap.ui.h:4
msgid "Username:"
-msgstr "Manuale utente"
+msgstr "Nome utente:"
#: ../gtk/setupwizard.c:278 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5
msgid "Password:"
@@ -487,47 +488,47 @@ msgstr "Password:"
#: ../gtk/setupwizard.c:420
msgid "(*) Required fields"
-msgstr ""
+msgstr "(*) Campi obbligatori"
#: ../gtk/setupwizard.c:421
msgid "Username: (*)"
-msgstr ""
+msgstr "Nome utente: (*)"
#: ../gtk/setupwizard.c:423
msgid "Password: (*)"
-msgstr ""
+msgstr "Password: (*)"
#: ../gtk/setupwizard.c:425
msgid "Email: (*)"
-msgstr ""
+msgstr "Email: (*)"
#: ../gtk/setupwizard.c:427
msgid "Confirm your password: (*)"
-msgstr ""
+msgstr "Confermare la password: (*)"
#: ../gtk/setupwizard.c:442
msgid "Keep me informed with linphone updates"
-msgstr ""
+msgstr "Mantenetemi aggiornato sugli aggiornamenti di linphone"
#: ../gtk/setupwizard.c:487
msgid "Your account is being created, please wait."
-msgstr ""
+msgstr "Il vostro account è stato creato, attendere."
#: ../gtk/setupwizard.c:495
msgid ""
"Please validate your account by clicking on the link we just sent you by email.\n"
"Then come back here and press Next button."
-msgstr ""
+msgstr "Attivate il vostro account cin il link che vi è appena stato inviato per posta elettronica.\nQuindi tornare qui e premere il tasto \"Avanti\"."
#: ../gtk/setupwizard.c:505
msgid "Checking if your account is been validated, please wait."
-msgstr ""
+msgstr "Verifica della validazione dell'account, attendere."
#: ../gtk/setupwizard.c:513
msgid ""
"Error, account not validated, username already used or server unreachable.\n"
"Please go back and try again."
-msgstr ""
+msgstr "Errore, account non valido, nome utente già in uso o server non raggiungibile.\nTornare indietro e riprovare."
#: ../gtk/setupwizard.c:522
msgid "Thank you. Your account is now configured and ready for use."
@@ -535,7 +536,7 @@ msgstr "Grazie. Il tuo account è configurato e pronto all'uso"
#: ../gtk/setupwizard.c:558
msgid "SIP account configuration assistant"
-msgstr ""
+msgstr "Assistente per la configurazione di un account SIP"
#: ../gtk/setupwizard.c:579
msgid "Welcome to the account setup assistant"
@@ -547,187 +548,187 @@ msgstr "Configuratore di account"
#: ../gtk/setupwizard.c:589
msgid "Configure your account (step 1/1)"
-msgstr ""
+msgstr "Configurare il tuo account (passo 1/1)"
#: ../gtk/setupwizard.c:593
msgid "Enter your sip username (step 1/1)"
-msgstr ""
+msgstr "Introdurre il vostro nome utente SIP (passo 1/1)"
#: ../gtk/setupwizard.c:597
msgid "Enter account information (step 1/2)"
-msgstr ""
+msgstr "Introdurre le informazioni dell'account (passo 1/2)"
#: ../gtk/setupwizard.c:602
msgid "Account creation in progress"
-msgstr ""
+msgstr "Creazione dell'account in corso"
#: ../gtk/setupwizard.c:606
msgid "Validation (step 2/2)"
-msgstr ""
+msgstr "Validazione (passo 2/2)"
#: ../gtk/setupwizard.c:611
msgid "Account validation check in progress"
-msgstr ""
+msgstr "Controllo della validazione dell'account in corso"
#: ../gtk/setupwizard.c:615
msgid "Error"
-msgstr ""
+msgstr "Errore"
-#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:534
+#: ../gtk/setupwizard.c:619 ../gtk/audio_assistant.c:541
msgid "Terminating"
-msgstr ""
+msgstr "Terminando"
#: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94
#, c-format
msgid "Call #%i"
-msgstr ""
+msgstr "Chiamata #%i"
#: ../gtk/incall_view.c:155
#, c-format
msgid "Transfer to call #%i with %s"
-msgstr ""
+msgstr "Trasferimento per chiamare #%i con %s"
#: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214
msgid "Not used"
-msgstr ""
+msgstr "Non usato"
#: ../gtk/incall_view.c:221
msgid "ICE not activated"
-msgstr ""
+msgstr "ICE non attivato"
#: ../gtk/incall_view.c:223
msgid "ICE failed"
-msgstr ""
+msgstr "ICE fallito"
#: ../gtk/incall_view.c:225
msgid "ICE in progress"
-msgstr ""
+msgstr "ICE in corso"
#: ../gtk/incall_view.c:227
msgid "Going through one or more NATs"
-msgstr ""
+msgstr "Attraversando uno o più NAT"
#: ../gtk/incall_view.c:229
msgid "Direct"
-msgstr ""
+msgstr "Diretto"
#: ../gtk/incall_view.c:231
msgid "Through a relay server"
-msgstr ""
+msgstr "Attraverso un relay server"
#: ../gtk/incall_view.c:239
msgid "uPnP not activated"
-msgstr ""
+msgstr "uPnP non attivo"
#: ../gtk/incall_view.c:241
msgid "uPnP in progress"
-msgstr ""
+msgstr "uPnP in corso"
#: ../gtk/incall_view.c:243
msgid "uPnp not available"
-msgstr ""
+msgstr "uPnP non disponibile"
#: ../gtk/incall_view.c:245
msgid "uPnP is running"
-msgstr ""
+msgstr "uPnP in esecuzione"
#: ../gtk/incall_view.c:247
msgid "uPnP failed"
-msgstr ""
+msgstr "uPnP ha fallito"
#: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258
msgid "Direct or through server"
-msgstr ""
+msgstr "Diretto o attraverso un server"
#: ../gtk/incall_view.c:267 ../gtk/incall_view.c:279
#, c-format
msgid ""
"download: %f\n"
"upload: %f (kbit/s)"
-msgstr ""
+msgstr "download: %f\nupload: %f (kbit/s)"
#: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274
#, c-format
msgid "%ix%i @ %f fps"
-msgstr ""
+msgstr "%ix%i @ %f fps"
#: ../gtk/incall_view.c:304
#, c-format
msgid "%.3f seconds"
-msgstr ""
+msgstr "%.3f secondi"
#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:235
msgid "Hang up"
-msgstr ""
+msgstr "Riagganciare"
#: ../gtk/incall_view.c:511
msgid "Calling..."
-msgstr ""
+msgstr "Chiamando..."
#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733
msgid "00::00::00"
-msgstr ""
+msgstr "00::00::00"
#: ../gtk/incall_view.c:525
msgid "Incoming call"
-msgstr ""
+msgstr "Chiamata in ingresso"
#: ../gtk/incall_view.c:562
msgid "good"
-msgstr ""
+msgstr "bene"
#: ../gtk/incall_view.c:564
msgid "average"
-msgstr ""
+msgstr "media"
#: ../gtk/incall_view.c:566
msgid "poor"
-msgstr ""
+msgstr "ridotto"
#: ../gtk/incall_view.c:568
msgid "very poor"
-msgstr ""
+msgstr "molto poco"
#: ../gtk/incall_view.c:570
msgid "too bad"
-msgstr ""
+msgstr "troppo brutto"
#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587
msgid "unavailable"
-msgstr ""
+msgstr "non disponibile"
#: ../gtk/incall_view.c:679
msgid "Secured by SRTP"
-msgstr ""
+msgstr "Trasmissione sicura con SRTP"
#: ../gtk/incall_view.c:685
msgid "Secured by DTLS"
-msgstr ""
+msgstr "Trasmissione sicura con DTLS"
#: ../gtk/incall_view.c:691
#, c-format
msgid "Secured by ZRTP - [auth token: %s]"
-msgstr ""
+msgstr "Trasmissione sicura con ZRTP - [auth token: %s]"
#: ../gtk/incall_view.c:697
msgid "Set unverified"
-msgstr ""
+msgstr "Marcato con non verificato"
#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4
msgid "Set verified"
-msgstr ""
+msgstr "Marcato come verificato"
#: ../gtk/incall_view.c:728
msgid "In conference"
-msgstr ""
+msgstr "In conferenza"
#: ../gtk/incall_view.c:728
msgid "In call"
-msgstr ""
+msgstr "Chiamata in corso"
#: ../gtk/incall_view.c:764
msgid "Paused call"
-msgstr ""
+msgstr "Chiamata sospesa"
#: ../gtk/incall_view.c:800
msgid "Call ended."
@@ -735,34 +736,34 @@ msgstr "Chiamata terminata."
#: ../gtk/incall_view.c:831
msgid "Transfer in progress"
-msgstr ""
+msgstr "Trasferimento in corso"
#: ../gtk/incall_view.c:834
msgid "Transfer done."
-msgstr ""
+msgstr "Trasferimento completato."
#: ../gtk/incall_view.c:837
msgid "Transfer failed."
-msgstr ""
+msgstr "Trasferimento fallito."
#: ../gtk/incall_view.c:881
msgid "Resume"
-msgstr ""
+msgstr "Riprendere"
#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9
msgid "Pause"
-msgstr ""
+msgstr "Pausa"
#: ../gtk/incall_view.c:954
#, c-format
msgid ""
"Recording into\n"
"%s %s"
-msgstr ""
+msgstr "Registrare in\n%s %s"
#: ../gtk/incall_view.c:954
msgid "(Paused)"
-msgstr ""
+msgstr "(Sospeso)"
#: ../gtk/loginframe.c:87
#, c-format
@@ -772,114 +773,114 @@ msgstr "Prego inserire le proprie credenziali di accesso per %s"
#: ../gtk/config-fetching.c:57
#, c-format
msgid "fetching from %s"
-msgstr ""
+msgstr "prelevando da %s"
#: ../gtk/config-fetching.c:73
#, c-format
msgid "Downloading of remote configuration from %s failed."
-msgstr ""
+msgstr "Il trasferimento della configurazione remota da %s è fallito."
-#: ../gtk/audio_assistant.c:98
+#: ../gtk/audio_assistant.c:103
msgid "No voice detected"
-msgstr ""
+msgstr "Non è stata riconosciuta nessuna voce"
-#: ../gtk/audio_assistant.c:99
+#: ../gtk/audio_assistant.c:104
msgid "Too low"
-msgstr ""
+msgstr "Troppo basso"
-#: ../gtk/audio_assistant.c:100
+#: ../gtk/audio_assistant.c:105
msgid "Good"
-msgstr ""
+msgstr "Bene"
-#: ../gtk/audio_assistant.c:101
+#: ../gtk/audio_assistant.c:106
msgid "Too loud"
-msgstr ""
+msgstr "Troppo forte"
-#: ../gtk/audio_assistant.c:183
+#: ../gtk/audio_assistant.c:188
msgid "Did you hear three beeps ?"
-msgstr ""
+msgstr "Hai sentito tre segnali ?"
-#: ../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 ""
+msgstr "Le preferenze sui suoni non sono state trovate"
-#: ../gtk/audio_assistant.c:306
+#: ../gtk/audio_assistant.c:313
msgid "Cannot launch system sound control "
-msgstr ""
+msgstr "Non è possibile eseguire il controllo dell'audio di sistema"
-#: ../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 ""
+msgstr "Benvenuto!\nL'assistente ti aiuterà a configurare i settaggi audio di Linphone"
-#: ../gtk/audio_assistant.c:328
+#: ../gtk/audio_assistant.c:335
msgid "Capture device"
-msgstr ""
+msgstr "Dispositivo di acquisizione"
-#: ../gtk/audio_assistant.c:329
+#: ../gtk/audio_assistant.c:336
msgid "Recorded volume"
-msgstr ""
+msgstr "Volume di registrazione"
-#: ../gtk/audio_assistant.c:333
+#: ../gtk/audio_assistant.c:340
msgid "No voice"
-msgstr ""
+msgstr "Nessuna voce"
-#: ../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 ""
+msgstr "Preferenze per l'audio di sistema"
-#: ../gtk/audio_assistant.c:369
+#: ../gtk/audio_assistant.c:376
msgid "Playback device"
-msgstr ""
+msgstr "Dispositivo di riproduzione"
-#: ../gtk/audio_assistant.c:370
+#: ../gtk/audio_assistant.c:377
msgid "Play three beeps"
-msgstr ""
+msgstr "Riproduci tre segnali"
-#: ../gtk/audio_assistant.c:403
+#: ../gtk/audio_assistant.c:410
msgid "Press the record button and say some words"
-msgstr ""
+msgstr "Premere il pulsante registrazione e parlare"
-#: ../gtk/audio_assistant.c:404
+#: ../gtk/audio_assistant.c:411
msgid "Listen to your record voice"
-msgstr ""
+msgstr "Ascoltare la voce registrata"
-#: ../gtk/audio_assistant.c:405
+#: ../gtk/audio_assistant.c:412
msgid "Record"
-msgstr ""
+msgstr "Registra"
-#: ../gtk/audio_assistant.c:406
+#: ../gtk/audio_assistant.c:413
msgid "Play"
-msgstr ""
+msgstr "Riproduci"
-#: ../gtk/audio_assistant.c:433
+#: ../gtk/audio_assistant.c:440
msgid "Let's start Linphone now"
-msgstr ""
+msgstr "Ora avviamo Linphone"
-#: ../gtk/audio_assistant.c:503
+#: ../gtk/audio_assistant.c:510
msgid "Audio Assistant"
-msgstr ""
+msgstr "Assistente 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 ""
+msgstr "Assistente Audio"
-#: ../gtk/audio_assistant.c:518
+#: ../gtk/audio_assistant.c:525
msgid "Mic Gain calibration"
-msgstr ""
+msgstr "Calibrazione del guadagano del microfono"
-#: ../gtk/audio_assistant.c:524
+#: ../gtk/audio_assistant.c:531
msgid "Speaker volume calibration"
-msgstr ""
+msgstr "Calibrazione del volume di riproduzione"
-#: ../gtk/audio_assistant.c:529
+#: ../gtk/audio_assistant.c:536
msgid "Record and Play"
-msgstr ""
+msgstr "Registra e Riproduci"
#: ../gtk/main.ui.h:1
msgid "Callee name"
-msgstr ""
+msgstr "Nome del chiamato"
#: ../gtk/main.ui.h:2
msgid "Send"
@@ -887,23 +888,23 @@ msgstr "Invia"
#: ../gtk/main.ui.h:3
msgid "End conference"
-msgstr ""
+msgstr "Fine della conferenza"
#: ../gtk/main.ui.h:7
msgid "Record this call to an audio file"
-msgstr ""
+msgstr "Registra questa chiamata su un file audio"
#: ../gtk/main.ui.h:8
msgid "Video"
-msgstr ""
+msgstr "Video"
#: ../gtk/main.ui.h:10
msgid "Mute"
-msgstr ""
+msgstr "Silenzia"
#: ../gtk/main.ui.h:11
msgid "Transfer"
-msgstr ""
+msgstr "Trasferimento"
#: ../gtk/main.ui.h:14
msgid "In call"
@@ -915,23 +916,23 @@ msgstr "Durata"
#: ../gtk/main.ui.h:16
msgid "Call quality rating"
-msgstr ""
+msgstr "Giudizio della qualità della chiamata"
#: ../gtk/main.ui.h:17
msgid "All users"
-msgstr ""
+msgstr "Tutti gli utenti"
#: ../gtk/main.ui.h:18
msgid "Online users"
-msgstr ""
+msgstr "Utenti in linea"
#: ../gtk/main.ui.h:19
msgid "ADSL"
-msgstr ""
+msgstr "ADSL"
#: ../gtk/main.ui.h:20
msgid "Fiber Channel"
-msgstr ""
+msgstr "Fibra ottica"
#: ../gtk/main.ui.h:21
msgid "Default"
@@ -939,19 +940,19 @@ msgstr "Default"
#: ../gtk/main.ui.h:22
msgid "Delete"
-msgstr ""
+msgstr "Cancellare"
#: ../gtk/main.ui.h:23
msgid "_Options"
-msgstr ""
+msgstr "_Options"
#: ../gtk/main.ui.h:24
msgid "Set configuration URI"
-msgstr ""
+msgstr "Imposta l' URI di configurazione"
#: ../gtk/main.ui.h:25
msgid "Always start video"
-msgstr ""
+msgstr "Avvia sempre il video"
#: ../gtk/main.ui.h:26
msgid "Enable self-view"
@@ -959,23 +960,23 @@ msgstr "Self-view abilitato"
#: ../gtk/main.ui.h:27
msgid "_Help"
-msgstr ""
+msgstr "_Help"
#: ../gtk/main.ui.h:28
msgid "Show debug window"
-msgstr ""
+msgstr "Mostra la finestra di debug"
#: ../gtk/main.ui.h:29
msgid "_Homepage"
-msgstr ""
+msgstr "_Homepage"
#: ../gtk/main.ui.h:30
msgid "Check _Updates"
-msgstr ""
+msgstr "Check _Updates"
#: ../gtk/main.ui.h:31
msgid "Account assistant"
-msgstr ""
+msgstr "Assistente per l'account"
#: ../gtk/main.ui.h:33
msgid "SIP address or phone number:"
@@ -983,27 +984,27 @@ msgstr "Indirizzo sip o numero."
#: ../gtk/main.ui.h:34
msgid "Initiate a new call"
-msgstr ""
+msgstr "Inizia una nuova chiamata"
#: ../gtk/main.ui.h:35
msgid "Contacts"
-msgstr ""
+msgstr "Contatti"
#: ../gtk/main.ui.h:36
msgid "Search"
-msgstr ""
+msgstr "Ricerca"
#: ../gtk/main.ui.h:37
msgid "Add contacts from directory"
-msgstr ""
+msgstr "Aggiungi contatti dalla directory"
#: ../gtk/main.ui.h:38
msgid "Add contact"
-msgstr ""
+msgstr "Aggiungi un contatto"
#: ../gtk/main.ui.h:39
msgid "Recent calls"
-msgstr ""
+msgstr "Chiamate recenti"
#: ../gtk/main.ui.h:40
msgid "My current identity:"
@@ -1027,7 +1028,7 @@ msgstr "Login Automatico"
#: ../gtk/main.ui.h:45 ../gtk/password.ui.h:3
msgid "UserID"
-msgstr ""
+msgstr "Identificativo utente"
#: ../gtk/main.ui.h:46
msgid "Login information"
@@ -1035,19 +1036,19 @@ msgstr "Credenziali di accesso"
#: ../gtk/main.ui.h:47
msgid "Welcome!"
-msgstr ""
+msgstr "Benvenuto!"
#: ../gtk/about.ui.h:1
msgid "About Linphone"
-msgstr ""
+msgstr "Su Linphone"
#: ../gtk/about.ui.h:2
msgid "(C) Belledonne Communications, 2010\n"
-msgstr ""
+msgstr "(C) Belledonne Communications, 2010\n"
#: ../gtk/about.ui.h:4
msgid "An internet video phone using the standard SIP (rfc3261) protocol."
-msgstr ""
+msgstr "Un videotelefono con protocollo standard SIP (RFC 3261) "
#: ../gtk/about.ui.h:5
msgid ""
@@ -1063,7 +1064,7 @@ msgid ""
"cs: Petr Pisar \n"
"hu: anonymous\n"
"he: Eli Zaretskii \n"
-msgstr ""
+msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nit: Fabrizio Carrai\nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n"
#: ../gtk/contact.ui.h:2
msgid "SIP Address"
@@ -1087,11 +1088,11 @@ msgstr "Linphone debug window"
#: ../gtk/log.ui.h:2
msgid "Scroll to end"
-msgstr ""
+msgstr "Vai in fondo"
#: ../gtk/password.ui.h:1
msgid "Linphone - Authentication required"
-msgstr ""
+msgstr "Linphone - E' richiesta l'autenticazione"
#: ../gtk/password.ui.h:2
msgid "Please enter the domain password"
@@ -1103,11 +1104,11 @@ msgstr "Cronologia"
#: ../gtk/call_logs.ui.h:2
msgid "Clear all"
-msgstr ""
+msgstr "Pulisci tutto"
#: ../gtk/call_logs.ui.h:3
msgid "Call back"
-msgstr ""
+msgstr "Richiamata"
#: ../gtk/sip_account.ui.h:1
msgid "Linphone - Configure a SIP account"
@@ -1119,7 +1120,7 @@ msgstr "Identità SIP"
#: ../gtk/sip_account.ui.h:3
msgid "Looks like sip:@"
-msgstr ""
+msgstr "Simile a sip:@"
#: ../gtk/sip_account.ui.h:4
msgid "sip:"
@@ -1131,7 +1132,7 @@ msgstr "Indirizzo sip proxy:"
#: ../gtk/sip_account.ui.h:6
msgid "Looks like sip:"
-msgstr ""
+msgstr "Simile a sip:"
#: ../gtk/sip_account.ui.h:7
msgid "Registration duration (sec):"
@@ -1139,11 +1140,11 @@ msgstr "Durata registrazione (sec)"
#: ../gtk/sip_account.ui.h:8
msgid "Contact params (optional):"
-msgstr ""
+msgstr "Parametri del contatto (opzionali)"
#: ../gtk/sip_account.ui.h:9
msgid "AVPF regular RTCP interval (sec):"
-msgstr ""
+msgstr "AVPF regular RTCP interval (sec):"
#: ../gtk/sip_account.ui.h:10
msgid "Route (optional):"
@@ -1151,11 +1152,11 @@ msgstr "Rotta (opzionale)"
#: ../gtk/sip_account.ui.h:11
msgid "Transport"
-msgstr ""
+msgstr "Trasporto"
#: ../gtk/sip_account.ui.h:12
msgid "Register"
-msgstr ""
+msgstr "Registro"
#: ../gtk/sip_account.ui.h:13
msgid "Publish presence information"
@@ -1163,7 +1164,7 @@ msgstr "Pubblica stato della presenza"
#: ../gtk/sip_account.ui.h:14
msgid "Enable AVPF"
-msgstr ""
+msgstr "Abilita AVPF"
#: ../gtk/sip_account.ui.h:15
msgid "Configure a SIP account"
@@ -1171,15 +1172,15 @@ msgstr "Configurazione SIP account"
#: ../gtk/parameters.ui.h:1
msgid "anonymous"
-msgstr ""
+msgstr "anonimo"
#: ../gtk/parameters.ui.h:2
msgid "GSSAPI"
-msgstr ""
+msgstr "GSSAPI"
#: ../gtk/parameters.ui.h:3
msgid "SASL"
-msgstr ""
+msgstr "SASL"
#: ../gtk/parameters.ui.h:4
msgid "default soundcard"
@@ -1187,7 +1188,7 @@ msgstr "default scheda audio"
#: ../gtk/parameters.ui.h:5
msgid "a sound card"
-msgstr ""
+msgstr "una scheda audio"
#: ../gtk/parameters.ui.h:6
msgid "default camera"
@@ -1199,11 +1200,11 @@ msgstr "CIF"
#: ../gtk/parameters.ui.h:8
msgid "Audio codecs"
-msgstr ""
+msgstr "Codificatori audio"
#: ../gtk/parameters.ui.h:9
msgid "Video codecs"
-msgstr ""
+msgstr "Codificatori video"
#: ../gtk/parameters.ui.h:10
msgid "C"
@@ -1211,27 +1212,27 @@ msgstr "C"
#: ../gtk/parameters.ui.h:11
msgid "SIP (UDP)"
-msgstr ""
+msgstr "SIP (UDP)"
#: ../gtk/parameters.ui.h:12
msgid "SIP (TCP)"
-msgstr ""
+msgstr "SIP (TCP)"
#: ../gtk/parameters.ui.h:13
msgid "SIP (TLS)"
-msgstr ""
+msgstr "SIP (TLS)"
#: ../gtk/parameters.ui.h:14
msgid "default"
-msgstr ""
+msgstr "default"
#: ../gtk/parameters.ui.h:15
msgid "high-fps"
-msgstr ""
+msgstr "high-fps"
#: ../gtk/parameters.ui.h:16
msgid "custom"
-msgstr ""
+msgstr "custom"
#: ../gtk/parameters.ui.h:17
msgid "Settings"
@@ -1259,7 +1260,7 @@ msgstr "Identità di default"
#: ../gtk/parameters.ui.h:23
msgid "Wizard"
-msgstr ""
+msgstr "Wizard"
#: ../gtk/parameters.ui.h:24
msgid "Add"
@@ -1287,15 +1288,15 @@ msgstr "Privacy"
#: ../gtk/parameters.ui.h:30
msgid "Automatically answer when a call is received"
-msgstr ""
+msgstr "Rispondi automaticamente alla chiamata in arrivo"
#: ../gtk/parameters.ui.h:31
msgid "Delay before answering (ms)"
-msgstr ""
+msgstr "Ritardo prima della risposta (ms)"
#: ../gtk/parameters.ui.h:32
msgid "Auto-answer"
-msgstr ""
+msgstr "Risposta automatica"
#: ../gtk/parameters.ui.h:33
msgid "Manage SIP Accounts"
@@ -1335,23 +1336,23 @@ msgstr "Dispositivo Video:"
#: ../gtk/parameters.ui.h:42
msgid "Preferred video resolution:"
-msgstr ""
+msgstr "Risoluzione video preferita:"
#: ../gtk/parameters.ui.h:43
msgid "Video output method:"
-msgstr ""
+msgstr "Modalità video in uscita:"
#: ../gtk/parameters.ui.h:44
msgid "Show camera preview"
-msgstr ""
+msgstr "Mostra il preview della videocamera"
#: ../gtk/parameters.ui.h:45
msgid "Video preset:"
-msgstr ""
+msgstr "Preconfigurazione del video:"
#: ../gtk/parameters.ui.h:46
msgid "Preferred video framerate:"
-msgstr ""
+msgstr "Frame rate video preferito:"
#: ../gtk/parameters.ui.h:47
msgid "0 stands for \"unlimited\""
@@ -1371,13 +1372,13 @@ msgstr "Velocita massima in Dowload Kbit/sec"
#: ../gtk/parameters.ui.h:51
msgid "Enable adaptive rate control"
-msgstr ""
+msgstr "Abilita il controllo adattivo del rate"
#: ../gtk/parameters.ui.h:52
msgid ""
"Adaptive rate control is a technique to dynamically guess the available "
"bandwidth during a call."
-msgstr ""
+msgstr "Il controllo adattivo del rate è una tecnica per la stima dinamica della banda disponibile durante una chiamata"
#: ../gtk/parameters.ui.h:53
msgid "Bandwidth control"
@@ -1397,7 +1398,7 @@ msgstr "Invia DTMF come SIP info"
#: ../gtk/parameters.ui.h:57
msgid "Allow IPv6"
-msgstr ""
+msgstr "Permetti IPv6"
#: ../gtk/parameters.ui.h:58
msgid "Transport"
@@ -1405,15 +1406,15 @@ msgstr "Transporto"
#: ../gtk/parameters.ui.h:59
msgid "SIP/UDP port"
-msgstr ""
+msgstr "Porta SIP/UDP"
#: ../gtk/parameters.ui.h:61
msgid "Random"
-msgstr ""
+msgstr "Casuale"
#: ../gtk/parameters.ui.h:62
msgid "SIP/TCP port"
-msgstr ""
+msgstr "Porta SIP/TCP"
#: ../gtk/parameters.ui.h:63
msgid "Audio RTP/UDP:"
@@ -1421,7 +1422,7 @@ msgstr "Audio RTP/UDP:"
#: ../gtk/parameters.ui.h:64
msgid "Fixed"
-msgstr ""
+msgstr "Fissa"
#: ../gtk/parameters.ui.h:65
msgid "Video RTP/UDP:"
@@ -1429,23 +1430,23 @@ msgstr "Video RTP/UDP"
#: ../gtk/parameters.ui.h:66
msgid "Media encryption type"
-msgstr ""
+msgstr "Tipo di cifratura"
#: ../gtk/parameters.ui.h:67
msgid "Media encryption is mandatory"
-msgstr ""
+msgstr "La cifratura è obbligatoria"
#: ../gtk/parameters.ui.h:68
msgid "Tunnel"
-msgstr ""
+msgstr "Tunnel"
#: ../gtk/parameters.ui.h:69
msgid "DSCP fields"
-msgstr ""
+msgstr "Campi DSCP"
#: ../gtk/parameters.ui.h:70
msgid "Network protocol and ports"
-msgstr ""
+msgstr "Protocollo di rete e porte"
#: ../gtk/parameters.ui.h:71
msgid "Direct connection to the Internet"
@@ -1453,7 +1454,7 @@ msgstr "Connessione diretta a internet"
#: ../gtk/parameters.ui.h:72
msgid "Behind NAT / Firewall (specify gateway IP )"
-msgstr ""
+msgstr "Dietro ad un NAT / Firewall (specificare IP del gateway)"
#: ../gtk/parameters.ui.h:73
msgid "Behind NAT / Firewall (use STUN to resolve)"
@@ -1461,19 +1462,19 @@ msgstr "Dietro NAT / Firewall (utilizza STUN)"
#: ../gtk/parameters.ui.h:74
msgid "Behind NAT / Firewall (use ICE)"
-msgstr ""
+msgstr "Dietro ad un NAT / Firewall (usa ICE)"
#: ../gtk/parameters.ui.h:75
msgid "Behind NAT / Firewall (use uPnP)"
-msgstr ""
+msgstr "Dietro ad un NAT / Fiewall (usa uPnP)"
#: ../gtk/parameters.ui.h:76
msgid "Public IP address:"
-msgstr "Indirizzo ip pubblico:"
+msgstr "Indirizzo IP pubblico:"
#: ../gtk/parameters.ui.h:77
msgid "Stun server:"
-msgstr "Stun server:"
+msgstr "Server STUN:"
#: ../gtk/parameters.ui.h:78
msgid "NAT and Firewall"
@@ -1493,11 +1494,11 @@ msgstr "Disattivato"
#: ../gtk/parameters.ui.h:82
msgid "Audio codecs"
-msgstr ""
+msgstr "Codificatori audio"
#: ../gtk/parameters.ui.h:83
msgid "Video codecs"
-msgstr ""
+msgstr "Codificatori video"
#: ../gtk/parameters.ui.h:84
msgid "Codecs"
@@ -1509,11 +1510,11 @@ msgstr "Linguaggio"
#: ../gtk/parameters.ui.h:86
msgid "Show advanced settings"
-msgstr ""
+msgstr "Mostra la configurazione avanzata"
#: ../gtk/parameters.ui.h:87
msgid "Level"
-msgstr ""
+msgstr "Livello"
#: ../gtk/parameters.ui.h:88
msgid "User interface"
@@ -1521,19 +1522,19 @@ msgstr "Interfaccia utente"
#: ../gtk/parameters.ui.h:89 ../gtk/ldap.ui.h:2
msgid "Server address:"
-msgstr ""
+msgstr "Indirizzo del server:"
#: ../gtk/parameters.ui.h:90 ../gtk/ldap.ui.h:3
msgid "Authentication method:"
-msgstr ""
+msgstr "Metodo di autenticazione"
#: ../gtk/parameters.ui.h:92
msgid "LDAP Account setup"
-msgstr ""
+msgstr "Configurazione dell' account LDAP"
#: ../gtk/parameters.ui.h:93
msgid "LDAP"
-msgstr ""
+msgstr "LDAP"
#: ../gtk/parameters.ui.h:94
msgid "Done"
@@ -1557,39 +1558,39 @@ msgstr "Prego attendere"
#: ../gtk/dscp_settings.ui.h:1
msgid "DSCP settings"
-msgstr ""
+msgstr "Configurazione DSCP"
#: ../gtk/dscp_settings.ui.h:2
msgid "SIP"
-msgstr ""
+msgstr "SIP"
#: ../gtk/dscp_settings.ui.h:3
msgid "Audio RTP stream"
-msgstr ""
+msgstr "Stream audio RTP"
#: ../gtk/dscp_settings.ui.h:4
msgid "Video RTP stream"
-msgstr ""
+msgstr "Stream video RTP"
#: ../gtk/dscp_settings.ui.h:5
msgid "Set DSCP values (in hexadecimal)"
-msgstr ""
+msgstr "Valore DSCP (in esadecimale)"
#: ../gtk/call_statistics.ui.h:1
msgid "Call statistics"
-msgstr ""
+msgstr "Statistiche della chiamata"
#: ../gtk/call_statistics.ui.h:2
msgid "Audio codec"
-msgstr ""
+msgstr "Codec audio"
#: ../gtk/call_statistics.ui.h:3
msgid "Video codec"
-msgstr ""
+msgstr "Codec video"
#: ../gtk/call_statistics.ui.h:4
msgid "Audio IP bandwidth usage"
-msgstr ""
+msgstr "Banda IP impiegata per l'audio"
#: ../gtk/call_statistics.ui.h:5
msgid "Audio Media connectivity"
@@ -1597,7 +1598,7 @@ msgstr ""
#: ../gtk/call_statistics.ui.h:6
msgid "Video IP bandwidth usage"
-msgstr ""
+msgstr "Banda IP impiegata per il video"
#: ../gtk/call_statistics.ui.h:7
msgid "Video Media connectivity"
@@ -1605,59 +1606,59 @@ msgstr ""
#: ../gtk/call_statistics.ui.h:8
msgid "Round trip time"
-msgstr ""
+msgstr "Tempo di andata/ritorno"
#: ../gtk/call_statistics.ui.h:9
msgid "Video resolution received"
-msgstr ""
+msgstr "Risoluzione video ricevuta"
#: ../gtk/call_statistics.ui.h:10
msgid "Video resolution sent"
-msgstr ""
+msgstr "Risoluzione video trasmessa"
#: ../gtk/call_statistics.ui.h:11
msgid "RTP profile"
-msgstr ""
+msgstr "Profilo RTP"
#: ../gtk/call_statistics.ui.h:12
msgid "Call statistics and information"
-msgstr ""
+msgstr "Statistiche della chiamata e informazioni"
#: ../gtk/tunnel_config.ui.h:1
msgid "Configure VoIP tunnel"
-msgstr ""
+msgstr "Configurare il tunnel VoIP"
#: ../gtk/tunnel_config.ui.h:2
msgid "Host"
-msgstr ""
+msgstr "Host"
#: ../gtk/tunnel_config.ui.h:3
msgid "Port"
-msgstr ""
+msgstr "Porta"
#: ../gtk/tunnel_config.ui.h:6
msgid "Configure tunnel"
-msgstr ""
+msgstr "Configurazione del tunnel"
#: ../gtk/tunnel_config.ui.h:9
msgid "Configure http proxy (optional)"
-msgstr ""
+msgstr "Configurazione del proxy http (opzionale)"
#: ../gtk/ldap.ui.h:1
msgid "LDAP Settings"
-msgstr ""
+msgstr "Configurazione LDAP"
#: ../gtk/ldap.ui.h:6
msgid "Use TLS Connection"
-msgstr ""
+msgstr "Usa connessione TLS"
#: ../gtk/ldap.ui.h:7
msgid "Not yet available"
-msgstr ""
+msgstr "Not ancora disponibile"
#: ../gtk/ldap.ui.h:8
msgid "Connection"
-msgstr ""
+msgstr "Connessione"
#: ../gtk/ldap.ui.h:9
msgid "Bind DN"
@@ -1669,44 +1670,44 @@ msgstr ""
#: ../gtk/ldap.ui.h:11
msgid "Realm"
-msgstr ""
+msgstr "Dominio"
#: ../gtk/ldap.ui.h:12
msgid "SASL"
-msgstr ""
+msgstr "SASL"
#: ../gtk/ldap.ui.h:13
msgid "Base object:"
-msgstr ""
+msgstr "Oggetto di base"
#: ../gtk/ldap.ui.h:15
#, no-c-format
msgid "Filter (%s for name):"
-msgstr ""
+msgstr "Filtro (%s per il nome):"
#: ../gtk/ldap.ui.h:16
msgid "Name Attribute:"
-msgstr ""
+msgstr "Attributo Nome:"
#: ../gtk/ldap.ui.h:17
msgid "SIP address attribute:"
-msgstr ""
+msgstr "Attributo SIP address"
#: ../gtk/ldap.ui.h:18
msgid "Attributes to query:"
-msgstr ""
+msgstr "Attributo da cercare:"
#: ../gtk/ldap.ui.h:19
msgid "Search"
-msgstr ""
+msgstr "Ricerca"
#: ../gtk/ldap.ui.h:20
msgid "Timeout for search:"
-msgstr ""
+msgstr "Tempo limite per la ricerca:"
#: ../gtk/ldap.ui.h:21
msgid "Max results:"
-msgstr ""
+msgstr "Massimo numero di risultati:"
#: ../gtk/ldap.ui.h:22
msgid "Follow Aliases"
@@ -1714,11 +1715,11 @@ msgstr ""
#: ../gtk/ldap.ui.h:23
msgid "Miscellaneous"
-msgstr ""
+msgstr "Varie"
#: ../gtk/ldap.ui.h:24
msgid "ANONYMOUS"
-msgstr ""
+msgstr "ANONYMOUS"
#: ../gtk/ldap.ui.h:25
msgid "SIMPLE"
@@ -1750,62 +1751,62 @@ msgstr ""
msgid "Please wait while fetching configuration from server..."
msgstr ""
-#: ../coreapi/linphonecore.c:1567
+#: ../coreapi/linphonecore.c:1483
msgid "Ready"
msgstr "Pronto"
-#: ../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 "Ricerca numero destinazione..."
-#: ../coreapi/linphonecore.c:2759
+#: ../coreapi/linphonecore.c:2589
msgid "Could not resolve this number."
msgstr "Impossibile risolvere il numero."
#. must be known at that time
-#: ../coreapi/linphonecore.c:3045
+#: ../coreapi/linphonecore.c:2875
msgid "Contacting"
msgstr "In connessione"
-#: ../coreapi/linphonecore.c:3050
+#: ../coreapi/linphonecore.c:2880
msgid "Could not call"
-msgstr ""
+msgstr "Impossibile chiamare"
-#: ../coreapi/linphonecore.c:3201
+#: ../coreapi/linphonecore.c:3031
msgid "Sorry, we have reached the maximum number of simultaneous calls"
-msgstr ""
+msgstr "Spiacenti, è stato raggiunto il massimo numero di chiamate simultanee"
-#: ../coreapi/linphonecore.c:3359
+#: ../coreapi/linphonecore.c:3189
msgid "is contacting you"
-msgstr ""
+msgstr "ti sta contattando"
-#: ../coreapi/linphonecore.c:3360
+#: ../coreapi/linphonecore.c:3190
msgid " and asked autoanswer."
-msgstr ""
+msgstr "e ha richiesto la risposta automatica"
-#: ../coreapi/linphonecore.c:3486
+#: ../coreapi/linphonecore.c:3316
msgid "Modifying call parameters..."
-msgstr ""
+msgstr "Modificando i parametri di chiamata..."
-#: ../coreapi/linphonecore.c:3865
+#: ../coreapi/linphonecore.c:3695
msgid "Connected."
msgstr "Connessione"
-#: ../coreapi/linphonecore.c:3890
+#: ../coreapi/linphonecore.c:3720
msgid "Call aborted"
-msgstr ""
+msgstr "Chiamata annullata"
-#: ../coreapi/linphonecore.c:4087
+#: ../coreapi/linphonecore.c:3917
msgid "Could not pause the call"
-msgstr ""
+msgstr "Impossibile sospendere la chiamata"
-#: ../coreapi/linphonecore.c:4090
+#: ../coreapi/linphonecore.c:3920
msgid "Pausing the current call..."
-msgstr ""
+msgstr "Sospensione della chiamata in corso..."
#: ../coreapi/misc.c:436
msgid "Stun lookup in progress..."
@@ -1865,7 +1866,7 @@ msgstr ""
#: ../coreapi/friend.c:68
msgid "Unknown status"
-msgstr ""
+msgstr "Stato sconosciuto"
#: ../coreapi/proxy.c:328
msgid ""
@@ -1879,7 +1880,7 @@ msgid ""
"It should look like sip:username@proxydomain, such as sip:alice@example.net"
msgstr "L'identità sip utilizza è invalida.\nDovrebbre essere sip:username@proxydomain, esempio: sip:alice@example.net"
-#: ../coreapi/proxy.c:1427
+#: ../coreapi/proxy.c:1420
#, c-format
msgid "Could not login as %s"
msgstr "impossibile login come %s"
@@ -1899,7 +1900,7 @@ msgstr ""
#: ../coreapi/callbacks.c:548
#, c-format
msgid "Call with %s is paused."
-msgstr ""
+msgstr "La chiamata con %s è stata sospesa."
#: ../coreapi/callbacks.c:561
#, c-format
@@ -2003,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."
diff --git a/po/ja.po b/po/ja.po
index 464f34c96..5bf3b38a4 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
msgstr "%s"
-#: ../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."
diff --git a/po/nb_NO.po b/po/nb_NO.po
index e13acf8b7..536cee0ae 100644
--- a/po/nb_NO.po
+++ b/po/nb_NO.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
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."
diff --git a/po/nl.po b/po/nl.po
index 6923d9ce3..5f549477f 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -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 \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 %s\n"
" at realm %s:"
msgstr "Vul uw wachtwoord in voor gebruikersnaam %s\nop realm %s"
-#: ../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 "by %s"
msgstr "door %s"
-#: ../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."
diff --git a/po/pl.po b/po/pl.po
index 1fc8efa06..e55db2c35 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
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."
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 2e0a99014..c5b67d577 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
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."
diff --git a/po/ru.po b/po/ru.po
index e843177b5..8b8d0385e 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -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 \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 \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 %s\n"
" at realm %s:"
msgstr "Пожалуйста, введите пароль для пользователя %s\n для реалм (рилм) %s:"
-#: ../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 "by %s"
msgstr "%s"
-#: ../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."
diff --git a/po/sr.po b/po/sr.po
index d6c72d8fd..adeac6fac 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -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 \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 %s\n"
" at realm %s:"
msgstr "Унесите вашу лозинку за корисничко име %s\n на подручју %s:"
-#: ../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 "by %s"
msgstr "од %s"
-#: ../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."
diff --git a/po/sv.po b/po/sv.po
index 5eb3949b4..0f79d5bdc 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
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."
diff --git a/po/tr.po b/po/tr.po
index 409c145d5..b8e7f91f7 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
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."
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 1021ccb31..b1d4792b6 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
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."
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 80dbb92c0..8902365b7 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -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 \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 %s\n"
" at realm %s:"
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 "by %s"
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."
diff --git a/tester/call_tester.c b/tester/call_tester.c
index e9846df09..62af4d283 100644
--- a/tester/call_tester.c
+++ b/tester/call_tester.c
@@ -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 = {
diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c
index 7b130cba5..d210aef1f 100644
--- a/tester/flexisip_tester.c
+++ b/tester/flexisip_tester.c
@@ -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);
diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c
index 81393651d..d49c890de 100644
--- a/tester/liblinphone_tester.c
+++ b/tester/liblinphone_tester.c
@@ -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;
}
}
diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h
index b5687e002..a86666f4f 100644
--- a/tester/liblinphone_tester.h
+++ b/tester/liblinphone_tester.h
@@ -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);
diff --git a/tester/message_tester.c b/tester/message_tester.c
index a491cbb86..ca623e0b3 100644
--- a/tester/message_tester.c
+++ b/tester/message_tester.c
@@ -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 },
diff --git a/tester/proxy_config_tester.c b/tester/proxy_config_tester.c
index fe8b3cef8..29a169557 100644
--- a/tester/proxy_config_tester.c
+++ b/tester/proxy_config_tester.c
@@ -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 = {
diff --git a/tester/quality_reporting_tester.c b/tester/quality_reporting_tester.c
index dc4e58f9c..038d823ca 100644
--- a/tester/quality_reporting_tester.c
+++ b/tester/quality_reporting_tester.c
@@ -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);
}
diff --git a/tester/register_tester.c b/tester/register_tester.c
index 6d0be9400..c2f883bd9 100644
--- a/tester/register_tester.c
+++ b/tester/register_tester.c
@@ -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);
}
diff --git a/tester/sounds/vrroom.wav b/tester/sounds/vrroom.wav
index 92a73d289..673a3addc 100644
Binary files a/tester/sounds/vrroom.wav and b/tester/sounds/vrroom.wav differ
diff --git a/tester/tester.c b/tester/tester.c
index a42eabf76..b3ffddec0 100644
--- a/tester/tester.c
+++ b/tester/tester.c
@@ -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);
}
}
diff --git a/tester/tunnel_tester.c b/tester/tunnel_tester.c
index 98a28e7c1..425247eb8 100644
--- a/tester/tunnel_tester.c
+++ b/tester/tunnel_tester.c
@@ -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));
}
diff --git a/tester/video_tester.c b/tester/video_tester.c
index 8aa57ca05..2fee24c59 100644
--- a/tester/video_tester.c
+++ b/tester/video_tester.c
@@ -38,13 +38,13 @@ extern void *gdk_quartz_window_get_nsview(GdkWindow *window);
#include
-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;
diff --git a/tools/python/apixml2python.py b/tools/python/apixml2python.py
index 6cb6f556b..04de40a9e 100755
--- a/tools/python/apixml2python.py
+++ b/tools/python/apixml2python.py
@@ -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."),
diff --git a/tools/python/apixml2python/handwritten_declarations.mustache b/tools/python/apixml2python/handwritten_declarations.mustache
index 4a4b2c1ef..3449fa7e6 100644
--- a/tools/python/apixml2python/handwritten_declarations.mustache
+++ b/tools/python/apixml2python/handwritten_declarations.mustache
@@ -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);
diff --git a/tools/python/apixml2python/handwritten_definitions.mustache b/tools/python/apixml2python/handwritten_definitions.mustache
index e9edec0fb..4937b951e 100644
--- a/tools/python/apixml2python/handwritten_definitions.mustache
+++ b/tools/python/apixml2python/handwritten_definitions.mustache
@@ -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 };
diff --git a/tools/python/unittests/test_setup.py b/tools/python/unittests/test_setup.py
index 9fcafa8b8..9dc2e0fae 100644
--- a/tools/python/unittests/test_setup.py
+++ b/tools/python/unittests/test_setup.py
@@ -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"