2 // Open Service Platform
3 // Copyright (c) 2012-2013 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.
18 * @file FUiCtrl_Frame.cpp
19 * @brief This is the implementation file for the _Frame class.
23 #include <FBaseErrorDefine.h>
24 #include <FBaseInteger.h>
25 #include <FBaseSysLog.h>
26 #include <FApp_AppInfo.h>
27 #include "FUi_UiNotificationEvent.h"
28 #include "FUi_UiEventManager.h"
29 #include "FUi_ControlManager.h"
30 #include "FUi_EcoreEvasMgr.h"
31 #include "FUi_EcoreEvas.h"
32 #include "FUi_TouchManager.h"
33 #include "FUi_CoordinateSystemUtils.h"
34 #include "FUiCtrl_Frame.h"
35 #include "FUiCtrl_FramePresenter.h"
36 #include "FUiCtrl_FrameEvent.h"
37 #include "FUiCtrl_IFrameEventListener.h"
38 #include "FUiCtrl_IFormActivationChangeEventListener.h"
39 #include "FUiCtrl_Form.h"
40 #include "FUiCtrl_FormImpl.h"
41 #include "FUiCtrl_FrameImpl.h"
42 #include "FUiAnim_VisualElement.h"
43 #include "FUiAnim_RootVisualElement.h"
44 #include "FUiAnim_EflLayer.h"
45 #include "FUi_AccessibilityManager.h"
47 using namespace Tizen::App;
48 using namespace Tizen::Ui::Animations;
49 using namespace Tizen::Ui;
50 using namespace Tizen::Ui::Controls;
51 using namespace Tizen::Base;
52 using namespace Tizen::Base::Collection;
53 using namespace Tizen::Base::Runtime;
54 using namespace Tizen::Graphics;
56 namespace Tizen { namespace Ui { namespace Controls {
58 const wchar_t* _ACTIVATE_FRAME = L"ActivateFrame";
61 : __pFramePresenter(null)
63 , __floatingBounds(0.0f, 0.0f, 0.0f, 0.0f)
64 , __floatingOrientation(_CONTROL_ORIENTATION_PORTRAIT)
65 , __showMode(FRAME_SHOW_MODE_FULL_SCREEN)
69 , __constructed(false)
71 , __changingBoundsEnabled(true)
72 , __pFormActivationChangeEventListener(null)
74 _FramePresenter* pPresenter = new (std::nothrow) _FramePresenter(*this);
75 SysTryReturnVoidResult(NID_UI_CTRL, pPresenter, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
77 FloatDimension screen = _ControlManager::GetInstance()->GetScreenSizeF();
78 __floatingBounds.width = screen.width;
79 __floatingBounds.height = screen.height;
81 __pFrameEvent = _FrameEvent::CreateInstanceN(*this);
82 SysTryCatch(NID_UI_CTRL, __pFrameEvent, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
84 SetPresenter(*pPresenter);
85 SetClipChildrenEnabled(false);
100 delete __pFrameEvent;
101 __pFrameEvent = null;
104 delete __pFramePresenter;
105 __pFramePresenter = null;
111 _Frame::CreateFrameN(void)
113 result r = E_SUCCESS;
114 _RootVisualElement* pRootVE = null;
115 _EflLayer* pLayer = null;
116 int appType = _AppInfo::GetAppType();
118 _Frame* pFrame = new (std::nothrow) _Frame;
119 SysTryCatch(NID_UI_CTRL, pFrame, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory shortage.");
120 SysTryCatch(NID_UI_CTRL, GetLastResult() == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] A system error occurred.");
122 if (appType & _APP_TYPE_IME_APP)
124 SysLog(NID_UI_CTRL, "[Ime Rotation]");
125 r = pFrame->CreateRootVisualElement(_WINDOW_TYPE_SUB);
126 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
130 r = pFrame->CreateRootVisualElement();
131 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
134 pRootVE = pFrame->GetRootVisualElement();
137 pLayer = static_cast<_EflLayer*>(pRootVE->GetNativeLayer());
140 if (!(appType & _APP_TYPE_IME_APP))
142 pLayer->SetOpacity(1);
145 pFrame->AcquireHandle();
147 SetLastResult(E_SUCCESS);
158 _Frame::SetPresenter(const _FramePresenter& framePresenter)
160 __pFramePresenter = const_cast <_FramePresenter*>(&framePresenter);
168 if (__pFramePresenter)
170 __pFramePresenter->Draw();
175 _Frame::OnActivated(void)
177 SysLog(NID_UI, "activated(%d)", __activated);
184 _Window::OnActivated();
186 _Form* pCurrentForm = GetCurrentForm();
187 if (pCurrentForm == null)
192 pCurrentForm->AddIndicatorObject();
194 _Control* pFocusControl = pCurrentForm->GetFocusControl();
197 pFocusControl->SetFocused();
201 pCurrentForm->SetFocused();
203 _AccessibilityManager::GetInstance()->RequestAutoReading(_ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM);
207 _Frame::OnNotifiedN(const _Control& source, IList* pArgs)
209 SysTryReturn(NID_UI_CTRL, pArgs, false, E_SYSTEM, "[E_SYSTEM] pArgs is null.")
211 String* pType = dynamic_cast <String*>(pArgs->GetAt(0));
212 SysTryReturn(NID_UI_CTRL, pType, false, E_SYSTEM, "[E_SYSTEM] pType is null.")
214 if (*pType == L"VisibilityEvent")
218 Integer* pObscured = dynamic_cast<Integer*>(pArgs->GetAt(1));
219 if (pObscured == null)
221 pArgs->RemoveAll(true);
227 obscured = pObscured->ToInt();
230 SetNativeWindowActivated(true);
236 SetNativeWindowActivated(false);
238 OnFrameDeactivated();
241 pArgs->RemoveAll(true);
246 else if (*pType == _ACTIVATE_FRAME)
248 _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
251 pEcoreEvas->ActivateWindow(*this);
254 pArgs->RemoveAll(true);
264 _Frame::OnFrameActivated(void)
266 int childcount = GetChildCount();
268 for (int i = 0 ; i < childcount ; i++)
270 _Control* pChild = GetChild(i);
271 _Form* pForm = dynamic_cast<_Form*>(pChild);
274 pForm->MoveOverlayRegion(true);
279 IEventArg* pArg = _FrameEvent::CreateFrameEventArgN(*this, _FRAME_STATUS_ACTIVATED);
280 __pFrameEvent->Fire(*pArg);
282 if (GetChildCount() < 1)
284 _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
285 SysTryReturnVoidResult(NID_UI_CTRL, pEcoreEvas, E_SYSTEM, "[E_SYSTEM] Unable to get evas");
287 if (GetShowMode() == FRAME_SHOW_MODE_FULL_SCREEN)
289 pEcoreEvas->SetIndicatorShowState(*GetRootWindow(), false);
295 _Frame::OnFrameDeactivated(void)
297 int childcount = GetChildCount();
299 for (int i = 0 ; i < childcount ; i++)
301 _Control* pChild = GetChild(i);
302 _Form* pForm = dynamic_cast<_Form*>(pChild);
305 pForm->MoveOverlayRegion(false);
310 IEventArg* pArg = _FrameEvent::CreateFrameEventArgN(*this, _FRAME_STATUS_DEACTIVATED);
311 __pFrameEvent->Fire(*pArg);
313 _TouchManager* pTouchManager = _TouchManager::GetInstance();
316 pTouchManager->SetTouchCanceled(null);
321 _Frame::OnFrameMinimized(void)
323 IEventArg* pArg = _FrameEvent::CreateFrameEventArgN(*this, _FRAME_STATUS_MINIMIZED);
324 __pFrameEvent->Fire(*pArg);
328 _Frame::OnFrameRestored(void)
332 IEventArg* pArg = _FrameEvent::CreateFrameEventArgN(*this, _FRAME_STATUS_RESTORED);
333 __pFrameEvent->Fire(*pArg);
337 _Frame::SetCurrentForm(const _Form* pForm)
339 result r = E_SUCCESS;
341 SysTryReturnVoidResult(NID_UI_CTRL, pForm != null, E_INVALID_ARG, "[E_INVALID_ARG] Form to become a new current form is null");
342 _Form* pNewForm = const_cast<_Form*>(pForm);
344 _Form* pCurrentForm = GetCurrentForm();
345 pNewForm->AddIndicatorObject();
347 if (pCurrentForm != null)
349 if (pCurrentForm != pForm)
352 r = MoveChildToTop(*pForm);
353 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
354 pNewForm->MoveOverlayRegion(true);
356 pCurrentForm->SetVisibleState(false);
357 pCurrentForm->MoveOverlayRegion(false);
359 if (__pFormActivationChangeEventListener)
360 __pFormActivationChangeEventListener->OnFormDeactivated(*pCurrentForm);
364 pNewForm->SetVisibleState(true);
365 pNewForm->OnFormActivated();
366 _Control* pFocus = pNewForm->GetFocusControl();
369 pFocus->SetFocused();
373 pNewForm->SetFocused();
376 pNewForm->SetUpdateLayoutState(true);
378 if (__pFormActivationChangeEventListener)
379 __pFormActivationChangeEventListener->OnFormActivated(*pNewForm);
381 SetLastResult(E_SUCCESS);
387 _Frame::GetCurrentForm(void) const
389 _Form* pCurrentForm = null;
390 int controlCount = GetChildCount();
392 if (controlCount > 0)
394 for (int i = controlCount; i > 0; i--)
396 pCurrentForm = dynamic_cast<_Form*>(GetChild(i - 1));
397 SysTryReturn(NID_UI_CTRL, pCurrentForm != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
398 if (pCurrentForm->IsVisible())
409 _Frame::IsOrientationRoot(void) const
415 _Frame::SetRotation(bool rotation)
417 __rotation = rotation;
421 _Frame::AddFrameEventListener(const _IFrameEventListener& listener)
423 __constructed = true;
425 result r = __pFrameEvent->AddListener(listener);
426 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
430 _Frame::RemoveFrameEventListener(const _IFrameEventListener& listener)
432 result r = __pFrameEvent->RemoveListener(listener);
433 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
437 _Frame::SetFormActivationChangeEventListener(const _IFormActivationChangeEventListener* plistener)
439 __pFormActivationChangeEventListener = const_cast<_IFormActivationChangeEventListener*>(plistener);
444 _Frame::SetFloatingBounds(const FloatRectangle& rect)
446 __floatingBounds = rect;
450 _Frame::SetFloatingBounds(const Rectangle& rect)
452 __floatingBounds = _CoordinateSystemUtils::ConvertToFloat(rect);
456 _Frame::SetFloatingOrientation(_ControlOrientation orientation)
458 if ((__showMode == FRAME_SHOW_MODE_PARTIAL_SCREEN) || (__showMode == FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING))
460 __floatingOrientation = orientation;
465 _Frame::SetShowMode(FrameShowMode showMode)
467 _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
468 SysTryReturnResult(NID_UI_CTRL, pEcoreEvas, E_SYSTEM, "The method cannot proceed due to a severe system error.");
470 if (showMode == FRAME_SHOW_MODE_MINIMIZED)
472 if (__minimized == true)
477 pEcoreEvas->MinimizeWindow(*GetRootWindow());
484 if (__minimized == true)
490 bool changeMode = true;
492 if ((showMode == FRAME_SHOW_MODE_PARTIAL_SCREEN) || (showMode == FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING))
494 _Form* pCurrentForm = GetCurrentForm();
498 if (pCurrentForm->GetFormStyle() & _FORM_STYLE_INDICATOR)
505 SysTryReturnResult(NID_UI_CTRL, changeMode == true, E_SYSTEM, "The method cannot proceed due to a severe system error.");
507 int oldShowMode = __showMode;
508 __showMode = showMode;
510 if ((__showMode == FRAME_SHOW_MODE_PARTIAL_SCREEN) || (__showMode == FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING))
512 _ControlOrientation orientation = _CONTROL_ORIENTATION_PORTRAIT;
513 _Form* pCurForm = GetCurrentForm();
516 orientation = pCurForm->GetOrientation();
520 orientation = GetOrientation();
523 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
525 if (__floatingOrientation == _CONTROL_ORIENTATION_LANDSCAPE)
527 FloatDimension screenSize = _ControlManager::GetInstance()->_ControlManager::GetScreenSizeF();
528 FloatPoint prevPoint(__floatingBounds.x, __floatingBounds.y);
529 FloatPoint curPoint(prevPoint.x, prevPoint.y);
530 float ratio = screenSize.width / screenSize.height;
532 if (prevPoint.x > 0.0f)
534 curPoint.x = prevPoint.x * ratio;
537 if (prevPoint.y > 0.0f)
539 curPoint.y = prevPoint.y / ratio;
542 __floatingBounds.x = curPoint.x;
543 __floatingBounds.y = curPoint.y;
548 if (__floatingOrientation == _CONTROL_ORIENTATION_PORTRAIT)
550 FloatDimension screenSize = _ControlManager::GetInstance()->_ControlManager::GetScreenSizeF();
551 FloatPoint prevPoint(__floatingBounds.x, __floatingBounds.y);
552 FloatPoint curPoint(prevPoint.x, prevPoint.y);
553 float ratio = screenSize.width / screenSize.height;
555 if (prevPoint.x > 0.0f)
557 curPoint.x = prevPoint.x / ratio;
560 if (prevPoint.y > 0.0f)
562 curPoint.y = prevPoint.y * ratio;
565 __floatingBounds.x = curPoint.x;
566 __floatingBounds.y = curPoint.y;
571 result r = E_SUCCESS;
575 case FRAME_SHOW_MODE_FULL_SCREEN:
576 if (oldShowMode == FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING)
578 r = pEcoreEvas->SetFloatingMode(*GetRootWindow(), false);
579 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
582 if (oldShowMode != FRAME_SHOW_MODE_FULL_SCREEN)
584 FloatDimension screen = _ControlManager::GetInstance()->GetScreenSizeF();
588 if (GetOrientation() == _CONTROL_ORIENTATION_PORTRAIT)
590 SetBounds(FloatRectangle(0.0f, 0.0f, screen.width, screen.height));
594 SetBounds(FloatRectangle(0.0f, 0.0f, screen.height, screen.width));
601 case FRAME_SHOW_MODE_PARTIAL_SCREEN:
602 if (oldShowMode == FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING)
604 r = pEcoreEvas->SetFloatingMode(*GetRootWindow(), false);
605 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
608 if (oldShowMode == FRAME_SHOW_MODE_FULL_SCREEN)
610 SetBounds(__floatingBounds);
612 else if (oldShowMode == FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING)
614 pEcoreEvas->SetWindowBounds(*GetRootWindow(), _CoordinateSystemUtils::ConvertToInteger(__floatingBounds));
618 case FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING:
619 if (oldShowMode != FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING)
621 r = pEcoreEvas->SetFloatingMode(*GetRootWindow(), true);
622 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
625 if (oldShowMode == FRAME_SHOW_MODE_FULL_SCREEN)
627 SetBounds(__floatingBounds);
635 if ((__showMode == FRAME_SHOW_MODE_PARTIAL_SCREEN) || (__showMode == FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING))
637 _Form* pCurForm = GetCurrentForm();
640 __floatingOrientation = pCurForm->GetOrientation();
644 __floatingOrientation = GetOrientation();
652 _Frame::GetShowMode(bool minimize) const
656 if (__minimized == true)
658 return FRAME_SHOW_MODE_MINIMIZED;
672 _Frame::IsFrameActivated(void) const
678 _Frame::OnChildAttached(const _Control& child)
680 _Form* pCurrentForm = GetCurrentForm();
682 if (pCurrentForm == &child)
684 int controlCount = GetChildCount();
686 if (controlCount > 1)
688 _Control* pOldCurrentForm = GetChild(controlCount - 2);
689 SysTryReturnVoidResult(NID_UI_CTRL, pOldCurrentForm != null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
690 pOldCurrentForm->SetVisibleState(false);
696 _Frame::OnChildDetached(const _Control& child)
698 int controlCount = GetChildCount();
700 if (controlCount > 0)
702 _Control* pCurrentForm = GetChild(controlCount - 1);
703 SysTryReturnVoidResult(NID_UI_CTRL, pCurrentForm, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
704 pCurrentForm->SetVisibleState(true);
708 _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
709 SysTryReturnVoidResult(NID_UI_CTRL, pEcoreEvas, E_SYSTEM, "[E_SYSTEM] Unable to get evas");
710 pEcoreEvas->SetIndicatorShowState(*GetRootWindow(), false);
715 _Frame::OnBoundsChanging(const FloatRectangle& bounds)
717 int appType = _AppInfo::GetAppType();
718 if (appType & _APP_TYPE_IME_APP)
720 SysLog(NID_UI_CTRL, "[Ime Rotation]");
724 if (__restore == false)
726 __floatingBounds = bounds;
729 if ((__showMode == FRAME_SHOW_MODE_FULL_SCREEN) && (__restore == false))
731 if (__constructed == false)
737 if (__rotation == true)
743 return E_UNSUPPORTED_OPERATION;
748 if (__changingBoundsEnabled == false)
753 _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
754 SysTryReturn(NID_UI, pEcoreEvas, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.");
756 pEcoreEvas->SetWindowBounds(*GetRootWindow(), _CoordinateSystemUtils::ConvertToInteger(bounds));
757 result r = GetLastResult();
758 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
765 _Frame::OnAttached(void)
767 _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
768 SysAssert(pEcoreEvas);
770 pEcoreEvas->SetWindowVisibleState(*GetRootWindow(), true);
776 _Frame::OnBackgroundColorChanged(Color& backgroundColor)
778 _RootVisualElement* pRootVE = GetRootVisualElement();
781 _EflLayer* pLayer = static_cast<_EflLayer*>(pRootVE->GetNativeLayer());
784 byte alpha = backgroundColor.GetAlpha();
785 float opacity = static_cast<float>(alpha) / 255.0f;
787 pLayer->SetOpacity(opacity);
790 FrameShowMode showMode = GetShowMode(false);
791 SetShowMode(FRAME_SHOW_MODE_FULL_SCREEN);
793 SetShowMode(showMode);
795 _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
801 Orientation mode = ORIENTATION_PORTRAIT;
803 _Form* pCurrentForm = GetCurrentForm();
806 _FormImpl* pFormImpl = static_cast<_FormImpl*>(pCurrentForm->GetUserData());
809 mode = pFormImpl->GetOrientation();
814 _FrameImpl* pFrameImpl = static_cast<_FrameImpl*>(GetUserData());
817 mode = pFrameImpl->GetOrientation();
823 case ORIENTATION_PORTRAIT:
824 pEcoreEvas->SetWindowPreferredRotation(*this, 0, true);
826 case ORIENTATION_LANDSCAPE:
827 pEcoreEvas->SetWindowPreferredRotation(*this, 270, true);
829 case ORIENTATION_PORTRAIT_REVERSE:
830 pEcoreEvas->SetWindowPreferredRotation(*this, 180, true);
832 case ORIENTATION_LANDSCAPE_REVERSE:
833 pEcoreEvas->SetWindowPreferredRotation(*this, 90, true);
835 case ORIENTATION_AUTOMATIC:
837 pEcoreEvas->SetWindowPreferredRotation(*this, -1);
838 int autoRotation[3] = {0, 90, 270};
839 pEcoreEvas->SetWindowAvailabledRotation(*this, autoRotation, 3, true);
842 case ORIENTATION_AUTOMATIC_FOUR_DIRECTION:
844 pEcoreEvas->SetWindowPreferredRotation(*this, -1);
845 int autoFourRotation[4] = {0, 90, 180, 270};
846 pEcoreEvas->SetWindowAvailabledRotation(*this, autoFourRotation, 4, true);
855 _Frame::ResetFocusList(void)
857 Tizen::Ui::Controls::_Form* pCurrentForm = GetCurrentForm();
860 pCurrentForm->ResetFocusList();
865 _Frame::GetFocusControl(const _Control* pControl) const
867 const _Form* pForm = null;
868 _Frame* pFrame = null;
869 const _Control* pTempControl = pControl;
872 pForm = dynamic_cast<_Form*>(const_cast<_Control*>(pTempControl));
876 pFrame = dynamic_cast<_Frame*>(pForm->GetParent());
883 pTempControl = pTempControl->GetParent();
888 pTempControl = pTempControl->GetParent();
893 return pForm->GetFocusControl();
899 _Frame::GetCurrentFocusControl(void) const
901 _Form* pForm = GetCurrentForm();
904 return pForm->GetFocusControl();
909 _Frame::SetFocusControl(const _Control* pControl , bool on)
911 SysTryReturnVoidResult(NID_UI, pControl, E_SYSTEM, "[E_SYSTEM] The pControl cannot be NULL.");
912 _ControlManager* pControlMgr = _ControlManager::GetInstance();
913 SysAssert(pControlMgr);
915 _Form* pCurrentForm = GetCurrentForm();
916 _Frame* pFrame = null;
917 const _Control* pTempControl = pControl;
918 bool isCurrentForm = false;
922 pForm = dynamic_cast<_Form*>(const_cast<_Control*>(pTempControl));
926 pFrame = dynamic_cast<_Frame*>(pForm->GetParent());
933 pTempControl = pTempControl->GetParent();
938 pTempControl = pTempControl->GetParent();
942 if (pForm == pCurrentForm)
944 isCurrentForm = true;
951 pForm->SetFocusControl(pControl);
952 if (isCurrentForm && pFrame && pFrame->IsActivated())
954 pControlMgr->SetFocusControl(*pControl);
959 pControlMgr->SetFocusControl(*this, false);
966 _Frame::SetChangingBoundsEnabled(bool enable)
968 __changingBoundsEnabled = enable;
971 Tizen::Base::Collection::IListT<_Control*>*
972 _Frame::GetFocusList(void) const
974 _Form* pForm = GetCurrentForm();
977 return pForm->GetFocusList();
983 _Frame::GetFocusTraversalControl(_Control* pControl) const
986 _Control* pTempControl = pControl;
987 _Frame* pFrame = null;
990 pForm = dynamic_cast<_Form*>(const_cast<_Control*>(pTempControl));
994 pFrame = dynamic_cast<_Frame*>(pForm->GetParent());
1001 pTempControl = pTempControl->GetParent();
1006 pTempControl = pTempControl->GetParent();
1012 return pForm->GetFocusTraversalControl();
1018 _Frame::SetFocusTraversalControl(_Control* pControl, bool on)
1020 _Form* pForm = null;
1021 _Control* pTempControl = pControl;
1022 _Frame* pFrame = null;
1025 pForm = dynamic_cast<_Form*>(const_cast<_Control*>(pTempControl));
1029 pFrame = dynamic_cast<_Frame*>(pForm->GetParent());
1036 pTempControl = pTempControl->GetParent();
1041 pTempControl = pTempControl->GetParent();
1049 pForm->SetFocusTraversalControl(pControl);
1053 pForm->SetFocusTraversalControl(pForm);
1057 }}} // Tizen::Ui::Controls