2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * @file MessagingListener.h
19 * @author Pawel Misiak (p.misiak@samsung.com)
20 * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
24 #ifndef MESSAGINGLISTENER_H
25 #define MESSAGINGLISTENER_H
28 #include <CommonsJavaScript/JSPendingOperation.h>
29 #include <CommonsJavaScript/PrivateObject.h>
30 #include <API/Messaging/ReqReceiverMessage.h>
31 #include <API/Messaging/EventMessageReceived.h>
32 #include <API/Messaging/IMessaging.h>
33 #include <CommonsJavaScript/JSCallbackManager.h>
35 #include "MessagingStorageMultiCallback.h"
41 typedef WrtDeviceApis::Commons::EventAnswerReceiver<Api::Messaging::EventAddDraftMessage>
42 EventAddDraftMessageAnswerReceiver;
43 typedef WrtDeviceApis::Commons::EventAnswerReceiver<Api::Messaging::EventSendMessage>
44 EventSendMessageAnswerReceiver;
45 typedef WrtDeviceApis::Commons::EventAnswerReceiver<Api::Messaging::EventQueryMessages>
46 EventQueryMessagesAnswerReceiver;
47 typedef WrtDeviceApis::Commons::EventAnswerReceiver<Api::Messaging::EventDeleteMessages>
48 EventDeleteMessagesAnswerReceiver;
49 typedef WrtDeviceApis::Commons::EventAnswerReceiver<Api::Messaging::EventUpdateMessages>
50 EventUpdateMessagesAnswerReceiver;
51 typedef WrtDeviceApis::Commons::EventListener<Api::Messaging::EventMessageReceived>
52 EventMessageReceivedListener;
53 typedef WrtDeviceApis::Commons::EventAnswerReceiver<Api::Messaging::EventQueryConversations>
54 EventQueryConversationsAnswerReceiver;
55 typedef WrtDeviceApis::Commons::EventAnswerReceiver<Api::Messaging::EventDeleteConversations>
56 EventDeleteConversationsAnswerReceiver;
57 typedef WrtDeviceApis::Commons::EventAnswerReceiver<Api::Messaging::EventQueryFolders>
58 EventQueryFoldersAnswerReceiver;
60 class MessagingListener : public WrtDeviceApis::CommonsJavaScript::PrivateObjectT<void>::Type,
61 public EventAddDraftMessageAnswerReceiver,
62 public EventSendMessageAnswerReceiver,
63 public EventQueryMessagesAnswerReceiver,
64 public EventDeleteMessagesAnswerReceiver,
65 public EventUpdateMessagesAnswerReceiver,
66 public Api::Messaging::EventUpdateMessageAnswerReceiver,
67 public EventMessageReceivedListener,
68 public EventQueryConversationsAnswerReceiver,
69 public EventDeleteConversationsAnswerReceiver,
70 public EventQueryFoldersAnswerReceiver
73 explicit MessagingListener(JSContextRef context);
75 long addIncomingMsgCallback(const WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr& cbManager, int funtionIndex);
76 void removeIncomingMsgCallback(long handle);
77 void registerMessageReceivedEmitter(EventOnMessagingStorageChangesPrivateDataPtr privData);
78 void deregisterMessageReceivedEmitter();
81 virtual void OnAnswerReceived(
82 const DPL::SharedPtr<Api::Messaging::EventAddDraftMessage> &event);
83 virtual void OnAnswerReceived(
84 const DPL::SharedPtr<Api::Messaging::EventSendMessage> &event);
85 virtual void OnAnswerReceived(
86 const DPL::SharedPtr<Api::Messaging::EventQueryMessages> &event);
87 virtual void OnAnswerReceived(
88 const DPL::SharedPtr<Api::Messaging::EventDeleteMessages> &event);
89 virtual void OnAnswerReceived(
90 const DPL::SharedPtr<Api::Messaging::EventUpdateMessages> &event);
91 virtual void OnAnswerReceived(
92 const DPL::SharedPtr<Api::Messaging::EventUpdateMessage> &event);
93 virtual void OnAnswerReceived(const Api::Messaging::EventQueryConversationsPtr& event);
94 virtual void OnAnswerReceived(const Api::Messaging::EventDeleteConversationsPtr& event);
95 virtual void OnAnswerReceived(const Api::Messaging::EventQueryFoldersPtr& event);
96 virtual void onAnswerReceived(const Api::Messaging::EventMessageReceivedPtr& event);
99 typedef std::map<long, WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr> IncomingMsgCB;
100 IncomingMsgCB m_MessageCallbacks;
101 IncomingMsgCB m_ConversationCallbacks;
102 IncomingMsgCB m_FolderCallbacks;
104 std::vector<Api::Messaging::EmitterMessageReceived::IdType> m_emiterMsgId;
105 std::vector<Api::Messaging::EmitterConversationReceived::IdType> m_emiterConvId;
106 std::vector<Api::Messaging::EmitterFolderReceived::IdType> m_emiterFolderId;
109 typedef DPL::SharedPtr<MessagingListener> MessagingListenerPtr;
113 #endif // MessagingListener_H