2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 * @file FMedia_VideoRecorderEvent.cpp
20 * @brief This is the implementation file for the %_VideoRecorderEvent class.
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"
30 namespace Tizen { namespace Media
33 _VideoRecorderEvent::_VideoRecorderEvent(void)
34 :__pVideoRecorderImpl(null)
39 _VideoRecorderEvent::~_VideoRecorderEvent(void)
45 _VideoRecorderEvent::Construct(_VideoRecorderImpl& videoRecorderImpl)
48 __pVideoRecorderImpl = &videoRecorderImpl;
49 r = _Event::Initialize();
54 _VideoRecorderEvent::SendEvent(_RecorderEventType event, RecorderErrorReason err, result res)
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.");
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));
66 // In case of success, event argument should be released for Base::Event to use the argument continuously.
67 pRecorderEventArg.release();
72 _VideoRecorderEvent::FireImpl(Tizen::Base::Runtime::IEventListener& listener, const Tizen::Base::Runtime::IEventArg& arg)
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.");
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.");
81 switch (pArg->GetEventType())
83 case _RECORDER_EVENT_ERROR:
84 __pVideoRecorderImpl->SetState(RECORDER_STATE_ERROR);
85 pVideoRecorderEventListener->OnVideoRecorderErrorOccurred(pArg->GetError());
88 case _RECORDER_EVENT_RECORDING_STARTED:
89 __pVideoRecorderImpl->SetState(RECORDER_STATE_RECORDING);
90 pVideoRecorderEventListener->OnVideoRecorderStarted(pArg->GetResult());
93 case _RECORDER_EVENT_STOPPED:
94 __pVideoRecorderImpl->SetState(RECORDER_STATE_STOPPED);
95 pVideoRecorderEventListener->OnVideoRecorderStopped(pArg->GetResult());
98 case _RECORDER_EVENT_CANCELED:
99 __pVideoRecorderImpl->SetState(RECORDER_STATE_STOPPED);
100 pVideoRecorderEventListener->OnVideoRecorderCanceled(pArg->GetResult());
103 case _RECORDER_EVENT_ENDOF_FILESIZE:
104 __pVideoRecorderImpl->SetState(RECORDER_STATE_ENDOF_FILE);
105 pVideoRecorderEventListener->OnVideoRecorderEndReached(RECORDING_ENDOF_MAX_SIZE);
108 case _RECORDER_EVENT_ENDOF_RECTIME:
109 __pVideoRecorderImpl->SetState(RECORDER_STATE_ENDOF_FILE);
110 pVideoRecorderEventListener->OnVideoRecorderEndReached(RECORDING_ENDOF_MAX_TIME);
113 case _RECORDER_EVENT_PAUSED:
114 __pVideoRecorderImpl->SetState(RECORDER_STATE_PAUSED);
115 pVideoRecorderEventListener->OnVideoRecorderPaused(pArg->GetResult());
118 case _RECORDER_EVENT_CLOSED:
119 __pVideoRecorderImpl->SetState(RECORDER_STATE_CLOSED);
120 pVideoRecorderEventListener->OnVideoRecorderClosed(pArg->GetResult());