2014-09-10 14:38:53

by Gowtham Anandha Babu

[permalink] [raw]
Subject: [MAP 2/2] obexd/client/map : Handle MAP ReadStatusChanged event type

Adds ReadStatusChanged MCE event type handling in map_handle_notification()
---
obexd/client/map.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

diff --git a/obexd/client/map.c b/obexd/client/map.c
index 520e492..a505707 100644
--- a/obexd/client/map.c
+++ b/obexd/client/map.c
@@ -1872,6 +1872,25 @@ static void map_handle_status_changed(struct map_data *map,
"Status");
}

+static void map_handle_read_status_changed(struct map_data *map,
+ struct map_event *event)
+{
+ struct map_msg *msg;
+
+ msg = g_hash_table_lookup(map->messages, &event->handle);
+ if (msg == NULL)
+ return;
+
+ /* In MAP V 1.2 specification : ReadStatusChanged event didn't have clear explaination.
+ So as of now it will set the message read status as "yes" if it was "no" already
+ and the other way round. This implementation may change once we get 'read' attribute in the event report. */
+
+ if(msg->flags & MAP_MSG_FLAG_READ)
+ parse_read(msg,"no");
+ else
+ parse_read(msg,"yes");
+}
+
static void map_handle_folder_changed(struct map_data *map,
struct map_event *event,
const char *folder)
@@ -1927,6 +1946,9 @@ static void map_handle_notification(struct map_event *event, void *user_data)
case MAP_ET_MESSAGE_SHIFT:
map_handle_folder_changed(map, event, event->folder);
break;
+ case MAP_ET_READ_STATUS_CHANGED:
+ map_handle_read_status_changed(map, event);
+ break;
default:
break;
}
--
1.9.1