Beta merge 2
[profile/ivi/wrt-plugins-tizen.git] / src / standards / Tizen / Messaging / MessagingListener.h
1 /*
2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
17 /**
18  * @file       MessagingListener.h
19  * @author     Pawel Misiak (p.misiak@samsung.com)
20  * @author     Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
21  * @version    0.1
22  * @brief
23  */
24 #ifndef MESSAGINGLISTENER_H
25 #define MESSAGINGLISTENER_H
26
27 #include <map>
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>
34
35 #include "MessagingStorageMultiCallback.h"
36
37
38
39 namespace TizenApis {
40 namespace Tizen1_0 {
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;
59
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
71 {
72   public:
73     explicit MessagingListener(JSContextRef context);
74
75     long addIncomingMsgCallback(const WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr& cbManager, int funtionIndex);
76     void removeIncomingMsgCallback(long handle);
77     void registerMessageReceivedEmitter(EventOnMessagingStorageChangesPrivateDataPtr privData);
78     void deregisterMessageReceivedEmitter();
79
80   protected:
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);
97
98   private:
99     typedef std::map<long, WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr> IncomingMsgCB;
100     IncomingMsgCB m_MessageCallbacks;
101     IncomingMsgCB m_ConversationCallbacks;
102     IncomingMsgCB m_FolderCallbacks;
103     long m_nextHandle;
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;
107 };
108
109 typedef DPL::SharedPtr<MessagingListener> MessagingListenerPtr;
110 }
111 }
112
113 #endif // MessagingListener_H