Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / controls / FUiCtrl_IconListViewImpl.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_IconListViewImpl.cpp
20  * @brief               This is the implementation file for the _IconListViewImpl class.
21  */
22
23 //Includes
24 #include <FBaseSysLog.h>
25
26 #include "FUi_UiBuilder.h"
27 #include "FUiCtrl_IconListView.h"
28 #include "FUiCtrl_IconListViewImpl.h"
29 #include "FUiCtrl_IconListViewItemEvent.h"
30 #include "FUiCtrl_IconListViewItemEventArg.h"
31 #include "FUiCtrl_ScrollEvent.h"
32 #include "FUiCtrl_ScrollEventArg.h"
33
34 using namespace Tizen::Base;
35 using namespace Tizen::Graphics;
36 using namespace Tizen::Ui;
37
38 namespace Tizen { namespace Ui { namespace Controls
39 {
40
41 _IconListViewImpl::_IconListViewImpl(IconListView* pIconListView, _IconListView* pCore)
42         : _ControlImpl(pIconListView, pCore)
43         , __pIconListView(pCore)
44         , __pIconListViewItemEvent(null)
45         , __pScrollEvent(null)
46 {
47         // Do nothing
48 }
49
50 _IconListViewImpl::~_IconListViewImpl(void)
51 {
52         Dispose();
53 }
54
55 _IconListViewImpl*
56 _IconListViewImpl::CreateIconListViewImplN(IconListView* pIconListView)
57 {
58         _IconListView* pCore = _IconListView::CreateIconListViewN();
59         SysTryReturn(NID_UI_CTRL, (pCore != null), null , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
60
61         _IconListViewImpl* pImpl = new (std::nothrow) _IconListViewImpl(pIconListView, pCore);
62
63         result r = CheckConstruction(pCore, pImpl);
64         SysTryReturn(NID_UI, (r == E_SUCCESS), null , r, "[%s] Propagating.", GetErrorMessage(r));
65
66         return pImpl;
67 }
68
69 _IconListViewImpl*
70 _IconListViewImpl::GetInstance(IconListView& iconListView)
71 {
72         return static_cast<_IconListViewImpl*>(iconListView._pControlImpl);
73 }
74
75 const _IconListViewImpl*
76 _IconListViewImpl::GetInstance(const IconListView& iconListView)
77 {
78         return static_cast<const _IconListViewImpl*>(iconListView._pControlImpl);
79 }
80
81 const char*
82 _IconListViewImpl::GetPublicClassName(void) const
83 {
84         return "Tizen::Ui::Controls::IconListView";
85 }
86
87 IconListView&
88 _IconListViewImpl::GetPublic(void)
89 {
90         return static_cast <IconListView&>(_ControlImpl::GetPublic());
91 }
92
93 result
94 _IconListViewImpl::Dispose(void)
95 {
96         __pIconListView = null;
97
98         if (__pIconListViewItemEvent != null)
99         {
100                 delete __pIconListViewItemEvent;
101                 __pIconListViewItemEvent = null;
102         }
103
104         if (__pScrollEvent != null)
105         {
106                 delete __pScrollEvent;
107                 __pScrollEvent = null;
108         }
109
110         return E_SUCCESS;
111 }
112
113 result
114 _IconListViewImpl::Initialize(IconListView* pIconListView, const Dimension& itemBitmapSize, IconListViewStyle style,
115                 IconListViewScrollDirection scrollDirection, IconListViewScrollStyle scrollStyle)
116 {
117         SysTryReturn(NID_UI_CTRL, (__pIconListView != null), E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Unable to create IconListView.");
118
119         result r = E_SUCCESS;
120         Rectangle itemBitmapBounds(0, 0, itemBitmapSize.width, itemBitmapSize.height);
121
122         r = __pIconListView->SetStyle(style);
123         SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
124
125         r = __pIconListView->SetScrollStyle(scrollStyle);
126         SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
127
128         r = __pIconListView->SetScrollDirection(scrollDirection);
129         SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
130
131         r = __pIconListView->SetItemBitmapBounds(itemBitmapBounds);
132         SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
133
134         __pIconListViewItemEvent = new (std::nothrow) _IconListViewItemEvent;
135         SysTryCatch(NID_UI_CTRL, (__pIconListViewItemEvent != null), r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
136                            "[E_OUT_OF_MEMORY] Memory allocation failed.");
137
138         r = __pIconListViewItemEvent->Construct(*pIconListView);
139         SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
140
141         r = __pIconListView->AddIconListItemEventListener(*this);
142         SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
143
144         __pScrollEvent = new (std::nothrow) _ScrollEvent();
145         SysTryCatch(NID_UI_CTRL, (__pScrollEvent != null), r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
146                            "[E_OUT_OF_MEMORY] Memory allocation failed/");
147
148         r = __pScrollEvent->Construct(*pIconListView);
149         SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
150
151         r = __pIconListView->AddScrollEventListener(*this);
152         SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
153
154         return r;
155 CATCH:
156         Dispose();
157         return r;
158 }
159
160 result
161 _IconListViewImpl::SetItemProvider(IIconListViewItemProvider& provider)
162 {
163         return __pIconListView->SetItemProvider(provider);
164 }
165
166 void
167 _IconListViewImpl::AddIconListViewItemEventListener(IIconListViewItemEventListener& listener)
168 {
169         result r = __pIconListViewItemEvent->AddListener(listener);
170         if (r == E_OBJ_ALREADY_EXIST)
171         {
172                 SysLogException(NID_UI_CTRL, (r = E_SYSTEM), "[E_SYSTEM] A system error has been occurred. The same instance alerady exists in the event listener list.");
173         }
174         else
175         {
176                 SysTryReturnVoidResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
177         }
178
179         SetLastResult(r);
180 }
181
182 void
183 _IconListViewImpl::RemoveIconListViewItemEventListener(IIconListViewItemEventListener& listener)
184 {
185         result r = __pIconListViewItemEvent->RemoveListener(listener);
186         if (r == E_OBJ_NOT_FOUND)
187         {
188                 SysLogException(NID_UI_CTRL, (r = E_SYSTEM), "[E_SYSTEM] A system error has been occurred. The specified listener does not exist in the event listener list.");
189         }
190         else
191         {
192                 SysTryReturnVoidResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
193         }
194
195         SetLastResult(r);
196 }
197
198 void
199 _IconListViewImpl::AddScrollEventListener(IScrollEventListener& listener)
200 {
201         result r = __pScrollEvent->AddListener(listener);
202         if (r == E_OBJ_ALREADY_EXIST)
203         {
204                 SysLogException(NID_UI_CTRL, (r = E_SYSTEM), "[E_SYSTEM] A system error has been occurred. The same instance alerady exists in the event listener list.");
205         }
206         else
207         {
208                 SysTryReturnVoidResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
209         }
210
211         SetLastResult(r);
212 }
213
214 void
215 _IconListViewImpl::RemoveScrollEventListener(IScrollEventListener& listener)
216 {
217         result r = __pScrollEvent->RemoveListener(listener);
218         if (r == E_OBJ_NOT_FOUND)
219         {
220                 SysLogException(NID_UI_CTRL, (r = E_SYSTEM), "[E_SYSTEM] A system error has been occurred. The specified listener does not exist in the event listener list.");
221         }
222         else
223         {
224                 SysTryReturnVoidResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
225         }
226
227         SetLastResult(r);
228 }
229
230 result
231 _IconListViewImpl::SetBackgroundBitmap(const Bitmap* pBitmap)
232 {
233         return __pIconListView->SetBackgroundBitmap(pBitmap);
234 }
235
236 result
237 _IconListViewImpl::SetMargin(MarginType type, int value)
238 {
239         return __pIconListView->SetMargin(type, value);
240 }
241
242 int
243 _IconListViewImpl::GetMargin(MarginType type) const
244 {
245         return __pIconListView->GetMargin(type);
246 }
247
248 result
249 _IconListViewImpl::SetItemSpacing(int horizontalSpacing, int verticalSpacing)
250 {
251         return __pIconListView->SetItemSpacing(horizontalSpacing, verticalSpacing);
252 }
253
254 int
255 _IconListViewImpl::GetItemHorizontalSpacing(void) const
256 {
257         return __pIconListView->GetItemHorizontalSpacing();
258 }
259
260 int
261 _IconListViewImpl::GetItemVerticalSpacing(void) const
262 {
263         return __pIconListView->GetItemVerticalSpacing();
264 }
265
266 result
267 _IconListViewImpl::SetItemChecked(int index, bool check)
268 {
269         return __pIconListView->SetItemChecked(index, check);
270 }
271
272 bool
273 _IconListViewImpl::IsItemChecked(int index) const
274 {
275         return __pIconListView->IsItemChecked(index);
276 }
277
278 int
279 _IconListViewImpl::GetItemIndexFromPosition(int x, int y) const
280 {
281         return __pIconListView->GetItemIndexFromPosition(x, y);
282 }
283
284 int
285 _IconListViewImpl::GetItemIndexFromPosition(const Point& position) const
286 {
287         return __pIconListView->GetItemIndexFromPosition(position);
288 }
289
290 result
291 _IconListViewImpl::SetTextHorizontalAlignment(HorizontalAlignment alignment)
292 {
293         return __pIconListView->SetTextHorizontalAlignment(alignment);
294 }
295
296 result
297 _IconListViewImpl::SetTextVerticalAlignment(IconListViewItemTextVerticalAlignment alignment)
298 {
299         return __pIconListView->SetTextVerticalAlignment(alignment);
300 }
301
302 HorizontalAlignment
303 _IconListViewImpl::GetTextHorizontalAlignment(void) const
304 {
305         ClearLastResult();
306         return __pIconListView->GetTextHorizontalAlignment();
307 }
308
309 IconListViewItemTextVerticalAlignment
310 _IconListViewImpl::GetTextVerticalAlignment(void) const
311 {
312         ClearLastResult();
313         return __pIconListView->GetTextVerticalAlignment();
314 }
315
316 result
317 _IconListViewImpl::SetTextOfEmptyList(const String& text)
318 {
319         return __pIconListView->SetTextOfEmptyList(text);
320 }
321
322 String
323 _IconListViewImpl::GetTextOfEmptyList(void) const
324 {
325         ClearLastResult();
326         return __pIconListView->GetTextOfEmptyList();
327 }
328
329 result
330 _IconListViewImpl::SetTextColorOfEmptyList(const Color& color)
331 {
332         return __pIconListView->SetTextColorOfEmptyList(color);
333 }
334
335 Color
336 _IconListViewImpl::GetTextColorOfEmptyList(void) const
337 {
338         ClearLastResult();
339         return __pIconListView->GetTextColorOfEmptyList();
340 }
341
342 result
343 _IconListViewImpl::SetItemTextColor(IconListViewItemDrawingStatus status, const Color& color)
344 {
345         return __pIconListView->SetItemTextColor(status, color);
346 }
347
348 Color
349 _IconListViewImpl::GetItemTextColor(IconListViewItemDrawingStatus status) const
350 {
351         return __pIconListView->GetItemTextColor(status);
352 }
353
354 result
355 _IconListViewImpl::SetItemTextSize(int size)
356 {
357         return __pIconListView->SetItemTextSize(size);
358 }
359
360 int
361 _IconListViewImpl::GetItemTextSize(void) const
362 {
363         ClearLastResult();
364         return __pIconListView->GetItemTextSize();
365 }
366
367 result
368 _IconListViewImpl::SetCheckBoxPosition(IconListViewCheckBoxPosition position)
369 {
370         return __pIconListView->SetCheckBoxPosition(position);
371 }
372
373 IconListViewCheckBoxPosition
374 _IconListViewImpl::GetCheckBoxPosition(void) const
375 {
376         ClearLastResult();
377         return __pIconListView->GetCheckBoxPosition();
378 }
379
380 result
381 _IconListViewImpl::SetTouchAnimationEnabled(bool enable)
382 {
383         return __pIconListView->SetTouchAnimationEnabled(enable);
384 }
385
386 bool
387 _IconListViewImpl::IsTouchAnimationEnabled(void) const
388 {
389         ClearLastResult();
390         return __pIconListView->IsTouchAnimationEnabled();
391 }
392
393 result
394 _IconListViewImpl::ScrollToItem(int index)
395 {
396         return __pIconListView->ScrollToItem(index);
397 }
398
399 result
400 _IconListViewImpl::ScrollByPixel(int pixel)
401 {
402         return __pIconListView->ScrollByPixel(pixel);
403 }
404
405 result
406 _IconListViewImpl::RefreshList(int index, ListRefreshType type)
407 {
408         return __pIconListView->RefreshList(index, type);
409 }
410
411 result
412 _IconListViewImpl::UpdateList(void)
413 {
414         return __pIconListView->UpdateList();
415 }
416
417 result
418 _IconListViewImpl::GetItemBitmapSize(int& width, int& height) const
419 {
420         return __pIconListView->GetItemBitmapSize(width, height);
421 }
422
423 Dimension
424 _IconListViewImpl::GetItemBitmapSize(void) const
425 {
426         return __pIconListView->GetItemBitmapSize();
427 }
428
429 result
430 _IconListViewImpl::GetItemSize(int& width, int& height) const
431 {
432         return __pIconListView->GetItemSize(width, height);
433 }
434
435 Dimension
436 _IconListViewImpl::GetItemSize(void) const
437 {
438         return __pIconListView->GetItemSize();
439 }
440
441 result
442 _IconListViewImpl::SetMagneticScrollSize(int scrollSize)
443 {
444         return __pIconListView->SetMagneticScrollSize(scrollSize);
445 }
446
447 int
448 _IconListViewImpl::GetMagneticScrollSize(void) const
449 {
450         ClearLastResult();
451         return __pIconListView->GetMagneticScrollSize();
452 }
453
454 int
455 _IconListViewImpl::GetItemCountPerAxis(void) const
456 {
457         return __pIconListView->GetItemCountPerAxis();
458 }
459
460 result
461 _IconListViewImpl::SetItemLayoutHorizontalAlignment(HorizontalAlignment alignment)
462 {
463         return __pIconListView->SetItemLayoutHorizontalAlignment(alignment);
464 }
465
466 result
467 _IconListViewImpl::SetItemLayoutVerticalAlignment(VerticalAlignment alignment)
468 {
469         return __pIconListView->SetItemLayoutVerticalAlignment(alignment);
470 }
471
472 HorizontalAlignment
473 _IconListViewImpl::GetItemLayoutHorizontalAlignment(void) const
474 {
475         ClearLastResult();
476         return __pIconListView->GetItemLayoutHorizontalAlignment();
477 }
478
479 VerticalAlignment
480 _IconListViewImpl::GetItemLayoutVerticalAlignment(void) const
481 {
482         ClearLastResult();
483         return __pIconListView->GetItemLayoutVerticalAlignment();
484 }
485
486 result
487 _IconListViewImpl::SetItemBorderStyle(IconListViewItemBorderStyle borderStyle)
488 {
489         return __pIconListView->SetItemBorderStyle(borderStyle);
490 }
491
492 IconListViewItemBorderStyle
493 _IconListViewImpl::GetItemBorderStyle(void) const
494 {
495         ClearLastResult();
496         return __pIconListView->GetItemBorderStyle();
497 }
498
499 result
500 _IconListViewImpl::SetBitmapOfEmptyList(const Bitmap* pBitmap)
501 {
502         return __pIconListView->SetBitmapOfEmptyList(pBitmap);
503 }
504
505 result
506 _IconListViewImpl::BeginReorderingMode(void)
507 {
508         return __pIconListView->SetReorderModeEnabled(true);
509 }
510
511 result
512 _IconListViewImpl::EndReorderingMode(void)
513 {
514         return __pIconListView->SetReorderModeEnabled(false);
515 }
516
517 bool
518 _IconListViewImpl::IsInReorderingMode(void) const
519 {
520         return __pIconListView->IsInReorderingMode();
521 }
522
523 void
524 _IconListViewImpl::OnIconListItemStateChanged(_IconListViewItemEventArg* pArg)
525 {
526         if (__pIconListViewItemEvent != null && pArg != null)
527         {
528                 _IconListViewItemEventArg* pEventArg = new (std::nothrow) _IconListViewItemEventArg(pArg->GetIndex(), pArg->GetEventType());
529                 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memroy allcation failed.");
530                 pEventArg->SetStatus(pArg->GetStatus());
531                 __pIconListViewItemEvent->Fire(*pEventArg);
532         }
533 }
534
535 void
536 _IconListViewImpl::OnIconListViewOverlayBitmapSelected(_IconListViewItemEventArg* pArg)
537 {
538         if (__pIconListViewItemEvent != null && pArg != null)
539         {
540                 _IconListViewItemEventArg* pEventArg = new (std::nothrow) _IconListViewItemEventArg(pArg->GetIndex(), pArg->GetEventType());
541                 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memroy allcation failed.");
542                 pEventArg->SetOverlayBitmapId(pArg->GetOverlayBitmapId());
543                 __pIconListViewItemEvent->Fire(*pEventArg);
544         }
545 }
546
547 void
548 _IconListViewImpl::OnIconListViewItemReordered(_IconListViewItemEventArg* pArg)
549 {
550         if (__pIconListViewItemEvent != null && pArg != null)
551         {
552                 _IconListViewItemEventArg* pEventArg = new (std::nothrow) _IconListViewItemEventArg(pArg->GetIndex(), pArg->GetEventType());
553                 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memroy allcation failed.");
554                 pEventArg->SetToIndex(pArg->GetToIndex());
555                 __pIconListViewItemEvent->Fire(*pEventArg);
556         }
557 }
558
559 void
560 _IconListViewImpl::OnScrollEndReached(_Control& source, ScrollEndEvent type)
561 {
562         if (__pScrollEvent == null)
563         {
564                 return;
565         }
566
567         _ScrollEventArg* pEventArg = _ScrollEventArg::GetScrollEventArgN(GetPublic(), type);
568         result r = GetLastResult();
569         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
570
571         __pScrollEvent->Fire(*pEventArg);
572
573         return;
574 CATCH:
575         delete pEventArg;
576 }
577
578 void
579 _IconListViewImpl::OnScrollPositionChanged(_Control& source, int scrollPos)
580 {
581         if (__pScrollEvent == null)
582         {
583                 return;
584         }
585
586         _ScrollEventArg* pEventArg = _ScrollEventArg::GetScrollEventArgN(GetPublic(), scrollPos);
587         result r = GetLastResult();
588         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
589
590         __pScrollEvent->Fire(*pEventArg);
591
592         return;
593 CATCH:
594         delete pEventArg;
595 }
596
597 void
598 _IconListViewImpl::OnScrollStopped(_Control& source)
599 {
600         if (__pScrollEvent == null)
601         {
602                 return;
603         }
604
605         _ScrollEventArg* pEventArg = _ScrollEventArg::GetScrollEventArgN(GetPublic());
606         result r = GetLastResult();
607         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
608
609         __pScrollEvent->Fire(*pEventArg);
610
611         return;
612 CATCH:
613         delete pEventArg;
614 }
615
616 class _IconListViewMaker
617         : public _UiBuilderControlMaker
618 {
619 public:
620         _IconListViewMaker(_UiBuilder* uibuilder)
621                 : _UiBuilderControlMaker(uibuilder)
622         {
623         }
624
625         virtual ~_IconListViewMaker()
626         {
627         }
628
629         static _UiBuilderControlMaker*
630         GetInstance(_UiBuilder* uibuilder)
631         {
632                 _IconListViewMaker* pIconListViewMaker = new (std::nothrow) _IconListViewMaker(uibuilder);
633
634                 return pIconListViewMaker;
635         }
636
637 protected:
638         virtual Control*
639         Make(_UiBuilderControl* pControl)
640         {
641                 SysTryReturn(NID_UI, (pControl != null), null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Invaild parameter is used.");
642                 _UiBuilderControlLayout* pControlProperty = null;
643                 GetProperty(pControl, &pControlProperty);
644                 SysTryReturn(NID_UI, (pControlProperty != null), null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Unable to read attributes.");
645
646                 IconListView* pIconListView = new (std::nothrow) IconListView;
647                 SysTryReturn(NID_UI, (pIconListView != null), null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
648
649                 ClearLastResult();
650
651                 Rectangle bounds;
652                 Rectangle rect;
653                 Dimension itemBitmapSize(100, 100);
654                 IconListViewStyle style = ICON_LIST_VIEW_STYLE_NORMAL;
655                 IconListViewScrollDirection scrollDirection = ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL;
656
657                 // Get Bounds
658                 rect = pControlProperty->GetRect();
659                 bounds.SetBounds(rect.x, rect.y, rect.width, rect.height);
660                 Tizen::Base::String elementString;
661
662                 // Get ItemBitmapSize(width)
663                 if (pControl->GetElement("itemBitmapWidth", elementString))
664                 {
665                         Base::Integer::Parse(elementString,itemBitmapSize.width);
666                 }
667
668                 // Get ItemBitmapSize(height)
669                 if (pControl->GetElement("itemBitmapHeight", elementString))
670                 {
671                         Base::Integer::Parse(elementString,itemBitmapSize.height);
672                 }
673
674                 // Get style
675                 Tizen::Base::String styleString;
676                 styleString = pControlProperty->GetStyle();
677                 if (styleString.IsEmpty() == false)
678                 {
679                         if (styleString.Equals(L"ICON_LIST_VIEW_STYLE_NORMAL", false))
680                         {
681                                 style = ICON_LIST_VIEW_STYLE_NORMAL;
682                         }
683                         else if (styleString.Equals(L"ICON_LIST_VIEW_STYLE_RADIO", false))
684                         {
685                                 style = ICON_LIST_VIEW_STYLE_RADIO;
686                         }
687                         else if (styleString.Equals(L"ICON_LIST_VIEW_STYLE_MARK", false))
688                         {
689                                 style = ICON_LIST_VIEW_STYLE_MARK;
690                         }
691                 }
692
693                 // Get scrollDirection
694                 if (pControl->GetElement("scrollDirection", elementString))
695                 {
696                         if (elementString.Equals(L"ICON_LIST_VIEW_SCROLL_DIRECTION_HORIZONTAL", false))
697                         {
698                                 scrollDirection = ICON_LIST_VIEW_SCROLL_DIRECTION_HORIZONTAL;
699                         }
700                         else if (elementString.Equals(L"ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL", false))
701                         {
702                                 scrollDirection = ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL;
703                         }
704                 }
705
706                 // Construct IconListView
707                 result r = pIconListView->Construct(bounds, itemBitmapSize, style, scrollDirection);
708                 SysTryCatch(NID_UI, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
709
710                 // Set BackgroundsBitmap
711                 if (pControl->GetElement("backgroundBitmapPath", elementString) || pControl->GetElement("BGBitmapPath", elementString))
712                 {
713                         Bitmap* pBackgroundBitmap = null;
714                         pBackgroundBitmap = LoadBitmapN(elementString);
715                         if (pBackgroundBitmap)
716                         {
717                                 pIconListView->SetBackgroundBitmap(pBackgroundBitmap);
718                                 delete pBackgroundBitmap;
719                         }
720                 }
721
722                 // Set BackgroundColor
723                 if (pControl->GetElement("backgroundColor", elementString) || pControl->GetElement("BGColor", elementString))
724                 {
725                         Color bgColor;
726                         ConvertStringToColor(elementString, bgColor);
727                         if (pControl->GetElement("backgroundColorOpacity", elementString) || pControl->GetElement("BGColorOpacity", elementString))
728                         {
729                                 int opacity =0;
730                                 Base::Integer::Parse(elementString, opacity);
731                                 bgColor.SetAlpha(ConvertOpacity100to255(opacity));
732                         }
733                         pIconListView->SetBackgroundColor(bgColor);
734                 }
735
736                 // Set CheckBoxPosition
737                 if ((style == ICON_LIST_VIEW_STYLE_RADIO || style == ICON_LIST_VIEW_STYLE_MARK)
738                         && pControl->GetElement("checkBoxPosition", elementString))
739                 {
740                         IconListViewCheckBoxPosition checkBoxPosition = ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_RIGHT;
741                         if (elementString.Equals(L"ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT", false))
742                         {
743                                 checkBoxPosition = ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT;
744                         }
745                         else if (elementString.Equals(L"ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_RIGHT", false))
746                         {
747                                 checkBoxPosition = ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_RIGHT;
748                         }
749                         else if (elementString.Equals(L"ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_LEFT", false))
750                         {
751                                 checkBoxPosition = ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_LEFT;
752                         }
753                         else if (elementString.Equals(L"ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_RIGHT", false))
754                         {
755                                 checkBoxPosition = ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_RIGHT;
756                         }
757
758                         pIconListView->SetCheckBoxPosition(checkBoxPosition);
759                 }
760
761                 // Set BitmapOfEmptyList
762                 if (pControl->GetElement("bitmapPathOfEmptyList", elementString))
763                 {
764                         Bitmap* pBitmapOfEmptyList = null;
765                         pBitmapOfEmptyList = LoadBitmapN(elementString);
766                         if (pBitmapOfEmptyList)
767                         {
768                                 pIconListView->SetBitmapOfEmptyList(pBitmapOfEmptyList);
769                                 delete pBitmapOfEmptyList;
770                         }
771                 }
772
773                 // Set TextOfEmptyList
774                 if (pControl->GetElement("textOfEmptyList", elementString))
775                 {
776                         pIconListView->SetTextOfEmptyList(elementString);
777                 }
778
779                 // Set TextColorOfEmptyList
780                 if (pControl->GetElement("colorOfEmptyListText", elementString))
781                 {
782                         Color color;
783                         ConvertStringToColor(elementString, color);
784                         pIconListView->SetTextColorOfEmptyList(color);
785                 }
786
787                 // Set ItemBorderStyle
788                 if (pControl->GetElement("itemBorderStyle", elementString))
789                 {
790                         IconListViewItemBorderStyle borderStyle = ICON_LIST_VIEW_ITEM_BORDER_STYLE_SHADOW;
791                         if (elementString.Equals(L"ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE", false))
792                         {
793                                 borderStyle = ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE;
794                         }
795                         else if (elementString.Equals(L"ICON_LIST_VIEW_ITEM_BORDER_STYLE_OUTLINE", false))
796                         {
797                                 borderStyle = ICON_LIST_VIEW_ITEM_BORDER_STYLE_OUTLINE;
798                         }
799                         else if (elementString.Equals(L"ICON_LIST_VIEW_ITEM_BORDER_STYLE_SHADOW", false))
800                         {
801                                 borderStyle = ICON_LIST_VIEW_ITEM_BORDER_STYLE_SHADOW;
802                         }
803
804                         pIconListView->SetItemBorderStyle(borderStyle);
805                 }
806
807                 // Set ItemLayoutHorizontalAlignment
808                 if (scrollDirection == ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL
809                         && pControl->GetElement("itemHorizontalAlignment", elementString))
810                 {
811                         HorizontalAlignment alignment = ALIGNMENT_CENTER;
812                         if (elementString.Equals(L"ALIGNMENT_LEFT", false))
813                         {
814                                 alignment = ALIGNMENT_LEFT;
815                         }
816                         else if (elementString.Equals(L"ALIGNMENT_CENTER", false))
817                         {
818                                 alignment = ALIGNMENT_CENTER;
819                         }
820                         else if (elementString.Equals(L"ALIGNMENT_RIGHT", false))
821                         {
822                                 alignment = ALIGNMENT_RIGHT;
823                         }
824
825                         pIconListView->SetItemLayoutHorizontalAlignment(alignment);
826                 }
827
828                 // Set ItemLayoutVerticalAlignment
829                 if (scrollDirection == ICON_LIST_VIEW_SCROLL_DIRECTION_HORIZONTAL
830                         && pControl->GetElement("itemVerticalAlignment", elementString))
831                 {
832                         VerticalAlignment alignment = ALIGNMENT_MIDDLE;
833                         if (elementString.Equals(L"ALIGNMENT_TOP", false))
834                         {
835                                 alignment = ALIGNMENT_TOP;
836                         }
837                         else if (elementString.Equals(L"ALIGNMENT_MIDDLE", false))
838                         {
839                                 alignment = ALIGNMENT_MIDDLE;
840                         }
841                         else if (elementString.Equals(L"ALIGNMENT_BOTTOM", false))
842                         {
843                                 alignment = ALIGNMENT_BOTTOM;
844                         }
845
846                         pIconListView->SetItemLayoutVerticalAlignment(alignment);
847                 }
848
849                 // Set TextHorizontalAlignment
850                 if (pControl->GetElement("itemTextHorizontalAlignment", elementString))
851                 {
852                         HorizontalAlignment alignment = ALIGNMENT_CENTER;
853                         if (elementString.Equals(L"ALIGNMENT_LEFT", false))
854                         {
855                                 alignment = ALIGNMENT_LEFT;
856                         }
857                         else if (elementString.Equals(L"ALIGNMENT_CENTER", false))
858                         {
859                                 alignment = ALIGNMENT_CENTER;
860                         }
861                         else if (elementString.Equals(L"ALIGNMENT_RIGHT", false))
862                         {
863                                 alignment = ALIGNMENT_RIGHT;
864                         }
865
866                         pIconListView->SetTextHorizontalAlignment(alignment);
867                 }
868
869                 // Set TextVerticalAlignment
870                 if (pControl->GetElement("itemTextVerticalAlignment", elementString))
871                 {
872                         IconListViewItemTextVerticalAlignment alignment = ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_BOTTOM;
873                         if (elementString.Equals(L"ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_TOP", false))
874                         {
875                                 alignment = ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_TOP;
876                         }
877                         else if (elementString.Equals(L"ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_MIDDLE", false))
878                         {
879                                 alignment = ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_MIDDLE;
880                         }
881                         else if (elementString.Equals(L"ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_BOTTOM", false))
882                         {
883                                 alignment = ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_BOTTOM;
884                         }
885                         else if (elementString.Equals(L"ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_OUTSIDE_TOP", false))
886                         {
887                                 alignment = ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_OUTSIDE_TOP;
888                         }
889                         else if (elementString.Equals(L"ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_OUTSIDE_BOTTOM", false))
890                         {
891                                 alignment = ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_OUTSIDE_BOTTOM;
892                         }
893
894                         pIconListView->SetTextVerticalAlignment(alignment);
895                 }
896
897                 // Set ItemHorizontalSpacing
898                 if (pControl->GetElement("itemHorizontalSpacing", elementString))
899                 {
900                         int spacing = 0;
901                         Base::Integer::Parse(elementString, spacing);
902                         pIconListView->SetItemSpacing(spacing, pIconListView->GetItemVerticalSpacing());
903                 }
904
905                 // Set ItemVerticalSpacing
906                 if (pControl->GetElement("itemVerticalSpacing", elementString))
907                 {
908                         int spacing = 0;
909                         Base::Integer::Parse(elementString, spacing);
910                         pIconListView->SetItemSpacing(pIconListView->GetItemHorizontalSpacing(), spacing);
911                 }
912
913                 // Set ItemTextSize
914                 if (pControl->GetElement("itemTextSize", elementString))
915                 {
916                         int size = 0;
917                         Base::Integer::Parse(elementString, size);
918                         _ICoordinateSystemTransformer* pTransform = GetTransformer();
919                         if (pTransform)
920                         {
921                                 size = pTransform->Transform(size);
922                         }
923                         pIconListView->SetItemTextSize(size);
924                 }
925
926                 // Set NormalItemTextColor
927                 if (pControl->GetElement("normalItemTextColor", elementString))
928                 {
929                         Color color;
930                         ConvertStringToColor(elementString, color);
931                         pIconListView->SetItemTextColor(ICON_LIST_VIEW_ITEM_DRAWING_STATUS_NORMAL, color);
932                 }
933
934                 // Set PressedItemTextColor
935                 if (pControl->GetElement("pressedItemTextColor", elementString))
936                 {
937                         Color color;
938                         ConvertStringToColor(elementString, color);
939                         pIconListView->SetItemTextColor(ICON_LIST_VIEW_ITEM_DRAWING_STATUS_PRESSED, color);
940                 }
941
942                 // Set HighlightedItemTextColor
943                 if (pControl->GetElement("highlightedItemTextColor", elementString))
944                 {
945                         Color color;
946                         ConvertStringToColor(elementString, color);
947                         pIconListView->SetItemTextColor(ICON_LIST_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED, color);
948                 }
949
950                 // Set TouchAnimationEnabled
951                 if (pControl->GetElement("touchAnimationEnabled", elementString))
952                 {
953                         bool enabled = true;
954                         if (elementString.Equals(L"false", false) || elementString.Equals(L"FALSE", false))
955                         {
956                                 enabled = false;
957                         }
958
959                         pIconListView->SetTouchAnimationEnabled(enabled);
960                 }
961
962                 // Set MagneticScrollSize
963                 if (pControl->GetElement("magneticScrollSize", elementString))
964                 {
965                         int size = 0;
966                         Base::Integer::Parse(elementString, size);
967                         pIconListView->SetMagneticScrollSize(size);
968                 }
969
970                 return pIconListView;
971
972 CATCH:
973                 delete pIconListView;
974                 return null;
975
976         }
977 };
978
979 _IconListViewRegister::_IconListViewRegister()
980 {
981         _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
982         pUiBuilderControlTableManager->RegisterControl(L"IconListView", _IconListViewMaker::GetInstance);
983 }
984
985 _IconListViewRegister::~_IconListViewRegister()
986 {
987         _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
988         pUiBuilderControlTableManager->UnregisterControl(L"IconListView");
989 }
990 static _IconListViewRegister IconListViewRegisterToUiBuilder;
991 }}} // Tizen::Ui::Controls