mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
Always show forums posts expanded in conversation view. Bug #32.
This commit is contained in:
@@ -151,35 +151,21 @@ OnClickListener, OnItemClickListener {
|
||||
list.setVisibility(VISIBLE);
|
||||
loading.setVisibility(GONE);
|
||||
adapter.clear();
|
||||
for(MessageHeader h : headers) adapter.add(new GroupItem(h));
|
||||
for(MessageHeader h : headers) {
|
||||
GroupItem item = new GroupItem(h);
|
||||
byte[] body = bodyCache.get(h.getId());
|
||||
if(body == null) loadMessageBody(h);
|
||||
else item.setBody(body);
|
||||
adapter.add(item);
|
||||
}
|
||||
adapter.sort(GroupItemComparator.INSTANCE);
|
||||
adapter.notifyDataSetChanged();
|
||||
expandMessages();
|
||||
// Scroll to the bottom
|
||||
list.setSelection(adapter.getCount() - 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void expandMessages() {
|
||||
// Expand unread messages and the last three messages
|
||||
int count = adapter.getCount();
|
||||
if(count == 0) return;
|
||||
for(int i = 0; i < count; i++) {
|
||||
GroupItem item = adapter.getItem(i);
|
||||
MessageHeader h = item.getHeader();
|
||||
if(h.isRead() && i < count - 3) {
|
||||
item.setExpanded(false);
|
||||
} else {
|
||||
item.setExpanded(true);
|
||||
item.setExpanded(true);
|
||||
byte[] body = bodyCache.get(h.getId());
|
||||
if(body == null) loadMessageBody(h);
|
||||
else item.setBody(body);
|
||||
}
|
||||
}
|
||||
// Scroll to the bottom
|
||||
list.setSelection(count - 1);
|
||||
}
|
||||
|
||||
private void loadMessageBody(final MessageHeader h) {
|
||||
dbUiExecutor.execute(new Runnable() {
|
||||
public void run() {
|
||||
@@ -215,10 +201,9 @@ OnClickListener, OnItemClickListener {
|
||||
GroupItem item = adapter.getItem(i);
|
||||
if(item.getHeader().getId().equals(m)) {
|
||||
item.setBody(body);
|
||||
if(item.isExpanded()) {
|
||||
adapter.notifyDataSetChanged();
|
||||
list.setSelection(count - 1);
|
||||
}
|
||||
adapter.notifyDataSetChanged();
|
||||
// Scroll to the bottom
|
||||
list.setSelection(count - 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,13 +43,17 @@ class GroupAdapter extends ArrayAdapter<GroupItem> {
|
||||
Context ctx = getContext();
|
||||
Resources res = ctx.getResources();
|
||||
|
||||
LinearLayout headerLayout = new LinearLayout(ctx);
|
||||
headerLayout.setOrientation(HORIZONTAL);
|
||||
headerLayout.setGravity(CENTER_VERTICAL);
|
||||
LinearLayout layout = new LinearLayout(ctx);
|
||||
layout.setOrientation(VERTICAL);
|
||||
layout.setGravity(CENTER_HORIZONTAL);
|
||||
int background;
|
||||
if(header.isRead()) background = res.getColor(R.color.read_background);
|
||||
else background = res.getColor(R.color.unread_background);
|
||||
headerLayout.setBackgroundColor(background);
|
||||
layout.setBackgroundColor(background);
|
||||
|
||||
LinearLayout headerLayout = new LinearLayout(ctx);
|
||||
headerLayout.setOrientation(HORIZONTAL);
|
||||
headerLayout.setGravity(CENTER_VERTICAL);
|
||||
|
||||
AuthorView authorView = new AuthorView(ctx);
|
||||
authorView.setLayoutParams(WRAP_WRAP_1);
|
||||
@@ -64,28 +68,25 @@ class GroupAdapter extends ArrayAdapter<GroupItem> {
|
||||
long then = header.getTimestamp(), now = System.currentTimeMillis();
|
||||
date.setText(DateUtils.formatSameDayTime(then, now, SHORT, SHORT));
|
||||
headerLayout.addView(date);
|
||||
layout.addView(headerLayout);
|
||||
|
||||
if(!item.isExpanded() || item.getBody() == null) return headerLayout;
|
||||
|
||||
LinearLayout expanded = new LinearLayout(ctx);
|
||||
expanded.setOrientation(VERTICAL);
|
||||
expanded.setGravity(CENTER_HORIZONTAL);
|
||||
expanded.setBackgroundColor(background);
|
||||
expanded.addView(headerLayout);
|
||||
|
||||
if(header.getContentType().equals("text/plain")) {
|
||||
if(item.getBody() == null) {
|
||||
TextView ellipsis = new TextView(ctx);
|
||||
ellipsis.setPadding(pad, 0, pad, pad);
|
||||
ellipsis.setText("\u2026");
|
||||
layout.addView(ellipsis);
|
||||
} else if(header.getContentType().equals("text/plain")) {
|
||||
TextView text = new TextView(ctx);
|
||||
text.setPadding(pad, 0, pad, pad);
|
||||
text.setBackgroundColor(background);
|
||||
text.setText(StringUtils.fromUtf8(item.getBody()));
|
||||
expanded.addView(text);
|
||||
layout.addView(text);
|
||||
} else {
|
||||
ImageButton attachment = new ImageButton(ctx);
|
||||
attachment.setPadding(pad, 0, pad, pad);
|
||||
attachment.setImageResource(R.drawable.content_attachment);
|
||||
expanded.addView(attachment);
|
||||
layout.addView(attachment);
|
||||
}
|
||||
|
||||
return expanded;
|
||||
return layout;
|
||||
}
|
||||
}
|
||||
@@ -6,12 +6,10 @@ import org.briarproject.api.db.MessageHeader;
|
||||
class GroupItem {
|
||||
|
||||
private final MessageHeader header;
|
||||
private boolean expanded;
|
||||
private byte[] body;
|
||||
|
||||
GroupItem(MessageHeader header) {
|
||||
this.header = header;
|
||||
expanded = false;
|
||||
body = null;
|
||||
}
|
||||
|
||||
@@ -19,14 +17,6 @@ class GroupItem {
|
||||
return header;
|
||||
}
|
||||
|
||||
boolean isExpanded() {
|
||||
return expanded;
|
||||
}
|
||||
|
||||
void setExpanded(boolean expanded) {
|
||||
this.expanded = expanded;
|
||||
}
|
||||
|
||||
byte[] getBody() {
|
||||
return body;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user