diff --git a/app/src/main/java/org/linphone/chat/DeviceGroupViewHolder.java b/app/src/main/java/org/linphone/chat/DeviceGroupViewHolder.java index 99924dc34..bc72f4004 100644 --- a/app/src/main/java/org/linphone/chat/DeviceGroupViewHolder.java +++ b/app/src/main/java/org/linphone/chat/DeviceGroupViewHolder.java @@ -28,12 +28,13 @@ import org.linphone.R; class DeviceGroupViewHolder { public final RelativeLayout avatarLayout; public final TextView participantName, sipUri; - public final ImageView groupExpander; + public final ImageView groupExpander, securityLevel; public DeviceGroupViewHolder(View v) { avatarLayout = v.findViewById(R.id.avatar_layout); participantName = v.findViewById(R.id.name); sipUri = v.findViewById(R.id.sipUri); groupExpander = v.findViewById(R.id.dropdown); + securityLevel = v.findViewById(R.id.device_security_level); } } diff --git a/app/src/main/java/org/linphone/chat/DevicesAdapter.java b/app/src/main/java/org/linphone/chat/DevicesAdapter.java index 85f9c5999..ef9ade278 100644 --- a/app/src/main/java/org/linphone/chat/DevicesAdapter.java +++ b/app/src/main/java/org/linphone/chat/DevicesAdapter.java @@ -33,6 +33,7 @@ import org.linphone.core.Address; import org.linphone.core.ChatRoomSecurityLevel; import org.linphone.core.Participant; import org.linphone.core.ParticipantDevice; +import org.linphone.core.tools.Log; import org.linphone.utils.LinphoneUtils; import org.linphone.views.ContactAvatar; @@ -127,8 +128,31 @@ class DevicesAdapter extends BaseExpandableListAdapter { holder.sipUri.setVisibility(View.GONE); } - holder.groupExpander.setImageResource( - isExpanded ? R.drawable.chevron_list_open : R.drawable.chevron_list_close); + if (getChildrenCount(groupPosition) == 1) { + holder.securityLevel.setVisibility(View.VISIBLE); + holder.groupExpander.setVisibility(View.GONE); + + ParticipantDevice device = (ParticipantDevice) getChild(groupPosition, 0); + ChatRoomSecurityLevel level = device.getSecurityLevel(); + switch (level) { + case Safe: + holder.securityLevel.setImageResource(R.drawable.security_2_indicator); + break; + case Encrypted: + holder.securityLevel.setImageResource(R.drawable.security_1_indicator); + break; + case ClearText: + case Unsafe: + default: + holder.securityLevel.setImageResource(R.drawable.security_alert_indicator); + break; + } + } else { + holder.securityLevel.setVisibility(View.GONE); + holder.groupExpander.setVisibility(View.VISIBLE); + holder.groupExpander.setImageResource( + isExpanded ? R.drawable.chevron_list_open : R.drawable.chevron_list_close); + } } return view; diff --git a/app/src/main/java/org/linphone/chat/DevicesFragment.java b/app/src/main/java/org/linphone/chat/DevicesFragment.java index efc4a4008..d48950b2f 100644 --- a/app/src/main/java/org/linphone/chat/DevicesFragment.java +++ b/app/src/main/java/org/linphone/chat/DevicesFragment.java @@ -103,6 +103,13 @@ public class DevicesFragment extends Fragment { (ParticipantDevice) mAdapter.getGroup(groupPosition); CallManager.getInstance().inviteAddress(device.getAddress(), true); return true; + } else { + if (mAdapter.getChildrenCount(groupPosition) == 1) { + ParticipantDevice device = + (ParticipantDevice) mAdapter.getChild(groupPosition, 0); + CallManager.getInstance().inviteAddress(device.getAddress(), true); + return true; + } } return false; } diff --git a/app/src/main/res/layout/chat_device_group.xml b/app/src/main/res/layout/chat_device_group.xml index e8bd8bd5b..d09a61b00 100644 --- a/app/src/main/res/layout/chat_device_group.xml +++ b/app/src/main/res/layout/chat_device_group.xml @@ -53,6 +53,15 @@ + +