@@ -533,15 +533,17 @@ public class RtpSessionActivity extends XmppActivity
final String extraLastState = intent.getStringExtra(EXTRA_LAST_REPORTED_STATE);
final RtpEndUserState state =
extraLastState == null ? null : RtpEndUserState.valueOf(extraLastState);
+ final var contact = account.getRoster().getContact(with);
if (state != null) {
Log.d(Config.LOGTAG, "restored last state from intent extra");
updateButtonConfiguration(state);
updateVerifiedShield(false);
updateStateDisplay(state);
updateIncomingCallScreen(state);
+ updateSupportWarning(state, contact);
invalidateOptionsMenu();
}
- setWith(account.getRoster().getContact(with), state);
+ setWith(state, contact);
if (xmppConnectionService
.getJingleConnectionManager()
.fireJingleRtpConnectionStateUpdates()) {
@@ -564,10 +566,10 @@ public class RtpSessionActivity extends XmppActivity
}
private void setWidth(final RtpEndUserState state) {
- setWith(getWith(), state);
+ setWith(state, getWith());
}
- private void setWith(final Contact contact, final RtpEndUserState state) {
+ private void setWith(final RtpEndUserState state, final Contact contact) {
binding.with.setText(contact.getDisplayName());
if (Arrays.asList(RtpEndUserState.INCOMING_CALL, RtpEndUserState.ACCEPTING_CALL)
.contains(state)) {
@@ -822,7 +824,9 @@ public class RtpSessionActivity extends XmppActivity
updateCallDuration();
updateVerifiedShield(false);
invalidateOptionsMenu();
- setWith(account.getRoster().getContact(with), state);
+ final var contact = account.getRoster().getContact(with);
+ setWith(state, contact);
+ updateSupportWarning(state, contact);
}
private void reInitializeActivityWithRunningRtpSession(
@@ -912,7 +916,7 @@ public class RtpSessionActivity extends XmppActivity
private void updateIncomingCallScreen(final RtpEndUserState state, final Contact contact) {
if (state == RtpEndUserState.INCOMING_CALL || state == RtpEndUserState.ACCEPTING_CALL) {
- final boolean show = getResources().getBoolean(R.bool.show_avatar_incoming_call);
+ final boolean show = getResources().getBoolean(R.bool.is_portrait_mode);
if (show) {
binding.contactPhoto.setVisibility(View.VISIBLE);
if (contact == null) {
@@ -937,6 +941,18 @@ public class RtpSessionActivity extends XmppActivity
}
}
+ private void updateSupportWarning(final RtpEndUserState state, final Contact contact) {
+ if (state == RtpEndUserState.CONNECTIVITY_ERROR
+ && getResources().getBoolean(R.bool.is_portrait_mode)) {
+ binding.supportWarning.setVisibility(
+ RtpCapability.check(contact) == RtpCapability.Capability.NONE
+ ? View.VISIBLE
+ : View.GONE);
+ } else {
+ binding.supportWarning.setVisibility(View.GONE);
+ }
+ }
+
private Set<Media> getMedia() {
return requireRtpConnection().getMedia();
}
@@ -1530,6 +1546,7 @@ public class RtpSessionActivity extends XmppActivity
updateButtonConfiguration(state, media, contentAddition);
updateVideoViews(state);
updateIncomingCallScreen(state, contact);
+ updateSupportWarning(state, contact);
invalidateOptionsMenu();
});
if (END_CARD.contains(state)) {
@@ -0,0 +1,5 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="48dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="48dp">
+
+ <path android:fillColor="@android:color/white" android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z"/>
+
+</vector>
@@ -78,6 +78,41 @@
android:layout_above="@+id/button_row"
android:layout_below="@id/app_bar_layout">
+ <com.google.android.material.card.MaterialCardView
+ android:id="@+id/support_warning"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:layout_marginHorizontal="24dp"
+ android:layout_marginTop="@dimen/rtp_session_duration_top_margin"
+ android:visibility="gone"
+ app:cardBackgroundColor="?colorErrorContainer">
+
+ <RelativeLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="12dp">
+
+ <ImageView
+ android:id="@+id/no_support_av_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:src="@drawable/ic_warning_48dp"
+ app:tint="?colorOnErrorContainer" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:layout_marginStart="16dp"
+ android:layout_toEndOf="@+id/no_support_av_icon"
+ android:text="@string/clients_may_not_support_av"
+ android:textAppearance="?textAppearanceBodyLarge"
+ android:textColor="?colorOnErrorContainer" />
+ </RelativeLayout>
+ </com.google.android.material.card.MaterialCardView>
+
<TextView
android:id="@+id/duration"
android:layout_width="wrap_content"
@@ -1087,4 +1087,5 @@
<string name="add_reaction_title">Add reaction</string>
<string name="more_reactions">More reactions</string>
<string name="could_not_modify_call">Could not modify call</string>
+ <string name="clients_may_not_support_av">Your contactβs XMPP client might not support audio/video calls.</string>
</resources>