From eeb4b52d1e8b12c0b1096775be41774dc6bd61b6 Mon Sep 17 00:00:00 2001
From: Sylvain Berfini <sylvain.berfini@belledonne-communications.com>
Date: Fri, 16 Nov 2012 14:20:59 +0100
Subject: [PATCH] JNI glue for linphone_core_set_primary_contact

---
 coreapi/linphonecore_jni.cc                      | 16 ++++++++++++++++
 java/common/org/linphone/core/LinphoneCore.java  |  5 +++++
 .../impl/org/linphone/core/LinphoneCoreImpl.java |  5 +++++
 3 files changed, 26 insertions(+)

diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc
index c3893e4962..55041b17a8 100644
--- a/coreapi/linphonecore_jni.cc
+++ b/coreapi/linphonecore_jni.cc
@@ -542,6 +542,22 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_delete(JNIEnv*  env
 	delete lcData;
 }
 
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setPrimaryContact(JNIEnv* env, jobject  thiz, jlong lc, jstring jdisplayname, jstring jusername) {
+	const char* displayname = env->GetStringUTFChars(jdisplayname, NULL);
+	const char* username = env->GetStringUTFChars(jusername, NULL);
+
+	LinphoneAddress *parsed = linphone_core_get_primary_contact_parsed((LinphoneCore*)lc);
+    if (parsed != NULL) {
+        linphone_address_set_display_name(parsed, displayname);
+        linphone_address_set_username(parsed, username);
+        char *contact = linphone_address_as_string(parsed);
+		linphone_core_set_primary_contact((LinphoneCore*)lc, contact);
+	}
+
+	env->ReleaseStringUTFChars(jdisplayname, displayname);
+	env->ReleaseStringUTFChars(jusername, username);
+}
+
 extern "C" void Java_org_linphone_core_LinphoneCoreImpl_clearProxyConfigs(JNIEnv* env, jobject thiz,jlong lc) {
 	linphone_core_clear_proxy_config((LinphoneCore*)lc);
 }
diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java
index fb49d3cb16..450091843f 100644
--- a/java/common/org/linphone/core/LinphoneCore.java
+++ b/java/common/org/linphone/core/LinphoneCore.java
@@ -851,4 +851,9 @@ public interface LinphoneCore {
 	void setInCallTimeout(int timeout);
 	
 	void setMicrophoneGain(float gain);
+	
+	/**
+	 * Set username and display name to use if no LinphoneProxyConfig configured
+	 */
+	void setPrimaryContact(String displayName, String username);
 }
diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java
index 320939da05..5e6864559f 100644
--- a/java/impl/org/linphone/core/LinphoneCoreImpl.java
+++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java
@@ -116,6 +116,7 @@ class LinphoneCoreImpl implements LinphoneCore {
 	private native void setVideoPortRange(long nativePtr, int minPort, int maxPort);
 	private native void setIncomingTimeout(long nativePtr, int timeout);
 	private native void setInCallTimeout(long nativePtr, int timeout);
+	private native void setPrimaryContact(long nativePtr, String displayName, String username);
 	
 	LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object  userdata) throws IOException {
 		mListener=listener;
@@ -793,4 +794,8 @@ class LinphoneCoreImpl implements LinphoneCore {
 	public void setMicrophoneGain(float gain) {
 		setMicrophoneGain(nativePtr, gain);
 	}
+	
+	public void setPrimaryContact(String displayName, String username) {
+		setPrimaryContact(nativePtr, displayName, username);
+	}
 }
-- 
GitLab