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 FUiHorizontalBoxLayout.cpp
19 * @brief This is the implementation file for HorizontalBoxLayout class.
21 * This file contains the implementation of HorizontalBoxLayout class.
24 #include <FUiHorizontalBoxLayout.h>
25 #include <FUiControl.h>
26 #include <FApp_AppInfo.h>
27 #include "FUi_HorizontalBoxLayoutImpl.h"
29 namespace Tizen { namespace Ui
34 #define GET_CONTROL_IMPL(control) \
35 _ControlImpl * pControlImpl = null; \
36 pControlImpl = _ControlImpl::GetInstance(control); \
37 SysTryReturn(NID_UI, pControlImpl, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] pControlImpl is not allocated yet.\n")
40 HorizontalBoxLayout::HorizontalBoxLayout()
44 HorizontalBoxLayout::~HorizontalBoxLayout()
49 HorizontalBoxLayout::Construct(HorizontalDirection direction)
53 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
54 SysAssertf(pHorizontalBoxLayoutImpl == null, "Already constructed. Calling Construct() twice or more on a same instance is not allowed for this class.");
56 pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::CreateHorizontalBoxLayoutImplN(this, direction);
57 result r = GetLastResult();
58 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
60 _LayoutImpl::SetLayoutImpl(this, pHorizontalBoxLayoutImpl);
66 HorizontalBoxLayout::GetLayoutType(void) const
68 return LAYOUT_HORIZONTAL_BOX;
72 HorizontalBoxLayout::GetDirection(HorizontalDirection& direction) const
76 const _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
77 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
79 result r = pHorizontalBoxLayoutImpl->GetDirection(direction);
80 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
86 HorizontalBoxLayout::SetVerticalAlignment(Control& childControl, LayoutVerticalAlignment alignment)
90 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
91 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
93 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
94 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
96 result r = pHorizontalBoxLayoutImpl->SetVerticalAlignment(*pControlImpl, alignment);
97 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
103 HorizontalBoxLayout::SetSpacing(Control& childControl, int space)
107 SysTryReturn(NID_UI, space >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
109 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
110 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
112 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
113 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
115 result r = pHorizontalBoxLayoutImpl->SetSpacing(*pControlImpl, space);
116 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
122 HorizontalBoxLayout::SetVerticalMargin(Control& childControl, int top, int bottom)
126 SysTryReturn(NID_UI, (top >= 0) && (bottom >= 0), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
128 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
129 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
131 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
132 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
134 result r = pHorizontalBoxLayoutImpl->SetVerticalMargin(*pControlImpl, top, bottom);
135 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
141 HorizontalBoxLayout::SetWidth(Control& childControl, int width)
145 SysTryReturn(NID_UI, width >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
147 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
148 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
150 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
151 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
153 result r = pHorizontalBoxLayoutImpl->SetWidth(*pControlImpl, width);
154 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
160 HorizontalBoxLayout::SetHorizontalFitPolicy(Control& childControl, FitPolicy policy)
164 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
165 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
167 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
168 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
170 if (!Tizen::App::_AppInfo::IsOspCompat())
172 if (policy == FIT_POLICY_PARENT)
179 result r = pHorizontalBoxLayoutImpl->SetItemHorizontalFitPolicy(*pControlImpl, policy);
180 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
186 HorizontalBoxLayout::SetHeight(Control& childControl, int height)
190 SysTryReturn(NID_UI, height >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
192 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
193 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
195 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
196 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
198 result r = pHorizontalBoxLayoutImpl->SetHeight(*pControlImpl, height);
199 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
205 HorizontalBoxLayout::SetVerticalFitPolicy(Control& childControl, FitPolicy policy)
209 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
210 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
212 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
213 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
215 result r = pHorizontalBoxLayoutImpl->SetItemVerticalFitPolicy(*pControlImpl, policy);
216 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
222 HorizontalBoxLayout::SetWeight(Control& childControl, float weight)
226 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
227 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
229 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
230 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
232 result r = pHorizontalBoxLayoutImpl->SetWeight(*pControlImpl, weight);
233 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));