Tizen 2.0 Release
[framework/osp/media.git] / src / FMedia_VideoRecorderEvent.cpp
1 //
2 // Open Service Platform
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 /**
19  * @file                        FMedia_VideoRecorderEvent.cpp
20  * @brief                       This is the implementation file for the %_VideoRecorderEvent class.
21  */
22
23 #include <unique_ptr.h>
24 #include <FBaseSysLog.h>
25 #include "FMediaIVideoRecorderEventListener.h"
26 #include "FMedia_VideoRecorderEvent.h"
27 #include "FMedia_RecorderEventArg.h"
28 #include "FMedia_VideoRecorderImpl.h"
29
30 namespace Tizen { namespace Media
31 {
32
33 _VideoRecorderEvent::_VideoRecorderEvent(void)
34 :__pVideoRecorderImpl(null)
35 {
36
37 }
38
39 _VideoRecorderEvent::~_VideoRecorderEvent(void)
40 {
41
42 }
43
44 result
45 _VideoRecorderEvent::Construct(_VideoRecorderImpl& videoRecorderImpl)
46 {
47         result r = E_SUCCESS;
48         __pVideoRecorderImpl = &videoRecorderImpl;
49         r = _Event::Initialize();
50         return r;
51 }
52
53 result
54 _VideoRecorderEvent::SendEvent(_RecorderEventType event, RecorderErrorReason err, result res)
55 {
56         result r = E_SUCCESS;
57         std::unique_ptr <_RecorderEventArg> pRecorderEventArg (new (std::nothrow) _RecorderEventArg());
58         SysTryReturn(NID_MEDIA, pRecorderEventArg.get() != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
59
60         pRecorderEventArg->SetEventType(event);
61         pRecorderEventArg->SetResult(res);
62         pRecorderEventArg->SetError(err);
63         r = FireAsync(*(pRecorderEventArg.get()));
64         SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
65
66         // In case of success, event argument should be released for Base::Event to use the argument continuously.
67         pRecorderEventArg.release();
68         return r;
69 }
70
71 void
72 _VideoRecorderEvent::FireImpl(Tizen::Base::Runtime::IEventListener& listener, const Tizen::Base::Runtime::IEventArg& arg)
73 {
74         IVideoRecorderEventListener* pVideoRecorderEventListener = dynamic_cast <IVideoRecorderEventListener*>(&listener);
75         SysTryReturn(NID_MEDIA, pVideoRecorderEventListener != null, , E_SYSTEM, "[E_SYSTEM] A system error has been occurred.  Listener is null.");
76
77         Tizen::Base::Runtime::IEventArg* pTempArg = const_cast <Tizen::Base::Runtime::IEventArg*>(&arg);
78         _RecorderEventArg* pArg = dynamic_cast <_RecorderEventArg*>(pTempArg);
79         SysTryReturn(NID_MEDIA, pArg != null, , E_SYSTEM, "[E_SYSTEM] A system error has been occurred.  EventArg is null.");
80
81         switch (pArg->GetEventType())
82         {
83         case _RECORDER_EVENT_ERROR:
84                 __pVideoRecorderImpl->SetState(RECORDER_STATE_ERROR);
85                 pVideoRecorderEventListener->OnVideoRecorderErrorOccurred(pArg->GetError());
86                 break;
87
88         case _RECORDER_EVENT_RECORDING_STARTED:
89                 __pVideoRecorderImpl->SetState(RECORDER_STATE_RECORDING);
90                 pVideoRecorderEventListener->OnVideoRecorderStarted(pArg->GetResult());
91                 break;
92
93         case _RECORDER_EVENT_STOPPED:
94                 __pVideoRecorderImpl->SetState(RECORDER_STATE_STOPPED);
95                 pVideoRecorderEventListener->OnVideoRecorderStopped(pArg->GetResult());
96                 break;
97
98         case _RECORDER_EVENT_CANCELED:
99                 __pVideoRecorderImpl->SetState(RECORDER_STATE_STOPPED);
100                 pVideoRecorderEventListener->OnVideoRecorderCanceled(pArg->GetResult());
101                 break;
102
103         case _RECORDER_EVENT_ENDOF_FILESIZE:
104                 __pVideoRecorderImpl->SetState(RECORDER_STATE_ENDOF_FILE);
105                 pVideoRecorderEventListener->OnVideoRecorderEndReached(RECORDING_ENDOF_MAX_SIZE);
106                 break;
107
108         case _RECORDER_EVENT_ENDOF_RECTIME:
109                 __pVideoRecorderImpl->SetState(RECORDER_STATE_ENDOF_FILE);
110                 pVideoRecorderEventListener->OnVideoRecorderEndReached(RECORDING_ENDOF_MAX_TIME);
111                 break;
112
113         case _RECORDER_EVENT_PAUSED:
114                 __pVideoRecorderImpl->SetState(RECORDER_STATE_PAUSED);
115                 pVideoRecorderEventListener->OnVideoRecorderPaused(pArg->GetResult());
116                 break;
117
118         case _RECORDER_EVENT_CLOSED:
119                 __pVideoRecorderImpl->SetState(RECORDER_STATE_CLOSED);
120                 pVideoRecorderEventListener->OnVideoRecorderClosed(pArg->GetResult());
121                 break;
122
123         default:
124                 break;
125
126         }
127 }
128
129 }}
130