Log calls to conversations

// FREEBIE
This commit is contained in:
Moxie Marlinspike
2015-09-21 10:54:23 -07:00
parent 36b7f767b6
commit 26979b1c62
21 changed files with 189 additions and 67 deletions

View File

@@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.util.DateUtils;
import org.thoughtcrime.securesms.util.GroupUtil;
import org.thoughtcrime.securesms.util.Util;
@@ -26,8 +27,10 @@ public class ConversationUpdateItem extends LinearLayout
private ImageView icon;
private TextView body;
private TextView date;
private Recipient sender;
private MessageRecord messageRecord;
private Locale locale;
public ConversationUpdateItem(Context context) {
super(context);
@@ -43,6 +46,7 @@ public class ConversationUpdateItem extends LinearLayout
this.icon = (ImageView)findViewById(R.id.conversation_update_icon);
this.body = (TextView)findViewById(R.id.conversation_update_body);
this.date = (TextView)findViewById(R.id.conversation_update_date);
setOnClickListener(this);
}
@@ -54,28 +58,45 @@ public class ConversationUpdateItem extends LinearLayout
@NonNull Set<MessageRecord> batchSelected,
boolean groupThread, boolean pushDestination)
{
bind(messageRecord);
bind(messageRecord, locale);
}
private void bind(@NonNull MessageRecord messageRecord) {
private void bind(@NonNull MessageRecord messageRecord, @NonNull Locale locale) {
this.messageRecord = messageRecord;
this.sender = messageRecord.getIndividualRecipient();
this.locale = locale;
this.sender.addListener(this);
if (messageRecord.isGroupAction()) {
icon.setImageDrawable(getContext().getResources().getDrawable(R.drawable.ic_group_grey600_24dp));
if (messageRecord.isGroupAction()) setGroupRecord(messageRecord);
else if (messageRecord.isCallLog()) setCallRecord(messageRecord);
else throw new AssertionError("Neither group no log.");
}
if (messageRecord.isGroupQuit() && messageRecord.isOutgoing()) {
body.setText(R.string.MessageRecord_left_group);
} else if (messageRecord.isGroupQuit()) {
body.setText(getContext().getString(R.string.ConversationItem_group_action_left, sender.toShortString()));
} else {
GroupUtil.GroupDescription description = GroupUtil.getDescription(getContext(), messageRecord.getBody().getBody());
description.addListener(this);
body.setText(description.toString());
}
private void setCallRecord(MessageRecord messageRecord) {
if (messageRecord.isIncomingCall()) icon.setImageResource(R.drawable.ic_call_received_grey600_24dp);
else if (messageRecord.isOutgoingCall()) icon.setImageResource(R.drawable.ic_call_made_grey600_24dp);
else icon.setImageResource(R.drawable.ic_call_missed_grey600_24dp);
body.setText(messageRecord.getDisplayBody());
date.setText(DateUtils.getExtendedRelativeTimeSpanString(getContext(), locale, messageRecord.getDateReceived()));
date.setVisibility(View.VISIBLE);
}
private void setGroupRecord(MessageRecord messageRecord) {
icon.setImageResource(R.drawable.ic_group_grey600_24dp);
if (messageRecord.isGroupQuit() && messageRecord.isOutgoing()) {
body.setText(R.string.MessageRecord_left_group);
} else if (messageRecord.isGroupQuit()) {
body.setText(getContext().getString(R.string.ConversationItem_group_action_left, sender.toShortString()));
} else {
GroupUtil.GroupDescription description = GroupUtil.getDescription(getContext(), messageRecord.getBody().getBody());
description.addListener(this);
body.setText(description.toString());
}
date.setVisibility(View.GONE);
}
@Override
@@ -88,7 +109,7 @@ public class ConversationUpdateItem extends LinearLayout
Util.runOnMain(new Runnable() {
@Override
public void run() {
bind(messageRecord);
bind(messageRecord, locale);
}
});
}