From 7cfdacb0aec5cdb5ab11662d24a08e09ffc5f493 Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Tue, 5 Mar 2013 00:44:10 +0000 Subject: [PATCH] Scroll to the first unread message, or the end of the list if all read. --- .../briar/android/messages/ConversationActivity.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java index 5188bbbe7e..c28abac256 100644 --- a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java @@ -50,6 +50,7 @@ implements DatabaseListener, OnClickListener, OnItemClickListener { @Inject @DatabaseExecutor private Executor dbExecutor; private ConversationAdapter adapter = null; + private ListView list = null; private String contactName = null; private volatile ContactId contactId = null; @@ -71,7 +72,7 @@ implements DatabaseListener, OnClickListener, OnItemClickListener { layout.setGravity(CENTER_HORIZONTAL); adapter = new ConversationAdapter(this); - ListView list = new ListView(this); + list = new ListView(this); // Give me all the width and all the unused height list.setLayoutParams(new LayoutParams(MATCH_PARENT, WRAP_CONTENT, 1f)); list.setAdapter(adapter); @@ -149,9 +150,16 @@ implements DatabaseListener, OnClickListener, OnItemClickListener { final Collection<PrivateMessageHeader> headers) { runOnUiThread(new Runnable() { public void run() { + int firstUnread = -1; adapter.clear(); - for(PrivateMessageHeader h : headers) adapter.add(h); + for(PrivateMessageHeader h : headers) { + if(firstUnread == -1 && !h.isRead()) + firstUnread = adapter.getCount(); + adapter.add(h); + } adapter.sort(AscendingHeaderComparator.INSTANCE); + if(firstUnread == -1) list.setSelection(adapter.getCount() - 1); + else list.setSelection(firstUnread); } }); } -- GitLab