diff --git a/src/android/org/linphone/contacts/ContactsListFragment.java b/src/android/org/linphone/contacts/ContactsListFragment.java index 160da2097..dc9a9f6ba 100644 --- a/src/android/org/linphone/contacts/ContactsListFragment.java +++ b/src/android/org/linphone/contacts/ContactsListFragment.java @@ -128,7 +128,16 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene newContact.setEnabled(LinphoneManager.getLc().getCallsNb() == 0); allContacts.setEnabled(onlyDisplayLinphoneContacts); linphoneContacts.setEnabled(!allContacts.isEnabled()); - contactsFetchInProgress.setVisibility(View.VISIBLE); + + if (!ContactsManager.getInstance().contactsFetchedOnce()) { + contactsFetchInProgress.setVisibility(View.VISIBLE); + } else { + if (!onlyDisplayLinphoneContacts && ContactsManager.getInstance().getContacts().size() == 0) { + noContact.setVisibility(View.VISIBLE); + } else if (onlyDisplayLinphoneContacts && ContactsManager.getInstance().getSIPContacts().size() == 0) { + noSipContact.setVisibility(View.VISIBLE); + } + } clearSearchField = view.findViewById(R.id.clearSearchField); clearSearchField.setOnClickListener(new View.OnClickListener() { @@ -165,9 +174,6 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene dividerItemDecoration.setDrawable(getActivity().getResources().getDrawable(R.drawable.divider)); contactsList.addItemDecoration(dividerItemDecoration); - contactsFetchInProgress = view.findViewById(R.id.contactsFetchInProgress); - contactsFetchInProgress.setVisibility(View.VISIBLE); - return view; } @@ -249,9 +255,12 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene mContactAdapter.notifyDataSetChanged(); - if (mContactAdapter.getItemCount() > 0) { - contactsFetchInProgress.setVisibility(View.GONE); + if (!onlyDisplayLinphoneContacts && mContactAdapter.getItemCount() == 0) { + noContact.setVisibility(View.VISIBLE); + } else if (onlyDisplayLinphoneContacts && mContactAdapter.getItemCount() == 0) { + noSipContact.setVisibility(View.VISIBLE); } + ContactsManager.getInstance().setLinphoneContactsPrefered(onlyDisplayLinphoneContacts); } @@ -316,10 +325,6 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene sipAddressToAdd = null; } - if (searchField != null && searchField.getText().toString().length() > 0) { - if (contactsFetchInProgress != null) contactsFetchInProgress.setVisibility(View.GONE); - } - if (LinphoneActivity.isInstanciated()) { LinphoneActivity.instance().selectMenu(FragmentsAvailable.CONTACTS_LIST); LinphoneActivity.instance().hideTabBar(false); diff --git a/src/android/org/linphone/contacts/ContactsManager.java b/src/android/org/linphone/contacts/ContactsManager.java index 59f7a7b78..cb7996c4e 100644 --- a/src/android/org/linphone/contacts/ContactsManager.java +++ b/src/android/org/linphone/contacts/ContactsManager.java @@ -78,6 +78,7 @@ public class ContactsManager extends ContentObserver implements FriendListListen private Activity mActivity; private HashMap mAndroidContactsCache; private Bitmap defaultAvatar; + private boolean mContactsFetchedOnce = false; private static ArrayList contactsUpdatedListeners; @@ -117,7 +118,7 @@ public class ContactsManager extends ContentObserver implements FriendListListen } public boolean contactsFetchedOnce() { - return mContacts.size() > 0; + return mContactsFetchedOnce; } public Bitmap getDefaultAvatarBitmap() { @@ -425,6 +426,8 @@ public class ContactsManager extends ContentObserver implements FriendListListen @Override public void onLoadFinished(@NonNull Loader loader, Cursor c) { + mContactsFetchedOnce = true; + Date contactsTime = new Date(); List contacts = new ArrayList<>(); List sipContacts = new ArrayList<>();