Changed indicator bg color.
[platform/framework/native/uifw.git] / src / ui / controls / FUiCtrlGroupContainer.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 /*
19  * @file                FUiCtrlGroupContainer.cpp
20  * @brief       This is the implementation file for GroupContainer class.
21  */
22
23 #include <FBaseErrors.h>
24 #include <FBaseSysLog.h>
25 #include <FUiCtrlGroupContainer.h>
26 #include "FUiCtrl_GroupContainerImpl.h"
27
28
29 using namespace Tizen::Graphics;
30
31 namespace Tizen { namespace Ui { namespace Controls
32 {
33
34 GroupContainer::GroupContainer(void)
35 {
36
37 }
38
39 GroupContainer::~GroupContainer(void)
40 {
41
42 }
43
44 result
45 GroupContainer::Construct(const Rectangle& rect, int rowCount, int columnCount, int lineWidth)
46 {
47         result r = E_SUCCESS;
48         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
49         SysAssertf(pGroupContainerImpl == null, "Already constructed! Calling Construct() twice or more on a same instance is not allowed for this class.");
50
51         pGroupContainerImpl = _GroupContainerImpl::CreateGroupContainerImplN(this, rect, rowCount, columnCount, lineWidth);
52
53         r = GetLastResult();
54         SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
55
56         pGroupContainerImpl->Initialize();
57         r = GetLastResult();
58         _pControlImpl = pGroupContainerImpl;
59
60         return r;
61 }
62
63 result
64 GroupContainer::Construct(const FloatRectangle& rect, int rowCount, int columnCount, float lineWidth)
65 {
66         result r = E_SUCCESS;
67         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
68         SysAssertf(pGroupContainerImpl == null, "Already constructed! Calling Construct() twice or more on a same instance is not allowed for this class.");
69
70         pGroupContainerImpl = _GroupContainerImpl::CreateGroupContainerImplFN(this, rect, rowCount, columnCount, lineWidth);
71
72         r = GetLastResult();
73         SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
74
75         pGroupContainerImpl->Initialize();
76         r = GetLastResult();
77         _pControlImpl = pGroupContainerImpl;
78
79         return r;
80 }
81
82 result
83 GroupContainer::AddControlAt(Control& control, int rowIndex, int columnIndex)
84 {
85         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
86         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
87
88         return pGroupContainerImpl->AddControlAt(control, rowIndex, columnIndex);
89 }
90
91 const Control*
92 GroupContainer::GetControlAt(int rowIndex, int columnIndex) const
93 {
94         _GroupContainerImpl* pGroupContainerImpl = const_cast<_GroupContainerImpl*>(_GroupContainerImpl::GetInstance(*this));
95         SysAssertf(pGroupContainerImpl != null, "Not yet constructed! Construct() should be called before use.");
96
97         return pGroupContainerImpl->GetControlAt(rowIndex, columnIndex);
98 }
99
100 Control*
101 GroupContainer::GetControlAt(int rowIndex, int columnIndex)
102 {
103         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
104         SysAssertf(pGroupContainerImpl != null, "Not yet constructed! Construct() should be called before use.");
105
106         return pGroupContainerImpl->GetControlAt(rowIndex, columnIndex);
107 }
108
109 result
110 GroupContainer::RemoveControlAt(int rowIndex, int columnIndex)
111 {
112         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
113         SysAssertf(pGroupContainerImpl != null, "Not yet constructed! Construct() should be called before use.");
114
115         return pGroupContainerImpl->RemoveControlAt(rowIndex, columnIndex);
116 }
117
118 result
119 GroupContainer::SetColumnWidth(int columnIndex, int width)
120 {
121         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
122         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
123
124         return pGroupContainerImpl->SetColumnWidth(columnIndex, width);
125 }
126
127 result
128 GroupContainer::SetColumnWidth(int columnIndex, float width)
129 {
130         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
131         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
132
133         return pGroupContainerImpl->SetColumnWidth(columnIndex, width);
134 }
135
136 int
137 GroupContainer::GetColumnWidth(int columnIndex) const
138 {
139         _GroupContainerImpl* pGroupContainerImpl = const_cast<_GroupContainerImpl*>(_GroupContainerImpl::GetInstance(*this));
140         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
141
142         return pGroupContainerImpl->GetColumnWidth(columnIndex);
143 }
144
145 float
146 GroupContainer::GetColumnWidthF(int columnIndex) const
147 {
148         _GroupContainerImpl* pGroupContainerImpl = const_cast<_GroupContainerImpl*>(_GroupContainerImpl::GetInstance(*this));
149         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
150
151         return pGroupContainerImpl->GetColumnWidthF(columnIndex);
152 }
153
154 result
155 GroupContainer::SetRowHeight(int rowIndex, int height)
156 {
157         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
158         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
159
160         return pGroupContainerImpl->SetRowHeight(rowIndex, height);
161 }
162
163 result
164 GroupContainer::SetRowHeight(int rowIndex, float height)
165 {
166         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
167         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
168
169         return pGroupContainerImpl->SetRowHeight(rowIndex, height);
170 }
171
172 int
173 GroupContainer::GetRowHeight(int rowIndex) const
174 {
175         _GroupContainerImpl* pGroupContainerImpl = const_cast<_GroupContainerImpl*>(_GroupContainerImpl::GetInstance(*this));
176         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
177
178         return pGroupContainerImpl->GetRowHeight(rowIndex);
179 }
180
181 float
182 GroupContainer::GetRowHeightF(int rowIndex) const
183 {
184         _GroupContainerImpl* pGroupContainerImpl = const_cast<_GroupContainerImpl*>(_GroupContainerImpl::GetInstance(*this));
185         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
186
187         return pGroupContainerImpl->GetRowHeightF(rowIndex);
188 }
189
190 result
191 GroupContainer::Merge(int rowStartIndex, int columnStartIndex, int rowCount, int columnCount)
192 {
193         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
194         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
195
196         return pGroupContainerImpl->Merge(rowStartIndex, columnStartIndex, rowCount, columnCount);
197 }
198
199 result
200 GroupContainer::SetChildResizingEnabled(int rowIndex, int columnIndex, bool enable)
201 {
202         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
203         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
204
205         return pGroupContainerImpl->SetChildResizingEnabled(rowIndex, columnIndex, enable);
206 }
207
208 result
209 GroupContainer::SetMargin(int rowIndex, int columnIndex, int leftMargin, int topMargin, int rightMargin, int bottomMargin)
210 {
211         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
212         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
213
214         return pGroupContainerImpl->SetMargin(rowIndex, columnIndex, leftMargin, topMargin, rightMargin, bottomMargin);
215 }
216
217 result
218 GroupContainer::SetMargin(int rowIndex, int columnIndex, float leftMargin, float topMargin, float rightMargin, float bottomMargin)
219 {
220         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
221         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
222
223         return pGroupContainerImpl->SetMargin(rowIndex, columnIndex, leftMargin, topMargin, rightMargin, bottomMargin);
224 }
225
226 result
227 GroupContainer::Split(int rowIndex, int columnIndex)
228 {
229         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
230         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
231
232         return pGroupContainerImpl->Split(rowIndex, columnIndex);
233 }
234
235 Rectangle
236 GroupContainer::GetBoundsAt(int rowIndex, int columnIndex) const
237 {
238         const _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
239         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
240
241         return pGroupContainerImpl->GetBoundsAt(rowIndex, columnIndex);
242 }
243
244 FloatRectangle
245 GroupContainer::GetBoundsAtF(int rowIndex, int columnIndex) const
246 {
247         const _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
248         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
249
250         return pGroupContainerImpl->GetBoundsAtF(rowIndex, columnIndex);
251 }
252
253 result
254 GroupContainer::SetColumnStretchable(int columnIndex, bool stretchable)
255 {
256         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
257         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
258
259         return pGroupContainerImpl->SetColumnStretchable(columnIndex, stretchable);
260 }
261
262 bool
263 GroupContainer::IsColumnStretchable(int columnIndex) const
264 {
265         _GroupContainerImpl* pGroupContainerImpl = const_cast<_GroupContainerImpl*>(_GroupContainerImpl::GetInstance(*this));
266         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
267
268         return pGroupContainerImpl->IsColumnStretchable(columnIndex);
269 }
270
271 result
272 GroupContainer::SetRowStretchable(int rowIndex, bool stretchable)
273 {
274         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
275         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
276
277         return pGroupContainerImpl->SetRowStretchable(rowIndex, stretchable);
278 }
279
280 bool
281 GroupContainer::IsRowStretchable(int rowIndex) const
282 {
283         _GroupContainerImpl* pGroupContainerImpl = const_cast<_GroupContainerImpl*>(_GroupContainerImpl::GetInstance(*this));
284         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
285
286         return pGroupContainerImpl->IsRowStretchable(rowIndex);
287 }
288
289
290 Color
291 GroupContainer::GetBackgroundColor(void) const
292 {
293         const _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
294         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
295
296         return pGroupContainerImpl->GetBackgroundColor();
297 }
298
299 void
300 GroupContainer::SetBackgroundColor(const Color& color)
301 {
302         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
303         SysAssertf(pGroupContainerImpl != null, "Not yet constructed! Construct() should be called before use.");
304
305         pGroupContainerImpl->SetBackgroundColor(color);
306         result r = GetLastResult();
307         SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, "[E_SYSTEM] A system error has occurred.");
308 }
309
310 Color
311 GroupContainer::GetLineColor(void) const
312 {
313         _GroupContainerImpl* pGroupContainerImpl = const_cast<_GroupContainerImpl*>(_GroupContainerImpl::GetInstance(*this));
314         SysAssertf(pGroupContainerImpl != null, "Not yet constructed. Construct() should be called before use.");
315
316         return pGroupContainerImpl->GetLineColor();
317 }
318
319 void
320 GroupContainer::SetLineColor(const Color& color)
321 {
322         _GroupContainerImpl* pGroupContainerImpl = _GroupContainerImpl::GetInstance(*this);
323         SysAssertf(pGroupContainerImpl != null, "Not yet constructed! Construct() should be called before use.");
324
325         pGroupContainerImpl->SetLineColor(color);
326         result r = GetLastResult();
327         SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Unable to set the line color.");
328 }
329
330 }}} //Tizen::Ui::Controls
331