wrt-plugins-tizen_0.4.23
[framework/web/wrt-plugins-tizen.git] / src / Content / ContentController.cpp
1 //
2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 #include <CommonsJavaScript/JSCallbackManager.h>
19 #include <JSTizenException.h>
20 #include <JSTizenExceptionFactory.h>
21 #include "ContentController.h"
22 #include "ContentConverter.h"
23 #include "ContentAsyncCallbackManager.h"
24 #include <Logger.h>
25
26 namespace DeviceAPI {
27 namespace Content {
28
29 MediacontentManagerController& MediacontentManagerController::getInstance()
30 {
31     static MediacontentManagerController instance;
32     return instance;
33 }
34
35 MediacontentManagerController::MediacontentManagerController():
36         EventBrowseFolderAnswerReceiver(ThreadEnum::NULL_THREAD),       
37         EventUpdateMediaItemsAnswerReceiver(ThreadEnum::NULL_THREAD),           
38         EventFindFolderAnswerReceiver(ThreadEnum::NULL_THREAD)
39 {
40         LoggerD("create a MediacontentManagerController");
41 }
42
43 MediacontentManagerController::~MediacontentManagerController() 
44 {
45         LoggerD("<<<");
46         LoggerD(">>>");
47 }
48
49
50 void MediacontentManagerController::OnAnswerReceived(const IEventUpdateMediaItemsPtr &event)
51 {
52
53         LoggerD("MediacontentManagerController::IEventUpdateMediaItemsPtr:entered");
54
55     JSCallbackManagerPtr cbm = DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
56     if(!cbm) 
57         {
58         LoggerE("no callback manager");
59         return;
60     }
61     Try
62     {
63         MediaContentAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
64         if (event->getResult()) 
65                 {
66                         cbm->callOnSuccess();
67         }
68         else
69         {
70                         JSValueRef errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
71                                         cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
72                         cbm->callOnError(errorObject);
73         }
74         return;
75     }
76     Catch(Exception)
77     {
78         LoggerE("error during processing answer");
79     }
80 }
81
82
83 void MediacontentManagerController::OnAnswerReceived(const IEventBrowseFolderPtr &event)
84 {
85
86         LoggerD("MediacontentManagerController::OnAnswerReceived:entered");
87
88     JSCallbackManagerPtr cbm = DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
89     if (!cbm) 
90         {
91         LoggerE("no callback manager");
92         return;
93     }
94     Try
95     {
96         MediaContentAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
97         if (event->getResult()) 
98                 {
99             MediaConverterFactory::ConverterType converter = MediaConverterFactory::getConverter(cbm->getContext());
100             const std::vector<MediacontentMediaPtr> &results = event->getMedia();
101             JSValueRef result = converter->toJSValueRef(results);
102             cbm->callOnSuccess(result);
103         }
104         else
105         {
106                         JSValueRef errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
107                                         cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
108                         cbm->callOnError(errorObject);
109         }        
110                 return;
111     }
112     Catch(Exception)
113     {
114         LoggerE("error during processing answer");
115     }
116 }
117
118
119
120 void MediacontentManagerController::OnAnswerReceived(const IEventFindFolderPtr &event)
121 {
122
123         LoggerD("MediacontentManagerController::OnAnswerReceived:entered");
124
125     JSCallbackManagerPtr cbm = DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
126     if (!cbm) 
127         {
128         LoggerE("no callback manager");
129         return;
130     }
131     Try
132     {
133         MediaContentAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
134         if (event->getResult()) 
135                 {
136             MediaConverterFactory::ConverterType converter = MediaConverterFactory::getConverter(cbm->getContext());
137             const std::vector<MediacontentFolderPtr> &results = event->getFolder();
138             JSValueRef result = converter->toJSValueRef(results);
139             cbm->callOnSuccess(result);
140         }
141         else
142         {
143                         JSValueRef errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
144                                         cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
145                         cbm->callOnError(errorObject);
146         }        
147                 return;
148     }
149     Catch(Exception)
150     {
151         LoggerE("error during processing answer");
152     }
153
154 }
155
156
157 }
158 }
159