added methods to count number of unread messages

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Conversation.java          | 13 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java |  8 
2 files changed, 21 insertions(+)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Conversation.java 🔗

@@ -736,6 +736,19 @@ public class Conversation extends AbstractEntity implements Blockable {
 		}
 	}
 
+	public int unreadCount() {
+		synchronized (this.messages) {
+			int count = 0;
+			for(int i = this.messages.size() - 1; i >= 0; --i) {
+				if (this.messages.get(i).isRead()) {
+					return count;
+				}
+				++count;
+			}
+			return count;
+		}
+	}
+
 	public class Smp {
 		public static final int STATUS_NONE = 0;
 		public static final int STATUS_CONTACT_REQUESTED = 1;

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -2080,6 +2080,14 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 		return getPreferences().getBoolean("indicate_received", false);
 	}
 
+	public int unreadCount() {
+		int count = 0;
+		for(Conversation conversation : getConversations()) {
+			count += conversation.unreadCount();
+		}
+		return count;
+	}
+
 	public void updateConversationUi() {
 		if (mOnConversationUpdate != null) {
 			mOnConversationUpdate.onConversationUpdate();