2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
18 #include <FUiScenesISceneEventListener.h>
19 #include <FUiScenesISceneAnimationProvider.h>
20 #include <FBaseSysLog.h>
21 #include "FUiScenes_SceneImpl.h"
24 using namespace Tizen::Base;
25 using namespace Tizen::Base::Collection;
26 using namespace Tizen::Ui::Controls;
29 namespace Tizen { namespace Ui { namespace Scenes
33 _SceneImpl::_SceneImpl(void)
37 , __pSceneAnimationProvider(null)
38 , __panelCreatedFromFormResource(false)
43 _SceneImpl::~_SceneImpl(void)
48 _SceneImpl::Equals(const Object& rhs) const
50 const Scene* pScene = dynamic_cast<const Scene*>(&rhs);
56 const _SceneImpl* pSceneImpl = _SceneImpl::GetInstance(*pScene);
57 if (pSceneImpl == this)
62 if (__sceneId == pSceneImpl->GetSceneId())
71 _SceneImpl::GetHashCode(void) const
73 return __sceneId.GetHashCode();
77 _SceneImpl::GetSceneId(void) const
83 _SceneImpl::GetFormId(void) const
89 _SceneImpl::GetPanelId(void) const
95 _SceneImpl::GetForm(void) const
101 _SceneImpl::SetForm(Form* pForm)
107 _SceneImpl::GetPanel(void) const
113 _SceneImpl::SetPanel(Panel* pPanel)
119 _SceneImpl::SetArgs(IList* pArgs)
125 _SceneImpl::GetArgs(void)
131 _SceneImpl::AddSceneEventListener(const ISceneEventListener& sceneEventlistener)
133 result r = E_SUCCESS;
134 ISceneEventListener* pListener = const_cast <ISceneEventListener*>(&sceneEventlistener);
135 bool alreadyExist = __sceneEventListenerList.Contains(pListener);
136 SysTryReturnResult(NID_UI_SCENES, !alreadyExist, E_OBJ_ALREADY_EXIST, "The event listener already exist.");
137 r = __sceneEventListenerList.Add(pListener);
138 SysTryReturn(NID_UI_SCENES, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
143 _SceneImpl::RemoveSceneEventListener(const ISceneEventListener& sceneEventlistener)
145 result r = E_SUCCESS;
146 ISceneEventListener* pListener = const_cast <ISceneEventListener*>(&sceneEventlistener);
147 r = __sceneEventListenerList.Remove(pListener);
148 SysTryReturn(NID_UI_SCENES, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
153 _SceneImpl::SetSceneAnimationProvider(ISceneAnimationProvider* pSceneAnimationProvider)
155 ISceneAnimationProvider* pListener = pSceneAnimationProvider;
156 __pSceneAnimationProvider = pListener;
161 _SceneImpl::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
163 IEnumeratorT<ISceneEventListener*>* pEnum = __sceneEventListenerList.GetEnumeratorN();
169 while (pEnum->MoveNext() == E_SUCCESS)
171 ISceneEventListener* pListener = null;
172 pEnum->GetCurrent(pListener);
175 pListener->OnSceneActivatedN(previousSceneId, currentSceneId, pArgs);
183 _SceneImpl::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
185 IEnumeratorT<ISceneEventListener*>* pEnum = __sceneEventListenerList.GetEnumeratorN();
191 while (pEnum->MoveNext() == E_SUCCESS)
193 ISceneEventListener* pListener = null;
194 pEnum->GetCurrent(pListener);
197 pListener->OnSceneDeactivated(currentSceneId, nextSceneId);
205 _SceneImpl::PrepareAnimation(const SceneId& sceneId, IList* pArgs, SceneTransitionAnimationType type, bool formTransition)
207 if (__pSceneAnimationProvider)
209 __pSceneAnimationProvider->PrepareAnimation(sceneId, pArgs, type, formTransition);
217 _SceneImpl::IsPanelCreatedFromFormResource(void) const
219 return __panelCreatedFromFormResource;
223 _SceneImpl::SetPanelCreatedFromFormResource(bool createFromFormResource)
225 __panelCreatedFromFormResource = createFromFormResource;
229 _SceneImpl::CreateSceneN(const SceneId& sceneId, const String& formId, const String& panelId)
231 Scene* pScene = new (std::nothrow) Scene();
232 SysTryReturn(NID_UI_SCENES, pScene != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.",
233 GetErrorMessage(E_OUT_OF_MEMORY));
235 _SceneImpl* pSceneImpl = _SceneImpl::GetInstance(*pScene);
236 SysTryCatch(NID_UI_SCENES, pSceneImpl != null, , E_INVALID_STATE,
237 "[%s] Scene is in an invalid state. pSceneImpl is not valid", GetErrorMessage(E_INVALID_STATE));
238 pSceneImpl->__sceneId = sceneId;
239 pSceneImpl->__formId = formId;
240 pSceneImpl->__panelId = panelId;
250 _SceneImpl::GetInstance(Scene& scene)
252 return scene.__pSceneImpl;
256 _SceneImpl::GetInstance(const Scene& scene)
258 return scene.__pSceneImpl;
261 } } } // Tizen::Ui::Scenes