modify license, permission and remove ^M char
[platform/framework/native/uifw.git] / src / ui / FUiHorizontalBoxLayout.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
10 //
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.
16 //
17 /**
18  * @file                FUiHorizontalBoxLayout.cpp
19  * @brief       This is the implementation file for HorizontalBoxLayout class.
20  *
21  * This file contains the implementation of HorizontalBoxLayout class.
22  */
23
24 #include <FUiHorizontalBoxLayout.h>
25 #include <FUiControl.h>
26 #include <FApp_AppInfo.h>
27 #include "FUi_HorizontalBoxLayoutImpl.h"
28 #include "FUi_CoordinateSystemUtils.h"
29
30 namespace Tizen { namespace Ui
31 {
32
33 namespace
34 {
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")
39 }
40
41 HorizontalBoxLayout::HorizontalBoxLayout()
42 {
43 }
44
45 HorizontalBoxLayout::~HorizontalBoxLayout()
46 {
47 }
48
49 result
50 HorizontalBoxLayout::Construct(HorizontalDirection direction)
51 {
52         ClearLastResult();
53
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.");
56
57         pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::CreateHorizontalBoxLayoutImplN(this, direction);
58         result r = GetLastResult();
59         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
60
61         _LayoutImpl::SetLayoutImpl(this, pHorizontalBoxLayoutImpl);
62
63         return E_SUCCESS;
64 }
65
66 Tizen::Ui::LayoutType
67 HorizontalBoxLayout::GetLayoutType(void) const
68 {
69         return LAYOUT_HORIZONTAL_BOX;
70 }
71
72 result
73 HorizontalBoxLayout::GetDirection(HorizontalDirection& direction) const
74 {
75         ClearLastResult();
76
77         const _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
78         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
79
80         result r = pHorizontalBoxLayoutImpl->GetDirection(direction);
81         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
82
83         return r;
84 }
85
86 result
87 HorizontalBoxLayout::SetVerticalAlignment(Control& childControl, LayoutVerticalAlignment alignment)
88 {
89         ClearLastResult();
90
91         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
92         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
93
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.");
96
97         result r = pHorizontalBoxLayoutImpl->SetVerticalAlignment(*pControlImpl, alignment);
98         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
99
100         return r;
101 }
102
103 result
104 HorizontalBoxLayout::SetSpacing(Control& childControl, int space)
105 {
106         ClearLastResult();
107
108         SysTryReturn(NID_UI, space >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
109
110         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
111         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
112
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.");
115
116         result r = pHorizontalBoxLayoutImpl->SetSpacing(*pControlImpl, _CoordinateSystemUtils::ConvertToFloat(space));
117         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
118
119         return r;
120 }
121
122 result
123 HorizontalBoxLayout::SetSpacing(Control& childControl, float space)
124 {
125         ClearLastResult();
126
127         SysTryReturn(NID_UI, space >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
128
129         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
130         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
131
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.");
134
135         result r = pHorizontalBoxLayoutImpl->SetSpacing(*pControlImpl, space);
136         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
137
138         return r;
139 }
140
141 result
142 HorizontalBoxLayout::SetVerticalMargin(Control& childControl, int top, int bottom)
143 {
144         ClearLastResult();
145
146         SysTryReturn(NID_UI, (top >= 0) && (bottom >= 0), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
147
148         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
149         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
150
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.");
153
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));
158
159         return r;
160 }
161
162 result
163 HorizontalBoxLayout::SetVerticalMargin(Control& childControl, float top, float bottom)
164 {
165         ClearLastResult();
166
167         SysTryReturn(NID_UI, (top >= 0) && (bottom >= 0), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
168
169         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
170         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
171
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.");
174
175         result r = pHorizontalBoxLayoutImpl->SetVerticalMargin(*pControlImpl, top, bottom);
176         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
177
178         return r;
179 }
180
181 result
182 HorizontalBoxLayout::SetWidth(Control& childControl, int width)
183 {
184         ClearLastResult();
185
186         SysTryReturn(NID_UI, width >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
187
188         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
189         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
190
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.");
193
194         result r = pHorizontalBoxLayoutImpl->SetWidth(*pControlImpl, _CoordinateSystemUtils::ConvertToFloat(width));
195         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
196
197         return r;
198 }
199
200 result
201 HorizontalBoxLayout::SetWidth(Control& childControl, float width)
202 {
203         ClearLastResult();
204
205         SysTryReturn(NID_UI, width >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
206
207         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
208         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
209
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.");
212
213         result r = pHorizontalBoxLayoutImpl->SetWidth(*pControlImpl, width);
214         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
215
216         return r;
217 }
218
219 result
220 HorizontalBoxLayout::SetHorizontalFitPolicy(Control& childControl, FitPolicy policy)
221 {
222         ClearLastResult();
223
224         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
225         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
226
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.");
229
230         if (!Tizen::App::_AppInfo::IsOspCompat())
231         {
232                 if (policy == FIT_POLICY_PARENT)
233                 {
234                         return E_SUCCESS;
235                 }
236         }
237
238         result r = pHorizontalBoxLayoutImpl->SetItemHorizontalFitPolicy(*pControlImpl, policy);
239         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
240
241         return r;
242 }
243
244 result
245 HorizontalBoxLayout::SetHeight(Control& childControl, int height)
246 {
247         ClearLastResult();
248
249         SysTryReturn(NID_UI, height >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
250
251         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
252         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
253
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.");
256
257         result r = pHorizontalBoxLayoutImpl->SetHeight(*pControlImpl, _CoordinateSystemUtils::ConvertToFloat(height));
258         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
259
260         return r;
261 }
262
263 result
264 HorizontalBoxLayout::SetHeight(Control& childControl, float height)
265 {
266         ClearLastResult();
267
268         SysTryReturn(NID_UI, height >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
269
270         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
271         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
272
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.");
275
276         result r = pHorizontalBoxLayoutImpl->SetHeight(*pControlImpl, height);
277         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
278
279         return r;
280 }
281
282 result
283 HorizontalBoxLayout::SetVerticalFitPolicy(Control& childControl, FitPolicy policy)
284 {
285         ClearLastResult();
286
287         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
288         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
289
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.");
292
293         result r = pHorizontalBoxLayoutImpl->SetItemVerticalFitPolicy(*pControlImpl, policy);
294         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
295
296         return r;
297 }
298
299 result
300 HorizontalBoxLayout::SetWeight(Control& childControl, float weight)
301 {
302         ClearLastResult();
303
304         _HorizontalBoxLayoutImpl* pHorizontalBoxLayoutImpl = _HorizontalBoxLayoutImpl::GetInstance(*this);
305         SysAssertf(pHorizontalBoxLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
306
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.");
309
310         result r = pHorizontalBoxLayoutImpl->SetWeight(*pControlImpl, weight);
311         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
312
313         return r;
314 }
315
316 }} // Tizen::Ui