From 23d1ee5e41b400a10d8171ebcb43e5409ac71749 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 20 Apr 2020 13:41:50 +0200 Subject: [PATCH] =?UTF-8?q?render=20contact=E2=80=99s=20avatar=20during=20?= =?UTF-8?q?incoming=20call?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/ContactDetailsActivity.java | 10 +++++----- .../conversations/ui/RtpSessionActivity.java | 19 +++++++++++++++++++ src/main/res/layout/activity_rtp_session.xml | 19 ++++++++++++++++++- src/main/res/values-h360dp/dimens.xml | 1 + src/main/res/values-h500dp/dimens.xml | 1 + src/main/res/values-land/bools.xml | 4 ++++ src/main/res/values/bools.xml | 4 ++++ src/main/res/values/dimens.xml | 1 + 8 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 src/main/res/values-land/bools.xml create mode 100644 src/main/res/values/bools.xml diff --git a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java index 086ab7101..2d4129bbd 100644 --- a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java @@ -207,7 +207,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp }); binding.addContactButton.setOnClickListener(v -> showAddToRosterDialog(contact)); - mMediaAdapter = new MediaAdapter(this,R.dimen.media_size); + mMediaAdapter = new MediaAdapter(this, R.dimen.media_size); this.binding.media.setAdapter(mMediaAdapter); GridManager.setupLayoutManager(this, this.binding.media, R.dimen.media_size); } @@ -416,7 +416,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp account = contact.getAccount().getJid().asBareJid().toString(); } binding.detailsAccount.setText(getString(R.string.using_account, account)); - AvatarWorkerTask.loadAvatar(contact,binding.detailsContactBadge,R.dimen.avatar_on_details_screen_size); + AvatarWorkerTask.loadAvatar(contact, binding.detailsContactBadge, R.dimen.avatar_on_details_screen_size); binding.detailsContactBadge.setOnClickListener(this.onBadgeClick); binding.detailsContactKeys.removeAllViews(); @@ -426,7 +426,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp if (Config.supportOmemo() && axolotlService != null) { final Collection sessions = axolotlService.findSessionsForContact(contact); boolean anyActive = false; - for(XmppAxolotlSession session : sessions) { + for (XmppAxolotlSession session : sessions) { anyActive = session.getTrust().isActive(); if (anyActive) { break; @@ -434,7 +434,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp } boolean skippedInactive = false; boolean showsInactive = false; - for (final XmppAxolotlSession session :sessions) { + for (final XmppAxolotlSession session : sessions) { final FingerprintStatus trust = session.getTrust(); hasKeys |= !trust.isCompromised(); if (!trust.isActive() && anyActive) { @@ -537,7 +537,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp public void onMediaLoaded(List attachments) { runOnUiThread(() -> { int limit = GridManager.getCurrentColumnCount(binding.media); - mMediaAdapter.setAttachments(attachments.subList(0, Math.min(limit,attachments.size()))); + mMediaAdapter.setAttachments(attachments.subList(0, Math.min(limit, attachments.size()))); binding.mediaWrapper.setVisibility(attachments.size() > 0 ? View.VISIBLE : View.GONE); }); diff --git a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java index f0cae4e53..f85ad3f4e 100644 --- a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java @@ -37,6 +37,7 @@ import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.services.AppRTCAudioManager; import eu.siacs.conversations.services.XmppConnectionService; +import eu.siacs.conversations.ui.util.AvatarWorkerTask; import eu.siacs.conversations.utils.PermissionUtils; import eu.siacs.conversations.xmpp.jingle.AbstractJingleConnection; import eu.siacs.conversations.xmpp.jingle.JingleRtpConnection; @@ -248,6 +249,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe RtpEndUserState state = RtpEndUserState.valueOf(extraLastState); updateButtonConfiguration(state); updateStateDisplay(state); + updateProfilePicture(state); } binding.with.setText(account.getRoster().getContact(with).getDisplayName()); } @@ -361,6 +363,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe updateVideoViews(currentState); updateStateDisplay(currentState); updateButtonConfiguration(currentState); + updateProfilePicture(currentState); } private void reInitializeActivityWithRunningRapSession(final Account account, Jid with, String sessionId) { @@ -427,6 +430,20 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe } } + private void updateProfilePicture(final RtpEndUserState state) { + if (state == RtpEndUserState.INCOMING_CALL || state == RtpEndUserState.ACCEPTING_CALL) { + final boolean show = getResources().getBoolean(R.bool.show_avatar_incoming_call); + if (show) { + binding.contactPhoto.setVisibility(View.VISIBLE); + AvatarWorkerTask.loadAvatar(getWith(), binding.contactPhoto, R.dimen.publish_avatar_size); + } else { + binding.contactPhoto.setVisibility(View.GONE); + } + } else { + binding.contactPhoto.setVisibility(View.GONE); + } + } + private Set getMedia() { return requireRtpConnection().getMedia(); } @@ -720,6 +737,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe updateStateDisplay(state); updateButtonConfiguration(state); updateVideoViews(state); + updateProfilePicture(state); }); } else { Log.d(Config.LOGTAG, "received update for other rtp session"); @@ -762,6 +780,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe runOnUiThread(() -> { updateStateDisplay(state); updateButtonConfiguration(state); + updateProfilePicture(state); }); resetIntent(account, with, state, actionToMedia(currentIntent.getAction())); } diff --git a/src/main/res/layout/activity_rtp_session.xml b/src/main/res/layout/activity_rtp_session.xml index 391adba1d..47bfa95ca 100644 --- a/src/main/res/layout/activity_rtp_session.xml +++ b/src/main/res/layout/activity_rtp_session.xml @@ -62,6 +62,22 @@ + + + + + + 16dp 128dp + 64dp diff --git a/src/main/res/values-h500dp/dimens.xml b/src/main/res/values-h500dp/dimens.xml index a153bff54..40e920fd0 100644 --- a/src/main/res/values-h500dp/dimens.xml +++ b/src/main/res/values-h500dp/dimens.xml @@ -1,4 +1,5 @@ 24dp 192dp + 96dp diff --git a/src/main/res/values-land/bools.xml b/src/main/res/values-land/bools.xml new file mode 100644 index 000000000..1aa953fcc --- /dev/null +++ b/src/main/res/values-land/bools.xml @@ -0,0 +1,4 @@ + + + false + diff --git a/src/main/res/values/bools.xml b/src/main/res/values/bools.xml new file mode 100644 index 000000000..0799afb3f --- /dev/null +++ b/src/main/res/values/bools.xml @@ -0,0 +1,4 @@ + + + true + \ No newline at end of file diff --git a/src/main/res/values/dimens.xml b/src/main/res/values/dimens.xml index ae22105c8..215f11a14 100644 --- a/src/main/res/values/dimens.xml +++ b/src/main/res/values/dimens.xml @@ -19,6 +19,7 @@ 8dp 96dp + 48dp 32dp 48dp 56dp