Get presence information when security level not found

This commit is contained in:
Erwan Croze 2018-08-30 11:23:46 +02:00
parent bf65595d96
commit 11b656d602
10 changed files with 120 additions and 38 deletions

View file

@ -49,6 +49,8 @@ import org.linphone.core.CallParams;
import org.linphone.core.ChatRoomSecurityLevel;
import org.linphone.core.Core;
import org.linphone.core.CoreListenerStub;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.core.ProxyConfig;
import org.linphone.mediastream.Log;
import org.linphone.ui.LinphoneSliders.LinphoneSliderTriggered;
@ -252,7 +254,17 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
} else if (securityLevel == ChatRoomSecurityLevel.Encrypted) {
contactPicture.setImageResource(R.drawable.avatar_big_secure1);
} else {
contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
if (!ContactsManager.getInstance().isContactPresenceDisabled() && contact.getFriend() != null) {
PresenceModel presenceModel = contact.getFriend().getPresenceModel();
if (presenceModel != null) {
contactPicture.setImageResource(R.drawable.avatar_medium_secure1);
} else {
contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
else {
contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
} else {
name.setText(LinphoneUtils.getAddressDisplayName(address));

View file

@ -36,6 +36,8 @@ import org.linphone.core.Call.State;
import org.linphone.core.ChatRoomSecurityLevel;
import org.linphone.core.Core;
import org.linphone.core.CoreListenerStub;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.core.ProxyConfig;
import org.linphone.core.Reason;
import org.linphone.mediastream.Log;
@ -194,7 +196,6 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
if (contact != null) {
LinphoneUtils.setImagePictureFromUri(this, contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
name.setText(contact.getFullName());
ProxyConfig prx = LinphoneManager.getLc().getDefaultProxyConfig();
Address ourUri = (prx != null) ? prx.getIdentityAddress() : null;
ChatRoomSecurityLevel securityLevel = getSecurityLevelForSipUri(LinphoneManager.getLc(), ourUri, contact.getFriend().getAddress());
@ -205,7 +206,16 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC
} else if (securityLevel == ChatRoomSecurityLevel.Encrypted) {
contactPicture.setImageResource(R.drawable.avatar_big_secure1);
} else {
contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
if (!ContactsManager.getInstance().isContactPresenceDisabled() && contact.getFriend() != null) {
PresenceModel presenceModel = contact.getFriend().getPresenceModel();
if (presenceModel != null) {
contactPicture.setImageResource(R.drawable.avatar_medium_secure1);
} else {
contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
} else {
contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
} else {
name.setText(LinphoneUtils.getAddressDisplayName(address));

View file

@ -45,6 +45,8 @@ import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.ChatRoomListenerStub;
import org.linphone.core.ChatRoomSecurityLevel;
import org.linphone.core.EventLog;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.ui.ListSelectionAdapter;
import org.linphone.ui.ListSelectionHelper;
@ -260,7 +262,16 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
} else if (level == ChatRoomSecurityLevel.Encrypted) {
holder.contactPicture.setImageResource(R.drawable.avatar_small_secure1);
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_small_unregistered);
if (!ContactsManager.getInstance().isContactPresenceDisabled() && contact != null && contact.getFriend() != null) {
PresenceModel presenceModel = contact.getFriend().getPresenceModel();
if (presenceModel != null) {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_secure1);
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
}
} else {

View file

@ -75,6 +75,8 @@ import org.linphone.core.Factory;
import org.linphone.core.LimeState;
import org.linphone.core.Participant;
import org.linphone.contacts.ContactsUpdatedListener;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.core.Reason;
import org.linphone.fragments.FragmentsAvailable;
import org.linphone.mediastream.Log;
@ -542,7 +544,17 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
} else if (level == ChatRoomSecurityLevel.Safe) {
avatarTop.setImageResource(R.drawable.avatar_small_secure2);
} else {
avatarTop.setImageResource(R.drawable.avatar_small_unsecure);
LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(mChatRoom.getParticipants()[0].getAddress());
if (!ContactsManager.getInstance().isContactPresenceDisabled() && c != null && c.getFriend() != null) {
PresenceModel presenceModel = c.getFriend().getPresenceModel();
if (presenceModel != null) {
avatarTop.setImageResource(R.drawable.avatar_medium_secure1);
} else {
avatarTop.setImageResource(R.drawable.avatar_medium_unregistered);
}
} else {
avatarTop.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
} else {
mCallButton.setVisibility(View.GONE);

View file

@ -32,11 +32,14 @@ import org.linphone.LinphoneUtils;
import org.linphone.R;
import org.linphone.activities.LinphoneActivity;
import org.linphone.contacts.ContactAddress;
import org.linphone.contacts.ContactsManager;
import org.linphone.contacts.LinphoneContact;
import org.linphone.core.Address;
import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomSecurityLevel;
import org.linphone.core.Participant;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.core.ProxyConfig;
import java.util.ArrayList;
@ -109,7 +112,16 @@ public class GroupInfoAdapter extends BaseAdapter {
} else if (securityLevel == ChatRoomSecurityLevel.Encrypted) {
avatar.setImageResource(R.drawable.avatar_big_secure1);
} else {
avatar.setImageResource(R.drawable.avatar_medium_unregistered);
if (!ContactsManager.getInstance().isContactPresenceDisabled() && c != null && c.getFriend() != null) {
PresenceModel presenceModel = c.getFriend().getPresenceModel();
if (presenceModel != null) {
avatar.setImageResource(R.drawable.avatar_medium_secure1);
} else {
avatar.setImageResource(R.drawable.avatar_medium_unregistered);
}
} else {
avatar.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
delete.setOnClickListener(new View.OnClickListener() {

View file

@ -20,7 +20,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package org.linphone.chat;
import android.app.Fragment;
import android.media.Image;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Spanned;
@ -47,8 +46,9 @@ import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomSecurityLevel;
import org.linphone.core.Core;
import org.linphone.core.ParticipantImdnState;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.core.ProxyConfig;
import org.linphone.fragments.FragmentsAvailable;
import static org.linphone.LinphoneUtils.getSecurityLevelForSipUri;
@ -161,7 +161,7 @@ public class ImdnFragment extends Fragment {
refreshInfo();
}
private void setPictureForContact(ImageView img, Address sipUri) {
private void setPictureForContact(ImageView img, Address sipUri, LinphoneContact contact) {
ProxyConfig prx = LinphoneManager.getLc().getDefaultProxyConfig();
Address ourUri = (prx != null) ? prx.getIdentityAddress() : null;
ChatRoomSecurityLevel securityLevel = getSecurityLevelForSipUri(LinphoneManager.getLc(), ourUri, sipUri);
@ -172,7 +172,16 @@ public class ImdnFragment extends Fragment {
} else if (securityLevel == ChatRoomSecurityLevel.Encrypted) {
img.setImageResource(R.drawable.avatar_big_secure1);
} else {
img.setImageResource(R.drawable.avatar_medium_unregistered);
if (!ContactsManager.getInstance().isContactPresenceDisabled() && contact != null && contact.getFriend() != null) {
PresenceModel presenceModel = contact.getFriend().getPresenceModel();
if (presenceModel != null) {
img.setImageResource(R.drawable.avatar_medium_secure1);
} else {
img.setImageResource(R.drawable.avatar_medium_unregistered);
}
} else {
img.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
}
@ -236,7 +245,7 @@ public class ImdnFragment extends Fragment {
} else {
((ImageView)v.findViewById(R.id.contact_picture)).setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
}*/
setPictureForContact(((ImageView)v.findViewById(R.id.contact_picture)), address);
setPictureForContact(((ImageView)v.findViewById(R.id.contact_picture)), address, participantContact);
mRead.addView(v);
first = false;
@ -260,7 +269,7 @@ public class ImdnFragment extends Fragment {
} else {
((ImageView)v.findViewById(R.id.contact_picture)).setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
}*/
setPictureForContact(((ImageView)v.findViewById(R.id.contact_picture)), address);
setPictureForContact(((ImageView)v.findViewById(R.id.contact_picture)), address, participantContact);
mDelivered.addView(v);
first = false;
@ -284,7 +293,7 @@ public class ImdnFragment extends Fragment {
} else {
((ImageView)v.findViewById(R.id.contact_picture)).setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
}*/
setPictureForContact(((ImageView)v.findViewById(R.id.contact_picture)), address);
setPictureForContact(((ImageView)v.findViewById(R.id.contact_picture)), address, participantContact);
mSent.addView(v);
first = false;
@ -307,7 +316,7 @@ public class ImdnFragment extends Fragment {
} else {
((ImageView)v.findViewById(R.id.contact_picture)).setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
}*/
setPictureForContact(((ImageView)v.findViewById(R.id.contact_picture)), address);
setPictureForContact(((ImageView)v.findViewById(R.id.contact_picture)), address, participantContact);
mUndelivered.addView(v);
first = false;

View file

@ -48,6 +48,8 @@ import android.widget.TextView;
import org.linphone.core.Address;
import org.linphone.core.ChatRoomSecurityLevel;
import org.linphone.core.FriendList;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.core.ProxyConfig;
import org.linphone.fragments.FragmentsAvailable;
import org.linphone.LinphoneManager;
@ -624,34 +626,26 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O
holder.delete.setVisibility(View.INVISIBLE);
}
/*Friend[] friends = LinphoneManager.getLc().getFriendsLists();
if (!ContactsManager.getInstance().isContactPresenceDisabled() && friends != null) {
holder.friendStatus.setVisibility(View.VISIBLE);
PresenceActivityType presenceActivity = friends[0].getPresenceModel().getActivity().getType();
if (presenceActivity == PresenceActivityType.Online) {
holder.friendStatus.setImageResource(R.drawable.led_connected);
} else if (presenceActivity == PresenceActivityType.Busy) {
holder.friendStatus.setImageResource(R.drawable.led_error);
} else if (presenceActivity == PresenceActivityType.Away) {
holder.friendStatus.setImageResource(R.drawable.led_inprogress);
} else if (presenceActivity == PresenceActivityType.Offline) {
holder.friendStatus.setImageResource(R.drawable.led_disconnected);
} else {
holder.friendStatus.setImageResource(R.drawable.call_quality_indicator_0);
}
}*/
ProxyConfig prx = LinphoneManager.getLc().getDefaultProxyConfig();
Address ourUri = (prx != null) ? prx.getIdentityAddress() : null;
ChatRoomSecurityLevel securityLevel = getSecurityLevelForSipUri(LinphoneManager.getLc(), ourUri, contact.getFriend().getAddress());
if (securityLevel == ChatRoomSecurityLevel.Safe) {
holder.contactPicture.setImageResource(R.drawable.avatar_big_secure2);
holder.contactPicture.setImageResource(R.drawable.avatar_medium_secure2);
} else if (securityLevel == ChatRoomSecurityLevel.Unsafe) {
holder.contactPicture.setImageResource(R.drawable.avatar_big_unsecure);
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unsecure);
} else if (securityLevel == ChatRoomSecurityLevel.Encrypted) {
holder.contactPicture.setImageResource(R.drawable.avatar_big_secure1);
holder.contactPicture.setImageResource(R.drawable.avatar_medium_secure1);
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
if (!ContactsManager.getInstance().isContactPresenceDisabled() && contact != null && contact.getFriend() != null) {
PresenceModel presenceModel = contact.getFriend().getPresenceModel();
if (presenceModel != null) {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_secure1);
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
return view;

View file

@ -64,7 +64,7 @@ public class ContactsManager extends ContentObserver {
private List<LinphoneContact> contacts, sipContacts;
private MagicSearch magicSearch;
private boolean preferLinphoneContacts = false, isContactPresenceDisabled = true;
private boolean preferLinphoneContacts = false, isContactPresenceDisabled = false;
private ContentResolver contentResolver;
private Context context;
private HashMap<String, LinphoneContact> androidContactsCache;

View file

@ -35,6 +35,8 @@ import org.linphone.activities.LinphoneActivity;
import org.linphone.core.Address;
import org.linphone.core.ChatRoomSecurityLevel;
import org.linphone.core.Factory;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.core.ProxyConfig;
import org.linphone.core.SearchResult;
@ -280,7 +282,16 @@ public class SearchContactsListAdapter extends BaseAdapter {
} else if (securityLevel == ChatRoomSecurityLevel.Encrypted) {
holder.avatar.setImageResource(R.drawable.avatar_big_secure1);
} else {
holder.avatar.setImageResource(R.drawable.avatar_medium_unregistered);
if (!ContactsManager.getInstance().isContactPresenceDisabled() && c != null && c.getFriend() != null) {
PresenceModel presenceModel = c.getFriend().getPresenceModel();
if (presenceModel != null) {
holder.avatar.setImageResource(R.drawable.avatar_medium_secure1);
} else {
holder.avatar.setImageResource(R.drawable.avatar_medium_unregistered);
}
} else {
holder.avatar.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
view.setTag(R.id.contact_search_name, address != null ? address : a);
if (listener != null)

View file

@ -37,6 +37,8 @@ import org.linphone.core.Address;
import org.linphone.core.CallLog;
import org.linphone.core.Call.Status;
import org.linphone.core.ChatRoomSecurityLevel;
import org.linphone.core.PresenceActivity;
import org.linphone.core.PresenceModel;
import org.linphone.core.ProxyConfig;
import android.annotation.SuppressLint;
@ -503,7 +505,16 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
} else if (securityLevel == ChatRoomSecurityLevel.Encrypted) {
holder.contactPicture.setImageResource(R.drawable.avatar_big_secure1);
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
if (!ContactsManager.getInstance().isContactPresenceDisabled() && c != null && c.getFriend() != null) {
PresenceModel presenceModel = c.getFriend().getPresenceModel();
if (presenceModel != null) {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_secure1);
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
} else {
holder.contactPicture.setImageResource(R.drawable.avatar_medium_unregistered);
}
}
displayName = (c != null) ? c.getFullName() : null;