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 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"
28 #include "FUi_CoordinateSystemUtils.h"
30 namespace Tizen { namespace Ui
35 #define GET_CONTROL_IMPL(control) \
36 _ControlImpl * pControlImpl = null; \
37 pControlImpl = _ControlImpl::GetInstance(control); \
38 SysTryReturn(NID_UI, pControlImpl, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] pControlImpl is not allocated yet.\n")
41 HorizontalBoxLayout::HorizontalBoxLayout()
45 HorizontalBoxLayout::~HorizontalBoxLayout()
50 HorizontalBoxLayout::Construct(HorizontalDirection direction)
54 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
55 SysAssertf(pHorizontalBoxLayoutImpl == null, "Already constructed. Calling Construct() twice or more on a same instance is not allowed for this class.");
57 pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::CreateHorizontalBoxLayoutImplN(this, direction);
58 result r = GetLastResult();
59 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
61 _LayoutImpl::SetLayoutImpl(this, pHorizontalBoxLayoutImpl);
67 HorizontalBoxLayout::GetLayoutType(void) const
69 return LAYOUT_HORIZONTAL_BOX;
73 HorizontalBoxLayout::GetDirection(HorizontalDirection& direction) const
77 const _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
78 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
80 result r = pHorizontalBoxLayoutImpl->GetDirection(direction);
81 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
87 HorizontalBoxLayout::SetVerticalAlignment(Control& childControl, LayoutVerticalAlignment alignment)
91 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
92 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
94 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
95 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
97 result r = pHorizontalBoxLayoutImpl->SetVerticalAlignment(*pControlImpl, alignment);
98 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
104 HorizontalBoxLayout::SetSpacing(Control& childControl, int space)
108 SysTryReturn(NID_UI, space >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
110 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
111 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
113 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
114 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
116 result r = pHorizontalBoxLayoutImpl->SetSpacing(*pControlImpl, _CoordinateSystemUtils::ConvertToFloat(space));
117 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
123 HorizontalBoxLayout::SetSpacing(Control& childControl, float space)
127 SysTryReturn(NID_UI, space >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
129 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
130 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
132 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
133 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
135 result r = pHorizontalBoxLayoutImpl->SetSpacing(*pControlImpl, space);
136 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
142 HorizontalBoxLayout::SetVerticalMargin(Control& childControl, int top, int bottom)
146 SysTryReturn(NID_UI, (top >= 0) && (bottom >= 0), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
148 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
149 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
151 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
152 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
154 float floatTop = _CoordinateSystemUtils::ConvertToFloat(top);
155 float floatBottom = _CoordinateSystemUtils::ConvertToFloat(bottom);
156 result r = pHorizontalBoxLayoutImpl->SetVerticalMargin(*pControlImpl, floatTop, floatBottom);
157 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
163 HorizontalBoxLayout::SetVerticalMargin(Control& childControl, float top, float bottom)
167 SysTryReturn(NID_UI, (top >= 0) && (bottom >= 0), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
169 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
170 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
172 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
173 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
175 result r = pHorizontalBoxLayoutImpl->SetVerticalMargin(*pControlImpl, top, bottom);
176 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
182 HorizontalBoxLayout::SetWidth(Control& childControl, int width)
186 SysTryReturn(NID_UI, width >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
188 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
189 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
191 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
192 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
194 result r = pHorizontalBoxLayoutImpl->SetWidth(*pControlImpl, _CoordinateSystemUtils::ConvertToFloat(width));
195 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
201 HorizontalBoxLayout::SetWidth(Control& childControl, float width)
205 SysTryReturn(NID_UI, width >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
207 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
208 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
210 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
211 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
213 result r = pHorizontalBoxLayoutImpl->SetWidth(*pControlImpl, width);
214 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
220 HorizontalBoxLayout::SetHorizontalFitPolicy(Control& childControl, FitPolicy policy)
224 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
225 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
227 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
228 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
230 if (!Tizen::App::_AppInfo::IsOspCompat())
232 if (policy == FIT_POLICY_PARENT)
238 result r = pHorizontalBoxLayoutImpl->SetItemHorizontalFitPolicy(*pControlImpl, policy);
239 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
245 HorizontalBoxLayout::SetHeight(Control& childControl, int height)
249 SysTryReturn(NID_UI, height >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
251 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
252 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
254 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
255 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
257 result r = pHorizontalBoxLayoutImpl->SetHeight(*pControlImpl, _CoordinateSystemUtils::ConvertToFloat(height));
258 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
264 HorizontalBoxLayout::SetHeight(Control& childControl, float height)
268 SysTryReturn(NID_UI, height >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
270 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
271 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
273 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
274 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
276 result r = pHorizontalBoxLayoutImpl->SetHeight(*pControlImpl, height);
277 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
283 HorizontalBoxLayout::SetVerticalFitPolicy(Control& childControl, FitPolicy policy)
287 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
288 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
290 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
291 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
293 result r = pHorizontalBoxLayoutImpl->SetItemVerticalFitPolicy(*pControlImpl, policy);
294 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
300 HorizontalBoxLayout::SetWeight(Control& childControl, float weight)
304 _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
305 SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
307 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
308 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
310 result r = pHorizontalBoxLayoutImpl->SetWeight(*pControlImpl, weight);
311 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));