From ccff156889f05055a38ce1fd70edb45e276b0bb5 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 15 Jul 2016 15:47:27 +0200 Subject: [PATCH] Only display username but save SIP addresses with sip: prefix and the domain from default proxy config --- src/org/linphone/ContactDetailsFragment.java | 3 +++ src/org/linphone/ContactEditorFragment.java | 21 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/org/linphone/ContactDetailsFragment.java b/src/org/linphone/ContactDetailsFragment.java index 1c2c8d11c..b77fa72e9 100644 --- a/src/org/linphone/ContactDetailsFragment.java +++ b/src/org/linphone/ContactDetailsFragment.java @@ -129,6 +129,9 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener if (displayednumberOrAddress.startsWith("sip:")) { displayednumberOrAddress = displayednumberOrAddress.replace("sip:", ""); } + if (displayednumberOrAddress.contains("@")) { + displayednumberOrAddress = displayednumberOrAddress.split("@")[0]; + } TextView label = (TextView) v.findViewById(R.id.address_label); if (noa.isSIPAddress()) { diff --git a/src/org/linphone/ContactEditorFragment.java b/src/org/linphone/ContactEditorFragment.java index f8c523770..01865a037 100644 --- a/src/org/linphone/ContactEditorFragment.java +++ b/src/org/linphone/ContactEditorFragment.java @@ -25,6 +25,8 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import org.linphone.core.LinphoneCore; +import org.linphone.core.LinphoneProxyConfig; import org.linphone.mediastream.Log; import org.linphone.mediastream.Version; @@ -124,6 +126,10 @@ public class ContactEditorFragment extends Fragment { ok.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); + LinphoneProxyConfig lpc = lc != null ? lc.getDefaultProxyConfig() : null; + String defaultDomain = lpc != null ? lpc.getDomain() : null; + if (isNewContact) { boolean areAllFielsEmpty = true; for (LinphoneNumberOrAddress nounoa : numbersAndAddresses) { @@ -142,8 +148,16 @@ public class ContactEditorFragment extends Fragment { if (photoToAdd != null) { contact.setPhoto(photoToAdd); } - for (LinphoneNumberOrAddress numberOrAddress : numbersAndAddresses) { - contact.addOrUpdateNumberOrAddress(numberOrAddress); + for (LinphoneNumberOrAddress noa : numbersAndAddresses) { + if (noa.isSIPAddress() && noa.getValue() != null) { + if (!noa.getValue().contains("@") && defaultDomain != null) { + noa.setValue(noa.getValue() + "@" + defaultDomain); + } + if (!noa.getValue().startsWith("sip:")) { + noa.setValue("sip:" + noa.getValue()); + } + } + contact.addOrUpdateNumberOrAddress(noa); } contact.save(); getFragmentManager().popBackStackImmediate(); @@ -472,6 +486,9 @@ public class ContactEditorFragment extends Fragment { firstSipAddressIndex = controls.getChildCount(); } numberOrAddress = numberOrAddress.replace("sip:", ""); + if (numberOrAddress.contains("@")) { + numberOrAddress = numberOrAddress.split("@")[0]; + } } if ((getResources().getBoolean(R.bool.hide_phone_numbers_in_editor) && !isSIP) || (getResources().getBoolean(R.bool.hide_sip_addresses_in_editor) && isSIP)) { if (forceAddNumber)