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