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 FUi_HorizontalBoxLayoutImpl.cpp
19 * @brief This is the implementation file for _HorizontalBoxLayoutImpl class.
21 * This file contains the implementation of _HorizontalBoxLayoutImpl class.
24 #include "FUi_HorizontalBoxLayoutImpl.h"
25 #include "FUi_CoordinateSystemUtils.h"
27 namespace Tizen { namespace Ui
32 static const int CONVERT_ERROR_CODE = -1;
34 _Layout::LinearLayoutDirection
35 ConvertEnum(HorizontalDirection val)
39 case HORIZONTAL_DIRECTION_RIGHTWARD:
40 return _Layout::LINEAR_LEFT_TO_RIGHT;
42 case HORIZONTAL_DIRECTION_LEFTWARD:
43 return _Layout::LINEAR_RIGHT_TO_LEFT;
46 return _Layout::LINEAR_NONE_DIRECTION;
51 ConvertEnum(_Layout::LinearLayoutDirection val)
55 case _Layout::LINEAR_LEFT_TO_RIGHT:
56 return HORIZONTAL_DIRECTION_RIGHTWARD;
58 case _Layout::LINEAR_RIGHT_TO_LEFT:
59 return HORIZONTAL_DIRECTION_LEFTWARD;
62 return static_cast <HorizontalDirection>(CONVERT_ERROR_CODE);
67 // _HorizontalBoxLayoutImpl implementation
68 _HorizontalBoxLayoutImpl::_HorizontalBoxLayoutImpl(HorizontalBoxLayout* pPublicLayout, _Layout::LinearLayout* pCoreLayout)
69 : _LayoutImpl(pPublicLayout, pCoreLayout)
73 _HorizontalBoxLayoutImpl::~_HorizontalBoxLayoutImpl()
78 _HorizontalBoxLayoutImpl::GetLayoutType(void) const
80 return LAYOUT_HORIZONTAL_BOX;
84 _HorizontalBoxLayoutImpl::Construct(HorizontalDirection direction)
88 _Layout::LinearLayoutDirection linearDirection = ConvertEnum(direction);
89 SysTryReturn(NID_UI, linearDirection != _Layout::LINEAR_NONE_DIRECTION,
90 E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid data.");
92 result r = GetCore().Initialize(_Layout::LINEAR_HORIZONTAL, linearDirection);
98 _HorizontalBoxLayoutImpl::GetDirection(HorizontalDirection& direction) const
102 _Layout::LinearLayoutDirection internalDirection;
104 result r = GetCore().GetDirection(internalDirection);
105 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
107 direction = ConvertEnum(internalDirection);
113 _HorizontalBoxLayoutImpl::SetVerticalAlignment(_ControlImpl& control, LayoutVerticalAlignment vertAlign)
115 result r = SetAlignment(control, LAYOUT_HORIZONTAL_ALIGN_LEFT, vertAlign);
121 _HorizontalBoxLayoutImpl::SetSpacing(_ControlImpl& control, float space)
125 _Layout::LayoutItem& layoutItem = control.GetLayoutContainer();
127 result r = GetCore().SetItemSpacing(layoutItem, space);
133 _HorizontalBoxLayoutImpl::SetVerticalMargin(_ControlImpl& control, float top, float bottom)
135 result r = SetMargin(control, 0.0f, 0.0f, top, bottom);
141 _HorizontalBoxLayoutImpl::SetWidth(_ControlImpl& control, float width)
145 result r = SetHorizontalFitPolicy(control, FIT_POLICY_FIXED);
146 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
148 _Layout::LayoutRect rect;
149 r = GetItemBaseRect(control, rect);
150 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
153 r = SetItemBaseRect(control, rect);
159 _HorizontalBoxLayoutImpl::SetItemHorizontalFitPolicy(_ControlImpl& control, FitPolicy policy)
161 result r = SetHorizontalFitPolicy(control, policy);
167 _HorizontalBoxLayoutImpl::SetHeight(_ControlImpl& control, float height)
171 result r = SetVerticalFitPolicy(control, FIT_POLICY_FIXED);
172 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
174 _Layout::LayoutRect rect;
175 r = GetItemBaseRect(control, rect);
176 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
179 r = SetItemBaseRect(control, rect);
185 _HorizontalBoxLayoutImpl::SetItemVerticalFitPolicy(_ControlImpl& control, FitPolicy policy)
187 result r = SetVerticalFitPolicy(control, policy);
193 _HorizontalBoxLayoutImpl::SetWeight(_ControlImpl& control, float weight)
197 _Layout::LayoutItem& layoutItem = control.GetLayoutContainer();
199 result r = GetCore().SetItemWeight(layoutItem, weight);
204 _HorizontalBoxLayoutImpl*
205 _HorizontalBoxLayoutImpl::CreateHorizontalBoxLayoutImplN(HorizontalBoxLayout* pPublicLayout, HorizontalDirection direction)
209 _Layout::LinearLayout* pCoreLayout = null;
210 _HorizontalBoxLayoutImpl* pImplLayout = null;
211 result r = E_SUCCESS;
213 pCoreLayout = _Layout::LinearLayout::CreateLinearLayoutN();
215 SysTryReturn(NID_UI, pCoreLayout != null, null, r, "[%s] Propagating.", GetErrorMessage(r));
217 pImplLayout = new (std::nothrow) _HorizontalBoxLayoutImpl(pPublicLayout, pCoreLayout);
218 r = CheckConstruction(pCoreLayout, pImplLayout);
219 SysTryReturn(NID_UI, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
221 r = pImplLayout->Construct(direction);
225 SysTryReturn(NID_UI, false, null, E_INVALID_ARG, "[E_INVALID_ARG] The Direction is invalid.");
232 _HorizontalBoxLayoutImpl::GetPublicClassName(void) const
234 return "Tizen::Ui::HorizontalBoxLayout";
237 const HorizontalBoxLayout&
238 _HorizontalBoxLayoutImpl::GetPublic(void) const
240 return static_cast <const HorizontalBoxLayout&>(_LayoutImpl::GetPublic());
244 _HorizontalBoxLayoutImpl::GetPublic(void)
246 return static_cast <HorizontalBoxLayout&>(_LayoutImpl::GetPublic());
249 const _Layout::LinearLayout&
250 _HorizontalBoxLayoutImpl::GetCore(void) const
252 return static_cast <const _Layout::LinearLayout&>(_LayoutImpl::GetCore());
255 _Layout::LinearLayout&
256 _HorizontalBoxLayoutImpl::GetCore(void)
258 return static_cast <_Layout::LinearLayout&>(_LayoutImpl::GetCore());
261 const _HorizontalBoxLayoutImpl*
262 _HorizontalBoxLayoutImpl::GetInstance(const HorizontalBoxLayout& layout)
264 return static_cast <const _HorizontalBoxLayoutImpl*>(_LayoutImpl::GetInstance(layout));
267 _HorizontalBoxLayoutImpl*
268 _HorizontalBoxLayoutImpl::GetInstance(HorizontalBoxLayout& layout)
270 return static_cast <_HorizontalBoxLayoutImpl*>(_LayoutImpl::GetInstance(layout));