From d492e8040b49aa2d548043b3e5f95c6036b1652a Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Wed, 7 Nov 2018 03:44:46 +0100 Subject: [PATCH] Add avatar & conversation name to info --- .../talk/controllers/ChatController.java | 2 +- .../ConversationInfoController.java | 73 +++++++++++++++++- .../layout/controller_conversation_info.xml | 75 +++++++++++++++++++ app/src/main/res/layout/conversation_info.xml | 42 ----------- 4 files changed, 148 insertions(+), 44 deletions(-) create mode 100644 app/src/main/res/layout/controller_conversation_info.xml delete mode 100644 app/src/main/res/layout/conversation_info.xml diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java index b31bd067a..c7f0f68c3 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java @@ -970,7 +970,7 @@ public class ChatController extends BaseController implements MessagesListAdapte super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_conversation, menu); - if (!conversationUser.hasSpreedCapabilityWithName("notification-levels")) { + if (conversationUser.hasSpreedCapabilityWithName("mention-flag")) { menu.findItem(R.id.nc_conversation_info).setVisible(true); } else { menu.findItem(R.id.nc_conversation_info).setVisible(false); diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java index 61eeea5ac..c9bd756f4 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java @@ -21,14 +21,22 @@ package com.nextcloud.talk.controllers; import android.os.Bundle; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.model.GlideUrl; +import com.bumptech.glide.load.model.LazyHeaders; +import com.bumptech.glide.load.resource.bitmap.CircleCrop; +import com.bumptech.glide.request.RequestOptions; import com.nextcloud.talk.R; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.ProgressBar; +import android.widget.TextView; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; @@ -38,9 +46,11 @@ import com.nextcloud.talk.models.json.converters.EnumNotificationLevelConverter; import com.nextcloud.talk.models.json.rooms.Conversation; import com.nextcloud.talk.models.json.rooms.RoomOverall; import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.glide.GlideApp; import com.nextcloud.talk.utils.preferencestorage.DatabaseStorageModule; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.yarolegovich.mp.MaterialChoicePreference; +import com.yarolegovich.mp.MaterialPreferenceCategory; import com.yarolegovich.mp.MaterialPreferenceScreen; @@ -74,6 +84,15 @@ public class ConversationInfoController extends BaseController { @BindView(R.id.conversation_info_message_notifications) MaterialChoicePreference messageNotificationLevel; + @BindView(R.id.conversation_info_name) + MaterialPreferenceCategory nameCategoryView; + + @BindView(R.id.avatar_image) + ImageView conversationAvatarImageView; + + @BindView(R.id.display_name_text) + TextView conversationDisplayName; + @Inject NcApi ncApi; @@ -102,7 +121,7 @@ public class ConversationInfoController extends BaseController { @Override protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) { - return inflater.inflate(R.layout.conversation_info, container, false); + return inflater.inflate(R.layout.controller_conversation_info, container, false); } @Override @@ -143,6 +162,9 @@ public class ConversationInfoController extends BaseController { progressBar.setVisibility(View.GONE); materialPreferenceScreen.setVisibility(View.VISIBLE); + nameCategoryView.setVisibility(View.VISIBLE); + conversationDisplayName.setText(conversation.getDisplayName()); + loadConversationAvatar(); if (conversationUser.hasSpreedCapabilityWithName("notification-levels")) { messageNotificationLevel.setEnabled(true); @@ -199,4 +221,53 @@ public class ConversationInfoController extends BaseController { messageNotificationLevel.setValue("mention"); } } + + private void loadConversationAvatar() { + int avatarSize = getResources().getDimensionPixelSize(R.dimen.avatar_size_big); + + switch (conversation.getType()) { + case ROOM_TYPE_ONE_TO_ONE_CALL: + if (!TextUtils.isEmpty(conversation.getName())) { + GlideUrl glideUrl = new GlideUrl(ApiUtils.getUrlForAvatarWithName(conversationUser.getBaseUrl(), + conversation.getName(), R.dimen.avatar_size), new LazyHeaders.Builder() + .setHeader("Accept", "image/*") + .setHeader("User-Agent", ApiUtils.getUserAgent()) + .build()); + + GlideApp.with(NextcloudTalkApplication.getSharedApplication().getApplicationContext()) + .asBitmap() + .diskCacheStrategy(DiskCacheStrategy.NONE) + .load(glideUrl) + .centerInside() + .override(avatarSize, avatarSize) + .apply(RequestOptions.bitmapTransform(new CircleCrop())) + .into(conversationAvatarImageView); + + } + break; + case ROOM_GROUP_CALL: + + GlideApp.with(NextcloudTalkApplication.getSharedApplication().getApplicationContext()) + .asBitmap() + .diskCacheStrategy(DiskCacheStrategy.NONE) + .load(R.drawable.ic_people_group_white_24px) + .centerInside() + .override(avatarSize, avatarSize) + .apply(RequestOptions.bitmapTransform(new CircleCrop())) + .into(conversationAvatarImageView); + break; + case ROOM_PUBLIC_CALL: + GlideApp.with(NextcloudTalkApplication.getSharedApplication().getApplicationContext()) + .asBitmap() + .diskCacheStrategy(DiskCacheStrategy.NONE) + .load(R.drawable.ic_link_white_24px) + .centerInside() + .override(avatarSize, avatarSize) + .apply(RequestOptions.bitmapTransform(new CircleCrop())) + .into(conversationAvatarImageView); + break; + default: + + } + } } diff --git a/app/src/main/res/layout/controller_conversation_info.xml b/app/src/main/res/layout/controller_conversation_info.xml new file mode 100644 index 000000000..7829eb87c --- /dev/null +++ b/app/src/main/res/layout/controller_conversation_info.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/conversation_info.xml b/app/src/main/res/layout/conversation_info.xml deleted file mode 100644 index 06bc8a501..000000000 --- a/app/src/main/res/layout/conversation_info.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - \ No newline at end of file