mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
168 lines
5.6 KiB
Java
168 lines
5.6 KiB
Java
package org.thoughtcrime.securesms;
|
|
|
|
import android.content.Context;
|
|
import android.text.TextUtils;
|
|
import android.util.AttributeSet;
|
|
import android.view.View;
|
|
import android.widget.ImageView;
|
|
import android.widget.RelativeLayout;
|
|
import android.widget.TextView;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
|
|
import com.b44t.messenger.DcChat;
|
|
import com.b44t.messenger.DcContact;
|
|
import com.b44t.messenger.DcContext;
|
|
|
|
import org.thoughtcrime.securesms.components.AvatarView;
|
|
import org.thoughtcrime.securesms.connect.DcHelper;
|
|
import org.thoughtcrime.securesms.mms.GlideRequests;
|
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
|
import org.thoughtcrime.securesms.util.ViewUtil;
|
|
|
|
public class ConversationTitleView extends RelativeLayout {
|
|
|
|
@SuppressWarnings("unused")
|
|
private static final String TAG = ConversationTitleView.class.getSimpleName();
|
|
|
|
private View content;
|
|
private ImageView back;
|
|
private AvatarView avatar;
|
|
private TextView title;
|
|
private TextView subtitle;
|
|
private ImageView ephemeralIcon;
|
|
|
|
public ConversationTitleView(Context context) {
|
|
this(context, null);
|
|
}
|
|
|
|
public ConversationTitleView(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onFinishInflate() {
|
|
super.onFinishInflate();
|
|
|
|
this.back = ViewUtil.findById(this, R.id.up_button);
|
|
this.content = ViewUtil.findById(this, R.id.content);
|
|
this.title = ViewUtil.findById(this, R.id.title);
|
|
this.subtitle = ViewUtil.findById(this, R.id.subtitle);
|
|
this.avatar = ViewUtil.findById(this, R.id.avatar);
|
|
this.ephemeralIcon = ViewUtil.findById(this, R.id.ephemeral_icon);
|
|
|
|
ViewUtil.setTextViewGravityStart(this.title, getContext());
|
|
ViewUtil.setTextViewGravityStart(this.subtitle, getContext());
|
|
}
|
|
|
|
public void setTitle(@NonNull GlideRequests glideRequests, @NonNull DcChat dcChat) {
|
|
setTitle(glideRequests, dcChat, false);
|
|
}
|
|
|
|
public void setTitle(@NonNull GlideRequests glideRequests, @NonNull DcChat dcChat, boolean profileView) {
|
|
final int chatId = dcChat.getId();
|
|
final Context context = getContext();
|
|
final DcContext dcContext = DcHelper.getContext(context);
|
|
|
|
// set title and subtitle texts
|
|
title.setText(dcChat.getName());
|
|
String subtitleStr = null;
|
|
|
|
// set icons etc.
|
|
int imgLeft = 0;
|
|
int imgRight = 0;
|
|
|
|
if (dcChat.isMuted()) {
|
|
imgLeft = R.drawable.ic_volume_off_white_18dp;
|
|
}
|
|
if (dcChat.isProtected()) {
|
|
imgRight = R.drawable.ic_verified;
|
|
}
|
|
|
|
boolean isOnline = false;
|
|
int[] chatContacts = dcContext.getChatContacts(chatId);
|
|
if (dcChat.isMailingList()) {
|
|
subtitleStr = dcChat.getMailinglistAddr();
|
|
if (!profileView) {
|
|
if (TextUtils.isEmpty(subtitleStr)) {
|
|
subtitleStr = context.getString(R.string.channel);
|
|
} else {
|
|
subtitleStr = context.getString(R.string.super_group);
|
|
}
|
|
}
|
|
} else if (dcChat.isBroadcast()) {
|
|
if (!profileView) {
|
|
subtitleStr = context.getResources().getQuantityString(R.plurals.n_recipients, chatContacts.length, chatContacts.length);
|
|
}
|
|
} else if( dcChat.isMultiUser() ) {
|
|
if (!profileView) {
|
|
subtitleStr = context.getResources().getQuantityString(R.plurals.n_members, chatContacts.length, chatContacts.length);
|
|
}
|
|
} else if( chatContacts.length>=1 ) {
|
|
if( dcChat.isSelfTalk() ) {
|
|
subtitleStr = context.getString(R.string.chat_self_talk_subtitle);
|
|
}
|
|
else if( dcChat.isDeviceTalk() ) {
|
|
subtitleStr = context.getString(R.string.device_talk_subtitle);
|
|
}
|
|
else {
|
|
DcContact dcContact = dcContext.getContact(chatContacts[0]);
|
|
subtitleStr = dcContact.getAddr();
|
|
if (dcContact.isVerified()) {
|
|
imgRight = R.drawable.ic_verified;
|
|
}
|
|
isOnline = dcContact.wasSeenRecently();
|
|
}
|
|
}
|
|
|
|
subtitle.setText(subtitleStr);
|
|
|
|
avatar.setAvatar(glideRequests, new Recipient(getContext(), dcChat), false);
|
|
avatar.setSeenRecently(isOnline);
|
|
title.setCompoundDrawablesWithIntrinsicBounds(imgLeft, 0, imgRight, 0);
|
|
if (!TextUtils.isEmpty(subtitleStr)) {
|
|
subtitle.setText(subtitleStr);
|
|
subtitle.setVisibility(View.VISIBLE);
|
|
} else {
|
|
subtitle.setVisibility(View.GONE);
|
|
}
|
|
boolean isEphemeral = dcContext.getChatEphemeralTimer(chatId) != 0;
|
|
ephemeralIcon.setVisibility(isEphemeral? View.VISIBLE : View.GONE);
|
|
}
|
|
|
|
public void setTitle(@NonNull GlideRequests glideRequests, @NonNull DcContact contact) {
|
|
avatar.setAvatar(glideRequests, new Recipient(getContext(), contact), false);
|
|
avatar.setSeenRecently(contact.wasSeenRecently());
|
|
title.setText(contact.getDisplayName());
|
|
title.setCompoundDrawablesWithIntrinsicBounds(0, 0, contact.isVerified()? R.drawable.ic_verified : 0, 0);
|
|
subtitle.setText(contact.getAddr());
|
|
subtitle.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
public void setSeenRecently(boolean seenRecently) {
|
|
avatar.setSeenRecently(seenRecently);
|
|
}
|
|
|
|
public void hideAvatar() {
|
|
avatar.setVisibility(View.GONE);
|
|
}
|
|
|
|
@Override
|
|
public void setOnClickListener(@Nullable OnClickListener listener) {
|
|
this.content.setOnClickListener(listener);
|
|
this.avatar.setAvatarClickListener(listener);
|
|
}
|
|
|
|
@Override
|
|
public void setOnLongClickListener(@Nullable OnLongClickListener listener) {
|
|
this.content.setOnLongClickListener(listener);
|
|
this.avatar.setAvatarLongClickListener(listener);
|
|
}
|
|
|
|
public void setOnBackClickedListener(@Nullable OnClickListener listener) {
|
|
this.back.setOnClickListener(listener);
|
|
}
|
|
}
|