From 50dd5520b3a9fcf22ee881fbb03f08cc95d26be0 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Thu, 14 Sep 2017 11:43:22 +0200 Subject: [PATCH] Update Linphone + searchContactAdapter --- src/android/org/linphone/AboutFragment.java | 16 +++++----- .../linphone/SearchContactsListAdapter.java | 31 ++++++++++--------- submodules/linphone | 2 +- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/android/org/linphone/AboutFragment.java b/src/android/org/linphone/AboutFragment.java index 09114cc97..086e7730b 100644 --- a/src/android/org/linphone/AboutFragment.java +++ b/src/android/org/linphone/AboutFragment.java @@ -74,12 +74,12 @@ public class AboutFragment extends Fragment implements OnClickListener { resetLogButton = view.findViewById(R.id.reset_log); resetLogButton.setOnClickListener(this); resetLogButton.setVisibility(LinphonePreferences.instance().isDebugEnabled() ? View.VISIBLE : View.GONE); - + mListener = new LinphoneCoreListenerBase() { @Override public void uploadProgressIndication(LinphoneCore lc, int offset, int total) { } - + @Override public void uploadStateChanged(LinphoneCore lc, LogCollectionUploadState state, String info) { if (state == LogCollectionUploadState.LogCollectionUploadStateInProgress) { @@ -96,13 +96,13 @@ public class AboutFragment extends Fragment implements OnClickListener { return view; } - + private void displayUploadLogsInProgress() { if (uploadInProgress) { return; } uploadInProgress = true; - + progress = ProgressDialog.show(LinphoneActivity.instance(), null, null); Drawable d = new ColorDrawable(ContextCompat.getColor(getActivity(), R.color.colorE)); d.setAlpha(200); @@ -134,7 +134,7 @@ public class AboutFragment extends Fragment implements OnClickListener { if (lc != null) { lc.removeListener(mListener); } - + super.onPause(); } @@ -144,11 +144,11 @@ public class AboutFragment extends Fragment implements OnClickListener { if (lc != null) { lc.addListener(mListener); } - + if (LinphoneActivity.isInstanciated()) { LinphoneActivity.instance().selectMenu(FragmentsAvailable.ABOUT); } - + super.onResume(); } @@ -169,7 +169,7 @@ public class AboutFragment extends Fragment implements OnClickListener { } } } - + @Override public void onDestroy() { super.onDestroy(); diff --git a/src/android/org/linphone/SearchContactsListAdapter.java b/src/android/org/linphone/SearchContactsListAdapter.java index ea6639139..2612ce471 100644 --- a/src/android/org/linphone/SearchContactsListAdapter.java +++ b/src/android/org/linphone/SearchContactsListAdapter.java @@ -28,6 +28,8 @@ import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; +import org.linphone.core.LinphoneAddress; + import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -58,6 +60,7 @@ public class SearchContactsListAdapter extends BaseAdapter { private ProgressBar progressBar; private boolean mOnlySipContact = false; private View.OnClickListener listener; + private int oldSize; public List getContacts() { return contacts; @@ -76,6 +79,7 @@ public class SearchContactsListAdapter extends BaseAdapter { progressBar = pB; setContactsSelectedList(null); setContactsList(contactsList); + oldSize = 0; } public void setContactsList(List contactsList) { @@ -99,18 +103,16 @@ public class SearchContactsListAdapter extends BaseAdapter { public List getContactsList() { List list = new ArrayList(); if(ContactsManager.getInstance().hasContacts()) { - for (LinphoneContact con : (mOnlySipContact) - ? ContactsManager.getInstance().getSIPContacts() : ContactsManager.getInstance().getContacts()) { - for (LinphoneNumberOrAddress noa : con.getNumbersOrAddresses()) { - String value = noa.getValue(); - // Fix for sip:username compatibility issue - if (value.startsWith("sip:") && !value.contains("@")) { - value = value.substring(4); - value = LinphoneUtils.getFullAddressFromUsername(value); - } - ContactAddress ca = new ContactAddress(con, value, con.isInLinphoneFriendList()); - list.add(ca); + for (LinphoneAddress addr : LinphoneManager.getLc().findContactsByChar("", mOnlySipContact)) { + LinphoneContact cont = ContactsManager.getInstance().findContactFromAddress(addr); + if (cont == null) { + cont = new LinphoneContact(); + cont.setFullName(addr.getUserName()); } + // TODO Rechercher si un contact est associé à cette sip uri + // TODO Rechercher si un displayname est associé à cette sip uri + ContactAddress ca = new ContactAddress(cont , addr.asString(), cont.isLinphoneFriend()); + list.add(ca); } } @@ -143,12 +145,13 @@ public class SearchContactsListAdapter extends BaseAdapter { if (search == null || search.length() == 0) { contacts = getContactsList(); resultContactsSearch.setAdapter(this); + oldSize = 0; return; } List result = new ArrayList(); if(search != null) { - for (ContactAddress c : getContacts()) { + for (ContactAddress c : (search.length() < oldSize) ? getContactsList() : getContacts()) { String address = c.getAddress(); if (address.startsWith("sip:")) address = address.substring(4); if (c.getContact().getFullName() != null @@ -158,8 +161,8 @@ public class SearchContactsListAdapter extends BaseAdapter { } } } - - setContactsList(result); + oldSize = search.length(); + contacts = result; resultContactsSearch.setAdapter(this); this.notifyDataSetChanged(); } diff --git a/submodules/linphone b/submodules/linphone index e095830bb..91dad233b 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit e095830bb6a6dda714f2ca9889888e2132659f91 +Subproject commit 91dad233b55c66d9968771fd613812d0539097a9