mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
restructure conversation item classes
This commit is contained in:
@@ -6,7 +6,6 @@ import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v4.app.ActivityOptionsCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -297,7 +296,7 @@ public class ContactListFragment extends BaseEventFragment {
|
||||
Collection<PrivateMessageHeader> headers =
|
||||
messagingManager.getMessageHeaders(id);
|
||||
for (PrivateMessageHeader h : headers) {
|
||||
messages.add(new ConversationMessageItem(h));
|
||||
messages.add(ConversationItem.from(h));
|
||||
}
|
||||
long duration = System.currentTimeMillis() - now;
|
||||
if (LOG.isLoggable(INFO))
|
||||
|
||||
@@ -304,7 +304,8 @@ public class ConversationActivity extends BriarActivity
|
||||
} else {
|
||||
for (PrivateMessageHeader h : headers) {
|
||||
ConversationMessageItem item =
|
||||
new ConversationMessageItem(h);
|
||||
(ConversationMessageItem) ConversationItem
|
||||
.from(h);
|
||||
byte[] body = bodyCache.get(h.getId());
|
||||
if (body == null) loadMessageBody(h);
|
||||
else item.setBody(body);
|
||||
|
||||
@@ -163,10 +163,10 @@ class ConversationAdapter extends RecyclerView.Adapter {
|
||||
|
||||
PrivateMessageHeader header = item.getHeader();
|
||||
|
||||
if (item.getType() == MSG_OUT) {
|
||||
if (item.isSeen()) {
|
||||
if (item instanceof ConversationItem.OutgoingItem) {
|
||||
if (((OutgoingItem) item).isSeen()) {
|
||||
ui.status.setImageResource(R.drawable.message_delivered_white);
|
||||
} else if (item.isSent()) {
|
||||
} else if (((OutgoingItem) item).isSent()) {
|
||||
ui.status.setImageResource(R.drawable.message_sent_white);
|
||||
} else {
|
||||
ui.status.setImageResource(R.drawable.message_stored_white);
|
||||
@@ -204,7 +204,7 @@ class ConversationAdapter extends RecyclerView.Adapter {
|
||||
}
|
||||
|
||||
private void bindIntroduction(IntroductionHolder ui,
|
||||
final ConversationIntroductionInItem item, final int position) {
|
||||
final ConversationIntroductionItem item, final int position) {
|
||||
|
||||
final IntroductionRequest ir = item.getIntroductionRequest();
|
||||
|
||||
|
||||
@@ -3,17 +3,14 @@ package org.briarproject.android.contact;
|
||||
import org.briarproject.api.introduction.IntroductionRequest;
|
||||
import org.briarproject.api.sync.MessageId;
|
||||
|
||||
public class ConversationIntroductionInItem extends ConversationItem implements
|
||||
ConversationItem.IncomingItem {
|
||||
public class ConversationIntroductionInItem extends ConversationIntroductionItem
|
||||
implements ConversationItem.IncomingItem {
|
||||
|
||||
private IntroductionRequest ir;
|
||||
private boolean answered, read;
|
||||
private boolean read;
|
||||
|
||||
public ConversationIntroductionInItem(IntroductionRequest ir) {
|
||||
super(ir.getMessageId(), ir.getTime());
|
||||
super(ir);
|
||||
|
||||
this.ir = ir;
|
||||
this.answered = ir.wasAnswered();
|
||||
this.read = ir.isRead();
|
||||
}
|
||||
|
||||
@@ -22,18 +19,6 @@ public class ConversationIntroductionInItem extends ConversationItem implements
|
||||
return INTRODUCTION_IN;
|
||||
}
|
||||
|
||||
public IntroductionRequest getIntroductionRequest() {
|
||||
return ir;
|
||||
}
|
||||
|
||||
public boolean wasAnswered() {
|
||||
return answered;
|
||||
}
|
||||
|
||||
public void setAnswered(boolean answered) {
|
||||
this.answered = answered;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRead() {
|
||||
return read;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package org.briarproject.android.contact;
|
||||
|
||||
import org.briarproject.api.introduction.IntroductionRequest;
|
||||
|
||||
abstract class ConversationIntroductionItem extends ConversationItem {
|
||||
|
||||
private IntroductionRequest ir;
|
||||
private boolean answered;
|
||||
|
||||
public ConversationIntroductionItem(IntroductionRequest ir) {
|
||||
super(ir.getMessageId(), ir.getTime());
|
||||
|
||||
this.ir = ir;
|
||||
this.answered = ir.wasAnswered();
|
||||
}
|
||||
|
||||
public IntroductionRequest getIntroductionRequest() {
|
||||
return ir;
|
||||
}
|
||||
|
||||
public boolean wasAnswered() {
|
||||
return answered;
|
||||
}
|
||||
|
||||
public void setAnswered(boolean answered) {
|
||||
this.answered = answered;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.briarproject.android.contact;
|
||||
|
||||
import org.briarproject.api.introduction.IntroductionRequest;
|
||||
import org.briarproject.api.sync.MessageId;
|
||||
|
||||
/**
|
||||
* This class is needed and can not be replaced by an ConversationNoticeOutItem,
|
||||
@@ -9,7 +8,7 @@ import org.briarproject.api.sync.MessageId;
|
||||
* to be displayed as a regular private message.
|
||||
*/
|
||||
public class ConversationIntroductionOutItem
|
||||
extends ConversationIntroductionInItem
|
||||
extends ConversationIntroductionItem
|
||||
implements ConversationItem.OutgoingItem {
|
||||
|
||||
private boolean sent, seen;
|
||||
|
||||
@@ -6,11 +6,13 @@ import org.briarproject.R;
|
||||
import org.briarproject.api.introduction.IntroductionMessage;
|
||||
import org.briarproject.api.introduction.IntroductionRequest;
|
||||
import org.briarproject.api.introduction.IntroductionResponse;
|
||||
import org.briarproject.api.messaging.PrivateMessageHeader;
|
||||
import org.briarproject.api.sync.MessageId;
|
||||
|
||||
// This class is not thread-safe
|
||||
public abstract class ConversationItem {
|
||||
|
||||
// this is needed for RecyclerView adapter which requires an int type
|
||||
final static int MSG_IN = 0;
|
||||
final static int MSG_IN_UNREAD = 1;
|
||||
final static int MSG_OUT = 2;
|
||||
@@ -37,6 +39,13 @@ public abstract class ConversationItem {
|
||||
return time;
|
||||
}
|
||||
|
||||
public static ConversationItem from(PrivateMessageHeader h) {
|
||||
if (h.isLocal())
|
||||
return new ConversationMessageOutItem(h);
|
||||
else
|
||||
return new ConversationMessageInItem(h);
|
||||
}
|
||||
|
||||
public static ConversationItem from(IntroductionRequest ir) {
|
||||
if (ir.isLocal()) {
|
||||
return new ConversationIntroductionOutItem(ir);
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package org.briarproject.android.contact;
|
||||
|
||||
import org.briarproject.api.messaging.PrivateMessageHeader;
|
||||
|
||||
// This class is not thread-safe
|
||||
public class ConversationMessageInItem extends ConversationMessageItem
|
||||
implements ConversationItem.IncomingItem {
|
||||
|
||||
private boolean read;
|
||||
|
||||
public ConversationMessageInItem(PrivateMessageHeader header) {
|
||||
super(header);
|
||||
|
||||
read = header.isRead();
|
||||
}
|
||||
|
||||
@Override
|
||||
int getType() {
|
||||
return MSG_IN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRead() {
|
||||
return read;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRead(boolean read) {
|
||||
this.read = read;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,31 +1,18 @@
|
||||
package org.briarproject.android.contact;
|
||||
|
||||
import org.briarproject.api.messaging.PrivateMessageHeader;
|
||||
import org.briarproject.api.sync.MessageId;
|
||||
|
||||
// This class is not thread-safe
|
||||
public class ConversationMessageItem extends ConversationItem implements
|
||||
ConversationItem.OutgoingItem, ConversationItem.IncomingItem {
|
||||
abstract class ConversationMessageItem extends ConversationItem {
|
||||
|
||||
private final PrivateMessageHeader header;
|
||||
private byte[] body;
|
||||
private boolean sent, seen, read;
|
||||
|
||||
public ConversationMessageItem(PrivateMessageHeader header) {
|
||||
super(header.getId(), header.getTimestamp());
|
||||
|
||||
this.header = header;
|
||||
body = null;
|
||||
sent = header.isSent();
|
||||
seen = header.isSeen();
|
||||
read = header.isRead();
|
||||
}
|
||||
|
||||
@Override
|
||||
int getType() {
|
||||
if (getHeader().isLocal()) return MSG_OUT;
|
||||
if (getHeader().isRead()) return MSG_IN;
|
||||
return MSG_IN_UNREAD;
|
||||
}
|
||||
|
||||
PrivateMessageHeader getHeader() {
|
||||
@@ -40,34 +27,4 @@ public class ConversationMessageItem extends ConversationItem implements
|
||||
this.body = body;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSent() {
|
||||
return sent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSent(boolean sent) {
|
||||
this.sent = sent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSeen() {
|
||||
return seen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSeen(boolean seen) {
|
||||
this.seen = seen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRead() {
|
||||
return read;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRead(boolean read) {
|
||||
this.read = read;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package org.briarproject.android.contact;
|
||||
|
||||
import org.briarproject.api.messaging.PrivateMessageHeader;
|
||||
|
||||
// This class is not thread-safe
|
||||
public class ConversationMessageOutItem extends ConversationMessageItem
|
||||
implements ConversationItem.OutgoingItem {
|
||||
|
||||
private boolean sent, seen;
|
||||
|
||||
public ConversationMessageOutItem(PrivateMessageHeader header) {
|
||||
super(header);
|
||||
|
||||
sent = header.isSent();
|
||||
seen = header.isSeen();
|
||||
}
|
||||
|
||||
@Override
|
||||
int getType() {
|
||||
return MSG_OUT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSent() {
|
||||
return sent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSent(boolean sent) {
|
||||
this.sent = sent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSeen() {
|
||||
return seen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSeen(boolean seen) {
|
||||
this.seen = seen;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,19 +6,16 @@ import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.transition.ChangeBounds;
|
||||
import android.transition.Fade;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.briarproject.R;
|
||||
import org.briarproject.android.AndroidComponent;
|
||||
import org.briarproject.android.contact.ContactListAdapter;
|
||||
import org.briarproject.android.contact.ContactListItem;
|
||||
import org.briarproject.android.contact.ConversationItem;
|
||||
import org.briarproject.android.contact.ConversationMessageItem;
|
||||
import org.briarproject.android.fragment.BaseFragment;
|
||||
import org.briarproject.android.util.BriarRecyclerView;
|
||||
import org.briarproject.api.contact.Contact;
|
||||
@@ -218,7 +215,7 @@ public class ContactChooserFragment extends BaseFragment {
|
||||
Collection<PrivateMessageHeader> headers =
|
||||
messagingManager.getMessageHeaders(id);
|
||||
for (PrivateMessageHeader h : headers) {
|
||||
messages.add(new ConversationMessageItem(h));
|
||||
messages.add(ConversationItem.from(h));
|
||||
}
|
||||
long duration = System.currentTimeMillis() - now;
|
||||
if (LOG.isLoggable(INFO))
|
||||
|
||||
Reference in New Issue
Block a user