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 FUiGridLayout.cpp
19 * @brief This is the implementation file for GridLayout class.
21 * This file contains the implementation of GridLayout class.
24 #include <FUiGridLayout.h>
25 #include <FUiControl.h>
26 #include "FUi_GridLayoutImpl.h"
28 namespace Tizen { namespace Ui
31 GridLayout::GridLayout()
35 GridLayout::~GridLayout()
40 GridLayout::Construct(int maxRow, int maxColumn)
44 SysTryReturn(NID_UI, (maxRow - 1 >= 0) && (maxColumn - 1 >= 0), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
46 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
47 SysAssertf(pGridLayoutImpl == null, "Already constructed. Calling Construct() twice or more on a same instance is not allowed for this class.");
49 pGridLayoutImpl = _GridLayoutImpl::CreateGridLayoutImplN(this, maxRow, maxColumn);
50 result r = GetLastResult();
51 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
53 _LayoutImpl::SetLayoutImpl(this, pGridLayoutImpl);
59 GridLayout::GetLayoutType(void) const
65 GridLayout::GetRowCount() const
69 const _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
70 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
72 return pGridLayoutImpl->GetRowCount();
76 GridLayout::GetColumnCount() const
80 const _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
81 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
83 return pGridLayoutImpl->GetColumnCount();
87 GridLayout::SetColumnStretchable(int columnIndex, bool stretchable)
91 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
92 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
94 SysTryReturn(NID_UI, (columnIndex >= 0) && (columnIndex <= GetColumnCount() - 1), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The given parameter is out of range.");
96 result r = pGridLayoutImpl->SetColumnStretchable(columnIndex, stretchable);
97 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
103 GridLayout::SetColumnShrinkable(int columnIndex, bool shrinkable)
107 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
108 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
110 SysTryReturn(NID_UI, (columnIndex >= 0) && (columnIndex <= GetColumnCount() - 1), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The given parameter is out of range.");
112 result r = pGridLayoutImpl->SetColumnShrinkable(columnIndex, shrinkable);
113 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
119 GridLayout::SetColumnCollapsed(int columnIndex, bool collapsed)
123 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
124 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
126 SysTryReturn(NID_UI, (columnIndex >= 0) && (columnIndex <= GetColumnCount() - 1), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The given parameter is out of range.");
128 result r = pGridLayoutImpl->SetColumnCollapsed(columnIndex, collapsed);
129 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
135 GridLayout::SetAllColumnsStretchable(bool stretchable)
139 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
140 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
142 result r = pGridLayoutImpl->SetAllColumnsStretchable(stretchable);
143 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
149 GridLayout::SetAllColumnsShrinkable(bool shrinkable)
153 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
154 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
156 result r = pGridLayoutImpl->SetAllColumnsShrinkable(shrinkable);
157 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
163 GridLayout::SetColumnSpacing(int columnIndex, int space)
167 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
168 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
170 SysTryReturn(NID_UI, (columnIndex >= 0) && (columnIndex <= GetColumnCount() - 1), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The given parameter is out of range.");
171 SysTryReturn(NID_UI, space >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
173 result r = pGridLayoutImpl->SetColumnSpacing(columnIndex, space);
174 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
180 GridLayout::SetRowStretchable(int rowIndex, bool stretchable)
184 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
185 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
187 SysTryReturn(NID_UI, (rowIndex >= 0) && (rowIndex <= GetRowCount() - 1), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The given parameter is out of range.");
189 result r = pGridLayoutImpl->SetRowStretchable(rowIndex, stretchable);
190 SysTryReturn(NID_UI, GetLastResult() == E_SUCCESS, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(r));
196 GridLayout::SetRowShrinkable(int rowIndex, bool shrinkable)
200 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
201 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
203 SysTryReturn(NID_UI, (rowIndex >= 0) && (rowIndex <= GetRowCount() - 1), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The given parameter is out of range.");
205 result r = pGridLayoutImpl->SetRowShrinkable(rowIndex, shrinkable);
206 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
212 GridLayout::SetRowCollapsed(int rowIndex, bool collapsed)
216 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
217 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
219 SysTryReturn(NID_UI, (rowIndex >= 0) && (rowIndex <= GetRowCount() - 1), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The given parameter is out of range.");
221 result r = pGridLayoutImpl->SetRowCollapsed(rowIndex, collapsed);
222 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
228 GridLayout::SetAllRowsStretchable(bool stretchable)
232 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
233 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
235 result r = pGridLayoutImpl->SetAllRowsStretchable(stretchable);
236 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
242 GridLayout::SetAllRowsShrinkable(bool shrinkable)
245 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
246 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
248 result r = pGridLayoutImpl->SetAllRowsShrinkable(shrinkable);
249 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
255 GridLayout::SetRowSpacing(int rowIndex, int space)
259 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
260 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
262 SysTryReturn(NID_UI, (rowIndex >= 0) && (rowIndex <= GetRowCount() - 1), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The given parameter is out of range.");
263 SysTryReturn(NID_UI, space >= 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
265 result r = pGridLayoutImpl->SetRowSpacing(rowIndex, space);
266 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
272 GridLayout::SetPosition(Control& childControl, int rowStartIndex, int columnStartIndex, int rowSpan, int columnSpan)
276 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
277 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
279 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
280 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
282 result r = pGridLayoutImpl->SetPosition(*pControlImpl, rowStartIndex, columnStartIndex, rowSpan, columnSpan);
283 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
289 GridLayout::SetAlignment(Control& childControl, LayoutHorizontalAlignment horAlign, LayoutVerticalAlignment vertAlign)
293 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
294 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
296 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
297 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
299 result r = pGridLayoutImpl->SetAlignment(*pControlImpl, horAlign, vertAlign);
300 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
306 GridLayout::SetMargin(Control& childControl, int left, int right, int top, int bottom)
310 SysTryReturn(NID_UI, (left >= 0) && (right >= 0) && (top >= 0) && (bottom >= 0), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The given parameter is invalid.");
312 _GridLayoutImpl* pGridLayoutImpl = _GridLayoutImpl::GetInstance(*this);
313 SysAssertf(pGridLayoutImpl != null, "Not yet constructed. Construct() should be called before use.");
315 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(childControl);
316 SysTryReturn(NID_UI, pControlImpl, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This instance is not constructed.");
318 result r = pGridLayoutImpl->SetMargin(*pControlImpl, left, right, top, bottom);
319 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));