From 02daaf448c3ca6f63f851ae457e139be24372bc9 Mon Sep 17 00:00:00 2001 From: Matt Ranostay Date: Thu, 1 Aug 2019 18:56:33 -0700 Subject: libqtappfw: bluetooth-map: add support for list_messages + message verbs Bug-AGL: SPEC-2561 Change-Id: I5c4df78a15cb009a742148a86432729deb434693 Signed-off-by: Matt Ranostay (cherry picked from commit 9cae4551c16d66a2139b50830749bfcc770ed17c) --- map/map.cpp | 33 +++++++++++++++++++++++++++++++++ map/map.h | 4 ++++ responsemessage.h | 5 +++++ 3 files changed, 42 insertions(+) diff --git a/map/map.cpp b/map/map.cpp index eb3d5e0..38f682a 100644 --- a/map/map.cpp +++ b/map/map.cpp @@ -46,6 +46,26 @@ void Map::compose(QString recipient, QString message) delete tmsg; } +void Map::message(QString handle) +{ + MapMessage *tmsg = new MapMessage(); + QJsonObject parameter; + parameter.insert("handle", handle); + tmsg->createRequest("message", parameter); + m_mloop->sendMessage(tmsg); + delete tmsg; +} + +void Map::listMessages(QString folder) +{ + MapMessage *tmsg = new MapMessage(); + QJsonObject parameter; + parameter.insert("folder", folder); + tmsg->createRequest("list_messages", parameter); + m_mloop->sendMessage(tmsg); + delete tmsg; +} + void Map::onConnected() { MapMessage *tmsg = new MapMessage(); @@ -54,6 +74,8 @@ void Map::onConnected() tmsg->createRequest("subscribe", parameter); m_mloop->sendMessage(tmsg); delete tmsg; + + listMessages(); } void Map::onDisconnected() @@ -74,6 +96,17 @@ void Map::onMessageReceived(MessageType type, Message *msg) if (tmsg->isNotificationEvent()) { emit notificationEvent(tmsg->eventData().toVariantMap()); } + } else if (msg->isReply() && type == ResponseRequestMessage) { + ResponseMessage *tmsg = qobject_cast(msg); + + if (tmsg->requestVerb() == "list_messages") { + QString folder = tmsg->requestParameters().value("folder").toString(); + QVariantMap listing = tmsg->replyData().value("messages").toObject().toVariantMap(); + emit listMessagesResult(folder, listing); + } else if (tmsg->requestVerb() == "message") { + QString handle = tmsg->requestParameters().value("handle").toString(); + emit messageResult(handle, tmsg->replyData().toVariantMap()); + } } msg->deleteLater(); diff --git a/map/map.h b/map/map.h index e712b93..c54a250 100644 --- a/map/map.h +++ b/map/map.h @@ -34,9 +34,13 @@ class Map : public QObject virtual ~Map(); Q_INVOKABLE void compose(QString recipient, QString message); + Q_INVOKABLE void message(QString handle); + Q_INVOKABLE void listMessages(QString folder = "inbox"); signals: void notificationEvent(QVariantMap message); + void listMessagesResult(QString folder, QVariantMap listing); + void messageResult(QString handle, QVariantMap message); private: MessageEngine *m_mloop; diff --git a/responsemessage.h b/responsemessage.h index fd9406a..dd85150 100644 --- a/responsemessage.h +++ b/responsemessage.h @@ -32,6 +32,11 @@ class ResponseMessage : public Message { return m_request["verb"].toString(); } + + inline QVariantMap requestParameters() const + { + return m_request["parameter"].toMap(); + } }; #endif // RESPONSEMESSAGE_H -- cgit 1.2.3-korg