Revert " modify license, permission and remove ^M char"
[framework/osp/uifw.git] / src / ui / controls / FUiCtrl_TableViewItemImpl.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://floralicense.org/license/
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        FUiCtrl_TableViewItemImpl.cpp
20  * @brief       This is the implementation file for _TableViewItemImpl class.
21  *
22  * This file contains the implementation of _TableViewItemImpl class.
23  */
24
25 #include <FUiAnimControlAnimator.h>
26 #include <FUiCtrlTableViewContextItem.h>
27 #include <FGrp_CanvasGpPrimitive.h>
28 #include "FUiCtrl_TableViewItemImpl.h"
29 #include "FUiCtrl_TableViewItem.h"
30 #include "FUi_LayoutImpl.h"
31 #include "FUi_ResourceManager.h"
32 #include "FUi_ResourceSizeInfo.h"
33 #include "FUi_ResourceManager.h"
34 #include "FUi_CoordinateSystemUtils.h"
35
36 using namespace Tizen::Base;
37 using namespace Tizen::Graphics;
38
39 namespace Tizen { namespace Ui { namespace Controls
40 {
41
42 Tizen::Graphics::Dimension
43 _TableViewItemImpl::TableViewItemSizeInfo::GetDefaultMinimumSize(_ControlOrientation orientation) const
44 {
45         return Dimension(0.0f, 0.0f);
46 }
47
48 Tizen::Graphics::FloatDimension
49 _TableViewItemImpl::TableViewItemSizeInfo::GetDefaultMinimumSizeF(_ControlOrientation orientation) const
50 {
51         return FloatDimension(0.0f, 0.0f);
52 }
53
54 _TableViewItemImpl*
55 _TableViewItemImpl::GetInstance(TableViewItemBase& tableViewItem)
56 {
57         return static_cast <_TableViewItemImpl*>(tableViewItem._pControlImpl);
58 }
59
60 const _TableViewItemImpl*
61 _TableViewItemImpl::GetInstance(const TableViewItemBase& tableViewItem)
62 {
63         return static_cast <const _TableViewItemImpl*>(tableViewItem._pControlImpl);
64 }
65
66 _TableViewItemImpl::_TableViewItemImpl(TableViewItemBase* pPublic, _TableViewItem* pCore, Layout* pPublicPortraitLayout, Layout* pPublicLandscapeLayout)
67         : _ContainerImpl(pPublic, pCore, pPublicPortraitLayout, pPublicLandscapeLayout)
68 {
69         if (pPublicPortraitLayout != null || pPublicLandscapeLayout != null)
70         {
71                 GetCore().SetItemLayoutEnabled(true);
72         }
73 }
74
75 _TableViewItemImpl::~_TableViewItemImpl(void)
76 {
77
78 }
79
80 const char*
81 _TableViewItemImpl::GetPublicClassName(void) const
82 {
83         return "Tizen::Ui::Controls::TableViewItem";
84 }
85
86 const TableViewItem&
87 _TableViewItemImpl::GetPublic(void) const
88 {
89         return static_cast <const TableViewItem&>(_ContainerImpl::GetPublic());
90 }
91
92 TableViewItem&
93 _TableViewItemImpl::GetPublic(void)
94 {
95         return static_cast <TableViewItem&>(_ContainerImpl::GetPublic());
96 }
97
98 const _TableViewItem&
99 _TableViewItemImpl::GetCore(void) const
100 {
101         return static_cast <const _TableViewItem&>(_ControlImpl::GetCore());
102 }
103
104 _TableViewItem&
105 _TableViewItemImpl::GetCore(void)
106 {
107         return static_cast <_TableViewItem&>(_ControlImpl::GetCore());
108 }
109
110 _TableViewItemImpl*
111 _TableViewItemImpl::CreateTableViewItemImplN(TableViewItemBase* pPublic, const Tizen::Graphics::FloatDimension& itemSize, TableViewAnnexStyle style, Layout* pPublicPortraitLayout, Layout* pPublicLandscapeLayout)
112 {
113         result r = E_SUCCESS;
114
115         r = GET_SIZE_INFO(TableViewItem).CheckInitialSizeValidF(FloatDimension(itemSize.width, itemSize.height), _CONTROL_ORIENTATION_PORTRAIT);
116         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
117
118         if (pPublicPortraitLayout != null)
119         {
120                 _LayoutImpl* pPortraitLayoutImpl = _LayoutImpl::GetInstance(*pPublicPortraitLayout);
121                 SysTryReturn(NID_UI_CTRL, pPortraitLayoutImpl != null, null, E_INVALID_ARG, "[E_INVALID_ARG] Portrait layout is invalid object");
122         }
123
124         if (pPublicLandscapeLayout != null)
125         {
126                 _LayoutImpl* pLandscapeLayoutImpl = _LayoutImpl::GetInstance(*pPublicLandscapeLayout);
127                 SysTryReturn(NID_UI_CTRL, pLandscapeLayoutImpl != null, null, E_INVALID_ARG, "[E_INVALID_ARG] Landscape layout is invalid object");
128         }
129
130         _TableViewItem* pCore = _TableViewItem::CreateTableViewItemN(itemSize.height);
131         SysTryReturn(NID_UI_CTRL, pCore != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
132
133         _TableViewItemImpl* pImpl = new (std::nothrow) _TableViewItemImpl(pPublic, pCore, pPublicPortraitLayout, pPublicLandscapeLayout);
134         SysTryReturn(NID_UI_CTRL, pImpl != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
135
136         r = pImpl->Construct(itemSize, style);
137         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
138
139         r = pImpl->SetSize(itemSize);
140         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
141
142         return pImpl;
143
144 CATCH:
145         delete pImpl;
146         delete pCore;
147         return null;
148 }
149
150 result
151 _TableViewItemImpl::Construct(const FloatDimension& itemSize, const TableViewAnnexStyle style)
152 {
153         result r = E_SUCCESS;
154
155         SysTryReturn(NID_UI_CTRL, (itemSize.width >= 0 && itemSize.height >= 0), E_INVALID_ARG, E_INVALID_ARG, ("[E_INVALID_ARG] The item size should be greater than 0")); //CONVERTFLOAT_1
156
157         GetCore().SetItemStyle(style);
158         GetCore().SetItemWidth(itemSize.width);
159
160         return r;
161 }
162
163 result
164 _TableViewItemImpl::SetContextItem(_TableViewItemImpl* pItem)
165 {
166         if (pItem == null)
167         {
168                 GetCore().SetContextItem(null);
169                 return E_SUCCESS;
170         }
171
172         GetCore().SetContextItem(&pItem->GetCore());
173
174         _TableViewItemImpl* pItemImpl = pItem;
175
176         TableViewContextItem* pContextItem = static_cast <TableViewContextItem*>(&pItemImpl->_ContainerImpl::GetPublic());
177         pItemImpl->GetCore().SetAppInfo(pContextItem);
178
179         return E_SUCCESS;
180 }
181
182 result
183 _TableViewItemImpl::SetSelectionStyle(TableViewItemSelectionStyle style)
184 {
185         return GetCore().SetSelectionStyle(style);
186 }
187
188 TableViewItemSelectionStyle
189 _TableViewItemImpl::GetSelectionStyle(void) const
190 {
191         return GetCore().GetSelectionStyle();
192 }
193
194 result
195 _TableViewItemImpl::SetBackgroundBitmap(TableViewItemDrawingStatus status, const Bitmap* pBitmap)
196 {
197         SysTryReturn(NID_UI_CTRL, pBitmap, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] It is invalid argument");
198
199         ListItemState itemState;
200
201         switch (status)
202         {
203         case TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL:
204                 itemState = LIST_ITEM_STATE_NORMAL;
205                 break;
206
207         case TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED:
208                 itemState = LIST_ITEM_STATE_PRESSED;
209                 break;
210
211         case TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED:
212                 itemState = LIST_ITEM_STATE_HIGHLIGHTED;
213                 break;
214
215         default:
216                 return E_SYSTEM;
217         }
218
219         GetCore().SetItemBackgroundBitmap(itemState, pBitmap);
220
221         return E_SUCCESS;
222 }
223
224 result
225 _TableViewItemImpl::SetBackgroundColor(TableViewItemDrawingStatus status, const Color& color)
226 {
227         ListItemState itemState;
228
229         switch (status)
230         {
231         case TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL:
232                 itemState = LIST_ITEM_STATE_NORMAL;
233                 break;
234
235         case TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED:
236                 itemState = LIST_ITEM_STATE_PRESSED;
237                 break;
238
239         case TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED:
240                 itemState = LIST_ITEM_STATE_HIGHLIGHTED;
241                 break;
242
243         default:
244                 return E_SYSTEM;
245         }
246
247         GetCore().SetItemBackgroundColor(itemState, color);
248
249         return E_SUCCESS;
250 }
251
252 Color
253 _TableViewItemImpl::GetBackgroundColor(TableViewItemDrawingStatus status) const
254 {
255         ListItemState itemState;
256         switch (status)
257         {
258         case TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL:
259                 itemState = LIST_ITEM_STATE_NORMAL;
260                 break;
261
262         case TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED:
263                 itemState = LIST_ITEM_STATE_PRESSED;
264                 break;
265
266         case TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED:
267                 itemState = LIST_ITEM_STATE_HIGHLIGHTED;
268                 break;
269
270         default:
271                 return Color(0);
272         }
273
274         return GetCore().GetItemBackgroundColor(itemState);
275 }
276
277 result
278 _TableViewItemImpl::SetSimpleItemContents(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBitmap, bool groupType)
279 {
280         return GetCore().SetSimpleItemContents(text, pBitmap, groupType);
281 }
282
283 result
284 _TableViewItemImpl::SetSimpleItemTextColor(const Tizen::Graphics::Color& color, TableViewItemDrawingStatus status)
285 {
286         return GetCore().SetSimpleTextColor(color, status);
287 }
288
289 Tizen::Graphics::Color
290 _TableViewItemImpl::GetSimpleItemTextColor(TableViewItemDrawingStatus status) const
291 {
292         return GetCore().GetSimpleItemTextColor(status);
293 }
294
295 result
296 _TableViewItemImpl::SetSimpleItemTextSize(int size)
297 {
298         return GetCore().SetSimpleItemTextSize(size);
299 }
300
301 int
302 _TableViewItemImpl::GetSimpleItemTextSize(void) const
303 {
304         return GetCore().GetSimpleItemTextSize();
305 }
306
307 float
308 _TableViewItemImpl::GetAnnexWidth(TableViewAnnexStyle style)
309 {
310         return _TableViewItem::GetAnnexWidth(style);
311 }
312
313 result
314 _TableViewItemImpl::SetIndividualSelectionEnabled(const Tizen::Ui::_ControlImpl& controlImpl, bool enable)
315 {
316         return GetCore().SetIndividualSelectionEnabled(controlImpl.GetCore(), enable);
317 }
318
319 bool
320 _TableViewItemImpl::IsIndividualSelectionEnabled(const Tizen::Ui::_ControlImpl& controlImpl)
321 {
322         return GetCore().IsIndividualSelectionEnabled(controlImpl.GetCore());
323 }
324
325
326 }}} // Tizen::Ui::Controls