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 * @file FUi_LayoutLayout.cpp
19 * @brief This is the implementation file for Layout class.
21 * This file contains the implementation of Layout class.
24 #include <FBaseSysLog.h>
25 #include "FUi_LayoutLayout.h"
26 #include "FUi_LayoutLayoutItemProxy.h"
27 #include "FUi_LayoutProxyList.h"
28 #include "FUi_LayoutLayoutItemInfo.h"
29 #include "FUi_LayoutLayoutList.h"
31 namespace Tizen { namespace Ui { namespace _Layout
40 , __pContainerProxy(null)
43 , __partialUpdateState(false)
44 , __determineState(false)
50 LayoutItemProxy* pContainerProxy = GetContainerProxy();
51 if (pContainerProxy != null)
53 LayoutContainer* pContainer = dynamic_cast <LayoutContainer*>(pContainerProxy->GetItem());
56 pContainer->OnDestroyLayout(*this);
62 delete __pContainerProxy;
69 Layout::GetContainerProxy(void)
71 if (__pContainerProxy == null)
76 if (__rootLayout == false)
78 LayoutContainer* pContainer = dynamic_cast <LayoutContainer*>(__pContainerProxy->GetItem());
79 if (pContainer == null)
81 SysLog(NID_UI, "Container is null.");
85 LayoutContainer* pParentContainer = pContainer->GetParentContainer();
86 if (pParentContainer == null)
88 SysLog(NID_UI, "Parent of container is null.");
92 Layout* pParentLayout = __pContainerProxy->GetParentLayout();
93 if (pParentLayout == null)
95 SysLog(NID_UI, "Parent layout of container is null.");
99 if (pParentLayout != pParentContainer->__pCurrentLayout)
101 ProxyListNode* pNode = pParentContainer->__pCurrentLayout->__pProxyList->GetFirstNode();
102 while (pNode != null)
104 LayoutItemProxy* pItemProxy = pNode->GetItemProxy();
105 LayoutContainer* pResultContainer = dynamic_cast <LayoutContainer*>(pItemProxy->GetItem());
106 if (pContainer == pResultContainer)
108 __pContainerProxy = pItemProxy;
111 pNode = __pProxyList->GetNextNode(*pNode);
116 return __pContainerProxy;
120 Layout::SetLayoutRect(const LayoutRect layoutRect)
124 __width = layoutRect.w;
125 __height = layoutRect.h;
129 Layout::GetLayoutRect(void) const
131 LayoutRect layoutRect = {__x, __y, __width, __height};
137 Layout::SetItemAlignment(const LayoutItem& item, const ItemAlign align)
141 if (align.HAlign < ITEM_HORIZONTAL_ALIGN_LEFT || align.HAlign > ITEM_HORIZONTAL_ALIGN_LEFT_RIGHT ||
142 align.VAlign < ITEM_VERTICAL_ALIGN_TOP || align.VAlign > ITEM_VERTICAL_ALIGN_TOP_BOTTOM)
144 SysTryReturn(NID_UI, false, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The alignment parameter is invalid parameter.");
147 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
148 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
150 pItemProxy->SetItemAlignment(align);
152 SetUpdateState(true);
157 Layout::GetItemAlignment(const LayoutItem& item, ItemAlign& align) const
161 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
162 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
164 align = pItemProxy->GetItemAlignment();
170 Layout::SetItemMargin(const LayoutItem& item, const ItemMargin margin)
174 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
175 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
177 pItemProxy->SetItemMargin(margin);
179 SetUpdateState(true);
184 Layout::GetItemMargin(const LayoutItem& item, ItemMargin& margin) const
188 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
189 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
191 margin = pItemProxy->GetItemMargin();
197 Layout::SetItemWidthMatchMode(const LayoutItem& item, const LayoutMatchMode matchMode)
201 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
202 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
204 pItemProxy->SetItemWidthMatchMode(matchMode);
206 SetUpdateState(true);
211 Layout::GetItemWidthMatchMode(const LayoutItem& item, LayoutMatchMode& matchMode) const
215 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
216 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
218 matchMode = pItemProxy->GetItemWidthMatchMode();
224 Layout::SetItemHeightMatchMode(const LayoutItem& item, const LayoutMatchMode matchMode)
228 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
229 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
231 pItemProxy->SetItemHeightMatchMode(matchMode);
237 Layout::GetItemHeightMatchMode(const LayoutItem& item, LayoutMatchMode& matchMode) const
241 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
242 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
244 matchMode = pItemProxy->GetItemHeightMatchMode();
250 Layout::SetItemBaseRect(const LayoutItem& item, const LayoutRect baseRect)
254 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
255 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
257 pItemProxy->SetItemBaseRect(baseRect);
259 SetUpdateState(true);
264 Layout::GetItemBaseRect(const LayoutItem& item, LayoutRect& baseRect) const
268 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(item);
269 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Control dose not belong to layout.");
271 baseRect = pItemProxy->GetItemBaseRect();
277 Layout::ItemExists(LayoutItem& item)
279 if (__pProxyList->GetItemProxy(item) != null)
287 Layout::CheckParentFlag(void)
293 return UPDATEFLAG_NO_FLAG;
296 LayoutItemProxy* pContainerProxy = GetContainerProxy();
297 SysTryReturn(NID_UI, pContainerProxy != null, UPDATEFLAG_ERROR, E_INVALID_STATE, "[E_INVALID_STATE] Did not set the container.");
299 Layout* pParentLayout = pContainerProxy->GetParentLayout();
300 SysTryReturn(NID_UI, pParentLayout != null, UPDATEFLAG_ERROR, E_INVALID_STATE, "[E_INVALID_STATE] Layout does not exist.");
302 LayoutItemProxy* pParentContainerProxy = pParentLayout->GetContainerProxy();
303 SysTryReturn(NID_UI, pContainerProxy != null, UPDATEFLAG_ERROR, E_INVALID_STATE, "[E_INVALID_STATE] Did not set the parent container.");
305 return CheckFlagInternal(*pParentContainerProxy);
309 Layout::CheckCurrentFlag(void)
315 return UPDATEFLAG_NO_FLAG;
318 LayoutItemProxy* pContainerProxy = GetContainerProxy();
319 SysTryReturn(NID_UI, pContainerProxy != null, UPDATEFLAG_ERROR, E_INVALID_STATE, "[E_INVALID_STATE] Did not set the container.");
321 return CheckFlagInternal(*pContainerProxy);
325 Layout::CheckFlagInternal(LayoutItemProxy& containerProxy)
329 LayoutMatchMode widthMode = containerProxy.GetItemWidthMatchMode();
330 LayoutMatchMode heightMode = containerProxy.GetItemHeightMatchMode();
331 ItemAlign align = containerProxy.GetItemAlignment();
333 if (widthMode == NONE_MODE && heightMode == NONE_MODE)
335 updateFlag |= UPDATEFLAG_NONE_MODE;
338 if (widthMode == MATCH_PARENT || heightMode == MATCH_PARENT)
340 updateFlag |= UPDATEFLAG_MATCH_PARENT;
343 if (widthMode == WRAP_CONTENT || heightMode == WRAP_CONTENT)
345 updateFlag |= UPDATEFLAG_WRAPCONTENT;
348 if (align.HAlign != ITEM_HORIZONTAL_ALIGN_LEFT || align.VAlign != ITEM_VERTICAL_ALIGN_TOP)
350 updateFlag |= UPDATEFLAG_ALIGNMENT;
353 return static_cast <LayoutUpdateFlag>(updateFlag);
358 Layout::UpdateLayout(void)
360 result r = UpdateLayoutInternal(UPDATEFLAG_NO_FLAG);
361 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Failed to UpdateLayout.", GetErrorMessage(r));
362 r = DetermineWindowRectToAllItem();
363 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Failed to DetermineWindowRectToAllItem.", GetErrorMessage(r));
369 Layout::DetermineWindowRectToAllItem(void)
373 LayoutItemProxy* pContainerProxy = GetContainerProxy();
374 SysTryReturn(NID_UI, pContainerProxy != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Did not set the container.");
378 if (__determineState)
381 __determineState = false;
386 Layout* pParentLayout = pContainerProxy->GetParentLayout();
387 SysTryReturn(NID_UI, pParentLayout != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Layout does not exist.");
388 return pParentLayout->DetermineWindowRectToAllItem();
395 Layout::OnDetermine(void)
397 ProxyList* pProxyList = GetProxyList();
398 SysAssertf(pProxyList != null, "ProxyList is invalid");
400 LayoutItemProxy* pContainerProxy = GetContainerProxy();
401 SysTryReturn(NID_UI, pContainerProxy != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Did not set the container.");
404 pContainerProxy->GetItemWindowRect(itemRect);
405 pContainerProxy->SetItemWindowRect(itemRect, false);
407 ProxyListNode* pCurNode = pProxyList->GetFirstNode();
408 while (pCurNode != null)
410 LayoutItemProxy* pItemProxy = pCurNode->GetItemProxy();
411 LayoutContainer* pCurContainer = dynamic_cast<LayoutContainer*>(pItemProxy->GetItem());
412 SysTryReturn(NID_UI, pCurContainer != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] This item is not container.");
414 pCurContainer->GetLayout()->OnDetermine();
416 pCurNode = pProxyList->GetNextNode(*pCurNode);
424 Layout::SetUpdateState(bool state)
428 LayoutItemProxy* pContainerProxy = GetContainerProxy();
430 SysTryReturnVoidResult(NID_UI, pContainerProxy != null, E_INVALID_STATE, "[E_INVALID_STATE] Did not set the container.");
434 __updateState = state;
438 Layout* pParentLayout = pContainerProxy->GetParentLayout();
439 SysTryReturnVoidResult(NID_UI, pParentLayout != null, E_INVALID_STATE, "[E_INVALID_STATE] Layout does not exist.");
440 return pParentLayout->SetUpdateState(state);
445 Layout::PartialUpdateLayout(void)
449 LayoutUpdateFlag flag = CheckCurrentFlag();
450 SysTryReturn(NID_UI, flag != UPDATEFLAG_ERROR, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] CheckCurrentFlag is failed.");
452 return UpdateLayoutInternal(flag);
457 Layout::OnLayoutTrigger(Layout& layout, bool layoutUpdating)
461 LayoutItemProxy* pContainerProxy = layout.GetContainerProxy();
463 SysTryReturn(NID_UI, pContainerProxy != null, E_INVALID_STATE, E_INVALID_STATE,
464 "[E_INVALID_STATE] Did not set the container.");
466 LayoutRect containerRect;
467 pContainerProxy->GetItemWindowRect(containerRect);
468 LayoutContainer* pContainer = dynamic_cast <LayoutContainer*>(pContainerProxy->GetItem());
469 SysTryReturn(NID_UI, pContainer != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Did not set the container.");
470 pContainer->ConvertWindowToClientBounds(containerRect, containerRect);
472 LayoutSize containerSize;
473 containerSize.w = containerRect.w;
474 containerSize.h = containerRect.h;
475 pContainer->SetIntendedWindowSize(containerSize);
477 return layout.OnLayout(containerRect.w, containerRect.h, layoutUpdating);
481 Layout::UpdateLayoutInternal(LayoutUpdateFlag updateFlag)
485 LayoutItemProxy* pContainerProxy = GetContainerProxy();
487 SysTryReturn(NID_UI, pContainerProxy != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Did not set the container.");
493 if (updateFlag == UPDATEFLAG_NO_FLAG)
495 __updateState = false;
497 __determineState = true;
498 return OnLayoutTrigger(*this, true);
507 Layout* pParentLayout = pContainerProxy->GetParentLayout();
508 SysTryReturn(NID_UI, pParentLayout != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Layout does not exist.");
510 if (updateFlag != UPDATEFLAG_NO_FLAG)
512 if (updateFlag & UPDATEFLAG_MATCH_PARENT || updateFlag & UPDATEFLAG_ALIGNMENT || pParentLayout->__partialUpdateState)
514 LayoutUpdateFlag parentflag = CheckParentFlag();
515 SysTryReturn(NID_UI, parentflag != UPDATEFLAG_ERROR, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] CheckParentFlag is failed.");
517 if (parentflag & UPDATEFLAG_MATCH_PARENT || parentflag & UPDATEFLAG_ALIGNMENT || pParentLayout->__partialUpdateState)
519 return pParentLayout->UpdateLayoutInternal(parentflag);
523 return OnLayoutTrigger(*pParentLayout, true);
528 return OnLayoutTrigger(*this, true);
532 return pParentLayout->UpdateLayoutInternal(UPDATEFLAG_NO_FLAG);
537 Layout::AddItem(LayoutItem& addItem)
540 result r = CheckItem(addItem);
541 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
543 LayoutItemProxy* pItemProxy = CreateProxy(addItem);
544 SysTryReturn(NID_UI, pItemProxy != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Failed to create proxy of layout item.");
546 LayoutContainer* pContainer = dynamic_cast <LayoutContainer*>(&addItem);
547 if (pContainer != null)
549 LayoutListNode* pCurNode = pContainer->GetLayoutList()->GetFirstNode();
553 Layout* pLayout = pCurNode->GetLayout();
556 if (pLayout->__rootLayout == true)
558 delete pLayout->__pContainerProxy;
559 pLayout->__pContainerProxy = pItemProxy;
560 pLayout->__rootLayout = false;
563 pCurNode = pContainer->GetLayoutList()->GetNextNode(*pCurNode);
567 if (__pProxyList->AddNode(*pItemProxy) == null)
569 pItemProxy->Destroy();
571 SysTryReturn(NID_UI, false, r, r, "[%s] Failed to add layout item.", GetErrorMessage(r));
574 pItemProxy->SetParentLayout(this);
575 pItemProxy->SetParentContainer(static_cast <LayoutContainer*>(__pContainerProxy->GetItem()));
578 pItemProxy->GetItemWindowRect(itemRect);
580 pItemProxy->SetItemBaseRect(itemRect);
582 SetUpdateState(true);
587 Layout::RemoveItem(const LayoutItem& removeItem)
591 LayoutItemProxy* pItemProxy = __pProxyList->GetItemProxy(removeItem);
592 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_STATE, E_INVALID_STATE,
593 "[E_INVALID_STATE] Control dose not belong to layout.");
595 result r = __pProxyList->RemoveNode(*pItemProxy);
598 SysLog(NID_UI, "Failed to RemoveNode()");
599 SysTryReturn(NID_UI, r, r, r, "[E_INVALID_STATE] Failed to remove layout item.");
602 pItemProxy->SetParentLayout(null);
603 pItemProxy->SetParentContainer(null);
604 pItemProxy->Destroy();
610 Layout::OnChangeViewPosition(int viewPosX, int viewPosY)
614 if (viewPosX != 0 || viewPosY != 0)
616 ProxyListNode* pNode = __pProxyList->GetFirstNode();
617 while (pNode != null)
619 LayoutItemProxy* pItemProxy = pNode->GetItemProxy();
620 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_STATE, E_INVALID_STATE,
621 "[E_INVALID_STATE] Layout proxy list error.");
624 pItemProxy->GetItemWindowRect(itemRect);
625 itemRect.x += viewPosX;
626 itemRect.y += viewPosY;
627 result r = pItemProxy->SetItemWindowRect(itemRect);
633 pNode = __pProxyList->GetNextNode(*pNode);
644 Layout::CalculateAlignment(const LayoutAlignMode alignMode)
648 result r = E_SUCCESS;
649 bool needMeasure = false;
651 SysAssertf(__pProxyList != null, "ProxyList is invalid.");
653 ProxyListNode* pNode = __pProxyList->GetFirstNode();
654 while (pNode != null)
656 LayoutItemProxy* pItemProxy = pNode->GetItemProxy();
657 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Layout proxy list error.");
659 ItemAlign align = pItemProxy->GetItemAlignment();
660 ItemMargin margin = pItemProxy->GetItemMargin();
662 pItemProxy->GetItemWindowRect(itemRect);
664 if (alignMode == BOTH || alignMode == HORIZONTALONLY)
666 switch (align.HAlign)
668 case ITEM_HORIZONTAL_ALIGN_LEFT:
670 itemRect.x = __x + margin.left;
674 case ITEM_HORIZONTAL_ALIGN_CENTER:
676 itemRect.x = (__x + (__width / 2)) - (itemRect.w / 2);
680 case ITEM_HORIZONTAL_ALIGN_RIGHT:
682 itemRect.x = (__x + __width) - (itemRect.w + margin.right);
686 case ITEM_HORIZONTAL_ALIGN_LEFT_RIGHT:
688 itemRect.x = __x + margin.left;
689 itemRect.w = __width - (margin.left + margin.right);
694 #ifdef NOT_SUPPORT_NEGATIVE_SIZE
702 if (alignMode == BOTH || alignMode == VERTICALONLY)
704 switch (align.VAlign)
706 case ITEM_VERTICAL_ALIGN_TOP:
708 itemRect.y = __y + margin.top;
712 case ITEM_VERTICAL_ALIGN_MIDDLE:
714 itemRect.y = (__y + (__height / 2)) - (itemRect.h / 2);
718 case ITEM_VERTICAL_ALIGN_BOTTOM:
720 itemRect.y = (__y + __height) - (itemRect.h + margin.bottom);
724 case ITEM_VERTICAL_ALIGN_TOP_BOTTOM:
726 itemRect.y = __y + margin.top;
727 itemRect.h = __height - (margin.top + margin.bottom);
732 #ifdef NOT_SUPPORT_NEGATIVE_SIZE
742 r = pItemProxy->Measure(itemRect.w, itemRect.h);
747 pItemProxy->GetMeasuredSize(itemRect.w, itemRect.h);
749 r = pItemProxy->SetItemWindowRect(itemRect);
755 pNode = __pProxyList->GetNextNode(*pNode);
762 Layout::SetContainer(LayoutContainer* pContainer)
766 if (pContainer == null)
768 ProxyListNode* pNode = __pProxyList->GetFirstNode();
769 while (pNode != null)
771 LayoutItemProxy* pItemProxy = pNode->GetItemProxy();
772 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_STATE, E_INVALID_STATE,
773 "[E_INVALID_STATE] Layout proxy list error.");
775 pItemProxy->SetParentContainer(null);
777 pNode = __pProxyList->GetNextNode(*pNode);
780 if (__pContainerProxy)
784 //__pContainerProxy->Destroy();
785 delete __pContainerProxy;
786 __rootLayout = false;
788 __pContainerProxy = null;
794 LayoutContainer* pParentContainer = pContainer->GetParentContainer();
795 if (pParentContainer == null)
797 if (__rootLayout && __pContainerProxy != null)
799 delete __pContainerProxy;
802 __pContainerProxy = CreateProxy(*pContainer);
803 SysTryReturn(NID_UI, __pContainerProxy != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Failed to create proxy of layout item.");
809 Layout* pParentLayout = pParentContainer->GetLayout();
810 SysTryReturn(NID_UI, pParentLayout, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Did not set a layout.");
812 ProxyListNode* pNode = pParentLayout->__pProxyList->GetFirstNode();
813 while (pNode != null)
815 LayoutItemProxy* pItemProxy = pNode->GetItemProxy();
816 if (pItemProxy == null)
818 return E_INVALID_STATE;
820 LayoutContainer* pResultContainer = dynamic_cast <LayoutContainer*>(pItemProxy->GetItem());
821 if (pContainer == pResultContainer)
823 if (__rootLayout && __pContainerProxy != null)
825 delete __pContainerProxy;
826 __rootLayout = false;
828 __pContainerProxy = pItemProxy;
831 pNode = __pProxyList->GetNextNode(*pNode);
839 Layout::CreateProxy(LayoutItem& item)
841 return LayoutItemProxy::Create(*this, item);
845 Layout::SetRootLayout(bool rootCheck)
847 __rootLayout = rootCheck;
851 Layout::CheckItem(const LayoutItem& checkItem)
855 ProxyListNode* pNode = __pProxyList->GetFirstNode();
856 while (pNode != null)
858 LayoutItemProxy* pItemProxy = pNode->GetItemProxy();
859 SysTryReturn(NID_UI, pItemProxy != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Invalid proxy list node.");
861 LayoutItem* pItem = pItemProxy->GetItem();
862 SysTryReturn(NID_UI, pItem != null, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Invalid layout item.");
864 SysTryReturn(NID_UI, &checkItem != pItem, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Control belong to layout.");
866 pNode = __pProxyList->GetNextNode(*pNode);
873 Layout::HasLayoutContainer(void)
875 return __pContainerProxy != null;
879 Layout::SetPartialUpdateFlag(bool flag)
881 __partialUpdateState = flag;
885 Layout::SetItemList(ProxyList* pItemList)
887 __pProxyList = pItemList;
891 Layout::GetProxyList(void) const
896 }}} // Tizen::Ui::_Layout