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 @@
+
+