From d18ba33e4437a54461a50934cffe5530e292defe Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 12 Aug 2013 14:33:16 +0200 Subject: [PATCH] Mark messages as read if using liblinphone storage --- src/org/linphone/ChatFragment.java | 10 +++++++--- src/org/linphone/ChatStorage.java | 10 +++++++--- submodules/linphone | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/org/linphone/ChatFragment.java b/src/org/linphone/ChatFragment.java index 1337a19ba..4e3e8b0cb 100644 --- a/src/org/linphone/ChatFragment.java +++ b/src/org/linphone/ChatFragment.java @@ -182,6 +182,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); if (lc != null) { chatRoom = lc.getOrCreateChatRoom(sipUri); + //Only works if using liblinphone storage + LinphoneActivity.instance().getChatStorage().markConversationAsRead(chatRoom); } if (savedInstanceState != null) { @@ -293,7 +295,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC messagesFilterLimit += MESSAGES_STEP; else messagesFilterLimit = messagesList.size(); - } + } invalidate(messagesFilterLimit); } @@ -315,11 +317,13 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC displayImageMessage(msg.getId(), msg.getImage(), msg.getTimestamp(), msg.isIncoming(), msg.getStatus(), messagesLayout, msg.getUrl()); } - if (!msg.isRead()) + if (!msg.isRead()) { + // Only works if not using liblinphone storage chatStorage.markMessageAsRead(msg.getId()); + } } LinphoneActivity.instance().updateMissedChatCount(); - + if (limit < messagesList.size()) { messagesScrollView.setScrollViewListener(new ScrollViewListener() { @Override diff --git a/src/org/linphone/ChatStorage.java b/src/org/linphone/ChatStorage.java index 6c0383117..666e2f004 100644 --- a/src/org/linphone/ChatStorage.java +++ b/src/org/linphone/ChatStorage.java @@ -359,15 +359,19 @@ public class ChatStorage { } public void markMessageAsRead(int id) { - if (useNativeAPI) { - //TODO - } else { + if (!useNativeAPI) { ContentValues values = new ContentValues(); values.put("read", READ); db.update(TABLE_NAME, values, "id LIKE " + id, null); } } + public void markConversationAsRead(LinphoneChatRoom chatroom) { + if (useNativeAPI) { + chatroom.markAsRead(); + } + } + public int getUnreadMessageCount() { int count; if (!useNativeAPI) { diff --git a/submodules/linphone b/submodules/linphone index 55b640b0d..679624223 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 55b640b0d733ea88885d438c7888cf021269510e +Subproject commit 679624223898212549d46757e52646a95b9ab8b8