2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0/
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.
19 * @file FUiCtrl_IconListImpl.cpp
20 * @brief This is the implementation file for _IconListImpl class
22 * This file contains the implementation of _IconListImpl class
26 #include "FUiCtrl_IconListImpl.h"
27 #include "FUiCtrl_IconListItemProvider.h"
28 #include "FUiCtrl_IconListData.h"
29 #include "FUi_ResourceManager.h"
30 #include "FUiCtrl_ListListener.h"
32 #include "FUi_UiBuilder.h"
34 using namespace Tizen::Base;
35 using namespace Tizen::Ui;
36 using namespace Tizen::Ui::Controls;
37 using namespace Tizen::Graphics;
39 namespace Tizen { namespace Ui { namespace Controls
43 _IconListImpl::GetInstance(IconList& iconList)
45 return static_cast< _IconListImpl* >(iconList._pControlImpl);
49 _IconListImpl::GetInstance(const IconList& iconList)
51 return static_cast< const _IconListImpl* >(iconList._pControlImpl);
54 _IconListImpl::_IconListImpl(Control* pList, _IconListView* pCore)
55 : _ControlImpl(pList, pCore)
56 , __pIconListItemProvider(null)
57 , __annexStyle(ICON_LIST_VIEW_STYLE_NORMAL)
61 _IconListImpl::~_IconListImpl(void)
63 __iconList.RemoveAll(true);
64 __iconListenersList.RemoveAll(true);
66 delete __pIconListItemProvider;
67 __pIconListItemProvider = null;
71 _IconListImpl::GetPublicClassName(void) const
73 return "Tizen::Ui::Controls::IconList";
77 _IconListImpl::GetPublic(void) const
79 return static_cast< const IconList& >(_ControlImpl::GetPublic());
83 _IconListImpl::GetPublic(void)
85 return static_cast< IconList& >(_ControlImpl::GetPublic());
89 _IconListImpl::GetCore(void) const
91 return static_cast< const _IconListView& >(_ControlImpl::GetCore());
95 _IconListImpl::GetCore(void)
97 return static_cast< _IconListView& >(_ControlImpl::GetCore());
101 _IconListImpl::CreateIconListImplN(IconList* pControl)
103 _IconListView* pCore = _IconListView::CreateIconListViewN();
104 SysTryReturn(NID_UI_CTRL, (pCore != null), null, GetLastResult(), "[%s] Creating iconListView instance failed", GetErrorMessage(GetLastResult()));
106 _IconListImpl* pImpl = new (std::nothrow) _IconListImpl(pControl, pCore);
107 SysTryCatch(NID_UI_CTRL, (pImpl != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
117 _IconListImpl::SetIconListStyle(IconListStyle style)
119 result r = E_SUCCESS;
123 case ICON_LIST_STYLE_NORMAL:
124 __annexStyle = ICON_LIST_VIEW_STYLE_NORMAL;
127 case ICON_LIST_STYLE_RADIO:
128 __annexStyle = ICON_LIST_VIEW_STYLE_RADIO;
131 case ICON_LIST_STYLE_MARK:
132 __annexStyle = ICON_LIST_VIEW_STYLE_MARK;
140 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "Invalid Icon List style" );
142 r = GetCore().SetStyle(__annexStyle);
143 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set style", GetErrorMessage(r));
149 _IconListImpl::InitializeIconList(int itemWidth, int itemHeight)
151 result r = E_SUCCESS;
152 int initialTextSize = itemHeight >> 2;
158 GET_FIXED_VALUE_CONFIG(ICONLIST::MINIMUM_FONT_SIZE, GetCore().GetOrientation(), minSize);
159 GET_SHAPE_CONFIG(ICONLIST::LIST1X_TOP_MARGIN, GetCore().GetOrientation(), topMargin);
160 GET_SHAPE_CONFIG(ICONLIST::LIST1X_LEFT_MARGIN, GetCore().GetOrientation(), leftMargin);
161 GET_SHAPE_CONFIG(ICONLIST::LIST1X_RIGHT_MARGIN, GetCore().GetOrientation(), rightMargin);
163 if (initialTextSize < minSize)
165 initialTextSize = minSize;
168 r = GetCore().SetItemTextSize(initialTextSize);
169 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set item text size", GetErrorMessage(r));
171 r = GetCore().SetScrollDirection(ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
172 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set scroll direction", GetErrorMessage(r));
174 r = GetCore().SetItemBitmapBounds(Rectangle(0, 0, itemWidth, itemHeight));
175 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set bitmap bounds", GetErrorMessage(r));
177 r = GetCore().SetItemBorderStyle(ICON_LIST_VIEW_ITEM_BORDER_STYLE_OUTLINE);
178 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set border style", GetErrorMessage(r));
180 r = GetCore().SetItemSpacing(rightMargin, topMargin);
181 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set item spacing", GetErrorMessage(r));
183 r = GetCore().SetMargin(MARGIN_TYPE_TOP, topMargin);
184 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set top margin", GetErrorMessage(r));
186 r = GetCore().SetMargin(MARGIN_TYPE_LEFT, leftMargin);
187 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set left margin", GetErrorMessage(r));
189 r = GetCore().SetMargin(MARGIN_TYPE_RIGHT, rightMargin);
190 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set right margin", GetErrorMessage(r));
192 r = GetCore().SetMargin(MARGIN_TYPE_BOTTOM, 0);
193 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set bottom margin", GetErrorMessage(r));
199 _IconListImpl::SetItemProvider(void)
201 __pIconListItemProvider = new (std::nothrow) _IconListItemProvider(this);
202 SysTryReturnResult(NID_UI_CTRL, __pIconListItemProvider, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
204 return GetCore().SetItemProvider(*__pIconListItemProvider);
208 _IconListImpl::SetNonSlidable(void)
210 return GetCore().SetNonSlidableList();
214 _IconListImpl::SetListener(void)
216 result r = E_SUCCESS;
217 r = GetCore().AddIconListItemEventListener(*this);
218 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Failed to set IconListItemEvent listener", GetErrorMessage(r));
224 _IconListImpl::AddItemEventListener(IItemEventListener& listener)
226 _ListListener* pIconListListener = new (std::nothrow) _ListListener();
227 SysTryReturnVoidResult(NID_UI_CTRL, pIconListListener, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
229 pIconListListener->pListener = &listener;
231 __iconListenersList.Add(*pIconListListener);
235 _IconListImpl::RemoveItemEventListener(IItemEventListener& listener)
237 _ListListener* pIconListListener = null;
239 for (int listenerCount = 0; listenerCount < __iconListenersList.GetCount(); listenerCount++)
241 pIconListListener = dynamic_cast< _ListListener* >(__iconListenersList.GetAt(listenerCount));
243 if ((pIconListListener != null) && (pIconListListener->pListener == &listener))
245 __iconListenersList.RemoveAt(listenerCount, true);
253 _IconListImpl::SetBackgroundBitmap(const Bitmap& bitmap)
255 result r = E_SUCCESS;
257 r = GetCore().SetBackgroundBitmap(&bitmap);
258 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, "[E_SYSTEM] SetBackgroundBitmap failed.");
262 _IconListImpl::SetMargin(int topMargin, int leftMargin)
264 result r = E_SUCCESS;
266 r = GetCore().SetMargin(MARGIN_TYPE_TOP, topMargin);
267 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), E_SYSTEM, "[%s] Failed to set Margin", GetErrorMessage(r));
269 r = GetCore().SetMargin(MARGIN_TYPE_LEFT, leftMargin);
270 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), E_SYSTEM, "[%s] Failed to set Margin", GetErrorMessage(r));
276 _IconListImpl::GetTopMargin(void) const
278 return GetCore().GetMargin(MARGIN_TYPE_TOP);
282 _IconListImpl::GetLeftMargin(void) const
284 return GetCore().GetMargin(MARGIN_TYPE_LEFT);
288 _IconListImpl::AddItem(const String* pText, const Bitmap* pNormalBitmap, const Bitmap* pFocusedBitmap, int itemId)
290 result r = E_SUCCESS;
292 _IconListData* pIconListData = CreateIconListItemN(pText, pNormalBitmap, pFocusedBitmap, itemId);
293 SysTryReturnResult(NID_UI_CTRL, pIconListData, E_SYSTEM, "[E_SYSTEM] This Item instance is null.");
295 r = __iconList.Add(*pIconListData);
296 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] Add failed.");
298 r = GetCore().RefreshList(__iconList.GetCount() - 1, LIST_REFRESH_TYPE_ITEM_ADD);
299 SysTryReturnResult(NID_UI_CTRL, E_SUCCESS == r, E_SYSTEM, "[E_SYSTEM] Could not able to Add an Item.");
304 delete pIconListData;
305 pIconListData = null;
310 _IconListImpl::InsertItemAt(int index, const String* pText, const Bitmap* pNormalBitmap, const Bitmap* pFocusedBitmap, int itemId)
312 result r = E_SUCCESS;
314 SysTryReturnResult(NID_UI_CTRL, (index >= 0 && index <= __iconList.GetCount()),
315 E_SYSTEM, "[E_INVALID_ARG] Index passed is invalid");
317 if (index == __iconList.GetCount())
319 return AddItem(pText, pNormalBitmap, pFocusedBitmap, itemId);
322 _IconListData* pIconListData = CreateIconListItemN(pText, pNormalBitmap, pFocusedBitmap, itemId);
323 SysTryReturnResult(NID_UI_CTRL, pIconListData, E_SYSTEM, "[E_SYSTEM] This Item instance is null.");
325 r = __iconList.InsertAt(*pIconListData, index);
326 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] InsertAt failed.");
328 r = GetCore().RefreshList(index, LIST_REFRESH_TYPE_ITEM_ADD);
329 SysTryReturnResult(NID_UI_CTRL, E_SUCCESS == r, E_SYSTEM, "[E_SYSTEM] Item could not be inserted into list.");
334 delete pIconListData;
335 pIconListData = null;
340 _IconListImpl::SetItemAt(int index, const String* pText, const Bitmap* pNormalBitmap, const Bitmap* pFocusedBitmap, int itemId)
342 result r = E_SUCCESS;
344 SysTryReturnResult(NID_UI_CTRL, (index >= 0 && index < __iconList.GetCount()),
345 E_SYSTEM, "[E_INVALID_ARG] The index should not be less than 0 and greater than ItemCount");
347 _IconListData* pIconListData = CreateIconListItemN(pText, pNormalBitmap, pFocusedBitmap, itemId);
348 SysTryReturnResult(NID_UI_CTRL, pIconListData, E_SYSTEM, "[E_SYSTEM] This Item instance is null.");
350 r = __iconList.SetAt(*pIconListData, index, true);
351 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] SetAt failed.");
353 r = GetCore().RefreshList(index, LIST_REFRESH_TYPE_ITEM_MODIFY);
354 SysTryReturnResult(NID_UI_CTRL, E_SUCCESS == r, E_SYSTEM, "[E_SYSTEM] Item could not be modified.");
359 delete pIconListData;
360 pIconListData = null;
365 _IconListImpl::RemoveItemAt(int index)
367 result r = E_SUCCESS;
369 SysTryReturnResult(NID_UI_CTRL, (index >= 0 && index < __iconList.GetCount()),
370 E_SYSTEM, "[E_INVALID_ARG] Index passed is invalid");
372 __iconList.RemoveAt(index, true);
374 r = GetCore().RefreshList(index, LIST_REFRESH_TYPE_ITEM_REMOVE);
375 SysTryReturnResult(NID_UI_CTRL, E_SUCCESS == r, E_SYSTEM, "[E_SYSTEM] Could not able to Remove an Item.");
381 _IconListImpl::RemoveAllItems(void)
383 result r = E_SUCCESS;
384 result finalResult = E_SUCCESS;
386 for (int index = __iconList.GetCount() - 1; index >= 0; index--)
388 r = RemoveItemAt(index);
392 SysLog(NID_UI_CTRL, "[E_SYSTEM] Item at %d index not removed successfully", index);
400 _IconListImpl::GetColumnCount(void) const
402 return GetCore().GetItemCountPerAxis();
406 _IconListImpl::GetItemCount(void) const
408 return __iconList.GetCount();
412 _IconListImpl::SetItemChecked(int index, bool check)
414 result r = E_SUCCESS;
416 SysTryReturnResult(NID_UI_CTRL, (index >= 0 && index < __iconList.GetCount()), E_INVALID_ARG, "[E_INVALID_ARG] Index passed is invalid");
417 SysTryReturnResult(NID_UI_CTRL, (__annexStyle != ICON_LIST_VIEW_STYLE_NORMAL), E_SYSTEM, "[E_SYSTEM] Invalid operation for ICON_LIST_VIEW_STYLE_NORMAL.");
419 r = GetCore().SetItemChecked(index, check);
420 SysTryReturnResult(NID_UI_CTRL, E_SUCCESS == r, r, "SetItemChecked failed.");
422 r = GetCore().RefreshList(index, LIST_REFRESH_TYPE_ITEM_MODIFY);
423 SysTryReturnResult(NID_UI_CTRL, E_SUCCESS == r, r, "[E_SYSTEM] Item Not removed SuccessFully.");
429 _IconListImpl::IsItemChecked(int index) const
431 SysTryReturn(NID_UI_CTRL, (__annexStyle != ICON_LIST_VIEW_STYLE_NORMAL),
432 false, E_SYSTEM, "[E_SYSTEM] list style should not be ICON_LIST_VIEW_STYLE_NORMAL.");
434 SysTryReturnResult(NID_UI_CTRL, (index >= 0 && index < __iconList.GetCount()),
435 false, "[E_INVALID_ARG] Index passed is invalid");
437 return GetCore().IsItemChecked(index);
441 _IconListImpl::SetAllItemsChecked(bool check)
443 SysTryReturnResult(NID_UI_CTRL, (__annexStyle != ICON_LIST_VIEW_STYLE_RADIO && __annexStyle != ICON_LIST_VIEW_STYLE_NORMAL),
444 E_SYSTEM, "[E_SYSTEM] Invalid Operation.");
446 result r = E_SUCCESS;
448 for (int index = 0; index < __iconList.GetCount(); index++)
450 r = GetCore().SetItemChecked(index, check);
453 SysLog(NID_UI_CTRL, "[E_SYSTEM] Item Not checked Properly");
455 GetCore().RefreshList(index, LIST_REFRESH_TYPE_ITEM_MODIFY);
462 _IconListImpl::RemoveAllCheckedItems(void)
464 SysTryReturnResult(NID_UI_CTRL, (__annexStyle != ICON_LIST_VIEW_STYLE_RADIO && __annexStyle != ICON_LIST_VIEW_STYLE_NORMAL),
465 E_SYSTEM, "[E_SYSTEM] Invalid Operation.");
467 result r = E_SUCCESS;
468 result finalResult = E_SUCCESS;
470 for (int index = __iconList.GetCount() - 1; index >= 0 ; index--)
472 if (GetCore().IsItemChecked(index))
474 r = RemoveItemAt(index);
478 SysLog(NID_UI_CTRL, "[E_SYSTEM] Item at %d index not removed successfully", index);
487 _IconListImpl::GetFirstCheckedItemIndex(void) const
489 const _Control& control = GetCore();
490 _IconListView* pList = dynamic_cast< _IconListView* >(const_cast< _Control* >(&control));
491 SysTryReturn(NID_UI_CTRL, (pList != null), INVALID_INDEX, E_SYSTEM, "[E_SYSTEM] System error occurred.");
493 SysTryReturn(NID_UI_CTRL, (__annexStyle != ICON_LIST_VIEW_STYLE_NORMAL), INVALID_INDEX, E_SYSTEM, "[E_SYSTEM] Invalid operation for ICON_LIST_VIEW_STYLE_NORMAL.");
495 for (int index = 0; index < __iconList.GetCount(); index++)
497 if (GetCore().IsItemChecked(index))
503 return INVALID_INDEX;
507 _IconListImpl::GetLastCheckedItemIndex(void) const
509 const _Control& control = GetCore();
510 _IconListView* pList = dynamic_cast< _IconListView* >(const_cast< _Control* >(&control));
511 SysTryReturn(NID_UI_CTRL, (pList != null), INVALID_INDEX, E_SYSTEM, "[E_SYSTEM] System error occurred.");
513 SysTryReturn(NID_UI_CTRL, (__annexStyle != ICON_LIST_VIEW_STYLE_NORMAL), INVALID_INDEX, E_SYSTEM, "[E_SYSTEM] Invalid operation for ICON_LIST_VIEW_STYLE_NORMAL.");
515 for (int index = __iconList.GetCount() - 1; index >= 0; index--)
517 if (GetCore().IsItemChecked(index))
523 return INVALID_INDEX;
527 _IconListImpl::GetNextCheckedItemIndexAfter(int index) const
529 const _Control& control = GetCore();
530 _IconListView* pList = dynamic_cast< _IconListView* >(const_cast< _Control* >(&control));
531 SysTryReturn(NID_UI_CTRL, (pList != null), E_SYSTEM, E_SYSTEM, "[E_SYSTEM] System error occurred.");
532 SysTryReturn(NID_UI_CTRL, (index >= 0 && index < __iconList.GetCount()), INVALID_INDEX, INVALID_INDEX, "[INVALID_INDEX] Invalid index(%d)", index);
534 SysTryReturn(NID_UI_CTRL, (__annexStyle != ICON_LIST_VIEW_STYLE_NORMAL), INVALID_INDEX, E_SYSTEM, "[E_SYSTEM] Invalid operation for ICON_LIST_VIEW_STYLE_NORMAL.");
536 for (int i = index + 1; i < __iconList.GetCount(); i++)
538 if (GetCore().IsItemChecked(i))
545 return INVALID_INDEX;
549 _IconListImpl::GetItemIndexFromPosition(int x, int y) const
551 SysTryReturn(NID_UI_CTRL, (x >= 0 && y >= 0), INVALID_INDEX, E_INVALID_ARG, "[E_INVALID_ARG] Invalid Co-ordinates");
553 return GetCore().GetItemIndexFromPosition(Point(x, y));
557 _IconListImpl::GetItemIndexFromPosition(const Point& position) const
559 return GetCore().GetItemIndexFromPosition(position);
563 _IconListImpl::SetTextHorizontalAlignment(HorizontalAlignment alignment)
565 if (!(alignment >= ALIGNMENT_LEFT && alignment <= ALIGNMENT_RIGHT))
567 SetLastResult(E_INVALID_ARG);
568 //SetLastLog("[E_INVALID_ARG] Cannot set text Horizontal align");
572 GetCore().SetTextHorizontalAlignment(alignment);
576 _IconListImpl::SetTextVerticalAlignment(VerticalAlignment alignment)
578 if (!(alignment >= ALIGNMENT_TOP && alignment <= ALIGNMENT_BOTTOM))
580 SetLastResult(E_INVALID_ARG);
581 //SetLastLog("[E_INVALID_ARG] Cannot set text vertical align");
589 GetCore().SetTextVerticalAlignment(ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_TOP);
593 case ALIGNMENT_MIDDLE:
595 GetCore().SetTextVerticalAlignment(ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_MIDDLE);
599 case ALIGNMENT_BOTTOM:
601 GetCore().SetTextVerticalAlignment(ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_BOTTOM);
608 _IconListImpl::GetTextHorizontalAlignment(void) const
610 return GetCore().GetTextHorizontalAlignment();
615 _IconListImpl::GetTextVerticalAlignment(void) const
617 switch (GetCore().GetTextVerticalAlignment())
619 case ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_TOP:
621 return ALIGNMENT_TOP;
625 case ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_MIDDLE:
627 return ALIGNMENT_MIDDLE;
631 case ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_BOTTOM:
633 return ALIGNMENT_BOTTOM;
639 return ALIGNMENT_TOP;
646 _IconListImpl::SetTextOfEmptyList(const String& text)
648 GetCore().SetTextOfEmptyList(text);
652 _IconListImpl::SetTextColorOfEmptyList(const Color& color)
654 GetCore().SetTextColorOfEmptyList(color);
657 Tizen::Graphics::Color
658 _IconListImpl::GetTextColorOfEmptyList(void) const
660 return GetCore().GetTextColorOfEmptyList();
664 _IconListImpl::SetItemTextColor(const Color& textColor)
666 GetCore().SetItemTextColor(ICON_LIST_VIEW_ITEM_DRAWING_STATUS_NORMAL, textColor);
669 Tizen::Graphics::Color
670 _IconListImpl::GetItemTextColor(void) const
672 return GetCore().GetItemTextColor(ICON_LIST_VIEW_ITEM_DRAWING_STATUS_NORMAL);
676 _IconListImpl::SetTextSize(int size)
678 GetCore().SetItemTextSize(size);
682 _IconListImpl::GetTextSize(void) const
684 return GetCore().GetItemTextSize();
688 _IconListImpl::GetItemIndexFromItemId(int itemId) const
690 _IconListData* pIconListData = null;
692 for (int index = 0; index < __iconList.GetCount(); index++)
694 pIconListData = dynamic_cast< _IconListData* >(const_cast< Object* >(__iconList.GetAt(index)));
695 if (pIconListData != null)
697 if (pIconListData->GetItemId() == itemId)
704 return INVALID_INDEX;
708 _IconListImpl::GetItemIdAt(int index) const
710 SysTryReturn(NID_UI_CTRL, (index < __iconList.GetCount()),
711 INVALID_INDEX, E_INVALID_ARG, ("[E_INVALID_ARG] Index passed is invalid"));
713 _IconListData* pIconListData = null;
714 pIconListData = dynamic_cast< _IconListData* >(const_cast< Object* >(__iconList.GetAt(index)));
715 if (pIconListData != null)
717 return pIconListData->GetItemId();
720 return INVALID_INDEX;
724 _IconListImpl::SetCheckBoxPosition(IconListCheckBoxPosition position)
726 SysTryReturnVoidResult(NID_UI_CTRL, (__annexStyle == ICON_LIST_VIEW_STYLE_RADIO || __annexStyle == ICON_LIST_VIEW_STYLE_MARK),
727 E_INVALID_OPERATION, "[E_INVALID_OPERATION] Can not set position of CheckBox.");
729 if (!(position >= ICON_LIST_CHECK_BOX_POSITION_TOP_LEFT && position <= ICON_LIST_CHECK_BOX_POSITION_BOTTOM_RIGHT))
731 SetLastResult(E_INVALID_ARG);
732 //SetLastLog("[E_INVALID_ARG] Cannot set text Horizontal align");
738 case ICON_LIST_CHECK_BOX_POSITION_TOP_LEFT:
740 GetCore().SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT);
744 case ICON_LIST_CHECK_BOX_POSITION_TOP_RIGHT:
746 GetCore().SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_RIGHT);
750 case ICON_LIST_CHECK_BOX_POSITION_BOTTOM_LEFT:
752 GetCore().SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_LEFT);
756 case ICON_LIST_CHECK_BOX_POSITION_BOTTOM_RIGHT:
758 GetCore().SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_RIGHT);
764 IconListCheckBoxPosition
765 _IconListImpl::GetCheckBoxPosition(void) const
767 switch (GetCore().GetCheckBoxPosition())
769 case ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT:
771 return ICON_LIST_CHECK_BOX_POSITION_TOP_LEFT;
775 case ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_RIGHT:
777 return ICON_LIST_CHECK_BOX_POSITION_TOP_RIGHT;
781 case ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_LEFT:
783 return ICON_LIST_CHECK_BOX_POSITION_BOTTOM_LEFT;
787 case ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_RIGHT:
789 return ICON_LIST_CHECK_BOX_POSITION_BOTTOM_RIGHT;
795 return ICON_LIST_CHECK_BOX_POSITION_TOP_RIGHT;
802 _IconListImpl::SetFocusAnimationEnabled(bool enable)
804 GetCore().SetTouchAnimationEnabled(enable);
808 _IconListImpl::ScrollToBottom(void)
810 GetCore().ScrollToItem(__iconList.GetCount() - 1);
814 _IconListImpl::ScrollToTop(void)
816 GetCore().ScrollToItem(0);
820 _IconListImpl::ScrollToTop(int itemIndex)
822 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < __iconList.GetCount()), E_INVALID_ARG, "[E_INVALID_ARG] Invalid index(%d)", itemIndex);
824 return GetCore().ScrollToItem(itemIndex);
828 _IconListImpl::RefreshItem(int index)
830 SysTryReturnResult(NID_UI_CTRL, (index >= 0 && index < __iconList.GetCount()), E_INVALID_ARG, "[E_INVALID_ARG] Invalid index(%d)", index);
832 return GetCore().RefreshList(index, LIST_REFRESH_TYPE_ITEM_MODIFY);
836 _IconListImpl::OnIconListItemStateChanged(_IconListViewItemEventArg* pArg)
838 SysTryReturnVoidResult(NID_UI_CTRL, (__iconListenersList.GetCount() > 0), E_SYSTEM, "[E_SYSTEM] No listeners added.");
839 int index = pArg->GetIndex();
840 _IconListData* pIconListData = dynamic_cast< _IconListData* >(__iconList.GetAt(index));
841 SysTryReturnVoidResult(NID_UI_CTRL, pIconListData != null, E_SYSTEM, "[E_SYSTEM] Failed to get IconListdata at %d index.", index);
843 ItemStatus itemStatus = ITEM_HIGHLIGHTED;
845 switch (pArg->GetStatus())
847 case ICON_LIST_VIEW_ITEM_CHECKED:
849 itemStatus = ITEM_CHECKED;
853 case ICON_LIST_VIEW_ITEM_UNCHECKED:
855 itemStatus = ITEM_UNCHECKED;
859 case ICON_LIST_VIEW_ITEM_SELECTED:
861 itemStatus = ITEM_SELECTED;
865 case ICON_LIST_VIEW_ITEM_HIGHLIGHTED:
867 itemStatus = ITEM_HIGHLIGHTED;
872 SysLog(NID_UI_CTRL, "IconListViewItemStatus is invalid.");
876 _ListListener* pIconListListener = null;
877 Tizen::Ui::IItemEventListener* pItemEventListener = null;
878 for (int listenerCount = 0; listenerCount < __iconListenersList.GetCount(); listenerCount++)
880 pIconListListener = dynamic_cast< _ListListener* >(__iconListenersList.GetAt(listenerCount));
881 SysTryReturnVoidResult(NID_UI_CTRL, (pIconListListener != null), E_SYSTEM, "[E_SYSTEM] Failed to get ListListener");
883 pItemEventListener = dynamic_cast< IItemEventListener* >(pIconListListener->pListener);
884 SysTryReturnVoidResult(NID_UI_CTRL, (pItemEventListener != null), E_SYSTEM, "[E_SYSTEM] Failed to get EventListener");
886 pItemEventListener->OnItemStateChanged(GetPublic(), index, pIconListData->GetItemId(), itemStatus);
892 _IconListImpl::CreateIconListItemN(const String* pText, const Bitmap* pNormalBitmap, const Bitmap* pFocusedBitmap, int itemId)
894 SysTryReturn(NID_UI_CTRL, (pText != null), null, E_SYSTEM, "[E_SYSTEM] pText is null");
896 _IconListData* pIconListData = null;
897 pIconListData = new (std::nothrow) _IconListData();
898 SysTryReturn(NID_UI_CTRL, pIconListData, null, E_SYSTEM, "[E_SYSTEM] This instance is not constructed.");
900 pIconListData->SetLabelText(*pText);
901 pIconListData->SetItemId(itemId);
902 pIconListData->SetNormalBitmap(pNormalBitmap);
903 pIconListData->SetFocusedBitmap(pFocusedBitmap);
905 return pIconListData;
910 : public _UiBuilderControlMaker
913 _IconListMaker(_UiBuilder* uibuilder)
914 : _UiBuilderControlMaker(uibuilder){};
915 virtual ~_IconListMaker(){};
916 static _UiBuilderControlMaker*
917 GetInstance(_UiBuilder* uibuilder)
919 _IconListMaker* pIconListMaker = new (std::nothrow) _IconListMaker(uibuilder);
920 return pIconListMaker;
924 Make(_UiBuilderControl* pControl)
927 _UiBuilderControlLayout* pControlProperty = null;
928 IconList* pIconList = null;
933 IconListStyle style = ICON_LIST_STYLE_NORMAL;
934 Tizen::Base::String elementString;
935 int tempItemWidth = 0;
936 int tempItemHeight = 0;
940 GetProperty(pControl, &pControlProperty);
941 if (pControlProperty == null)
946 pIconList = new (std::nothrow) IconList();
947 if (pIconList == null)
952 rect = pControlProperty->GetRect();
954 if (pControl->GetElement(L"itemWidth", elementString))
956 Base::Integer::Parse(elementString, tempItemWidth);
959 if (pControl->GetElement(L"itemHeight", elementString))
961 Base::Integer::Parse(elementString, tempItemHeight);
964 if (tempItemHeight < 1)
966 tempItemHeight = rect.height >> 2;
968 if (tempItemWidth < 1)
970 tempItemWidth = rect.width >> 2;
973 Tizen::Base::String styleString;
974 styleString = pControlProperty->GetStyle();
976 if (styleString.Equals(L"ICON_LIST_STYLE_NORMAL", false))
978 style = ICON_LIST_STYLE_NORMAL;
980 else if (styleString.Equals(L"ICON_LIST_STYLE_RADIO", false))
982 style = ICON_LIST_STYLE_RADIO;
984 else if (styleString.Equals(L"ICON_LIST_STYLE_MARK", false))
986 style = ICON_LIST_STYLE_MARK;
989 r = pIconList->Construct(rect, style, tempItemWidth, tempItemHeight);
997 if (pControl->GetElement(L"textOfEmptyList", elementString))
999 pIconList->SetTextOfEmptyList(elementString);
1002 if (pControl->GetElement(L"colorOfEmptyListText", elementString))
1004 ConvertStringToColor(elementString, color);
1005 pIconList->SetTextColorOfEmptyList(color);
1013 _IconListRegister::_IconListRegister()
1015 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
1016 pUiBuilderControlTableManager->RegisterControl(L"IconList", _IconListMaker::GetInstance);
1018 _IconListRegister::~_IconListRegister()
1020 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
1021 pUiBuilderControlTableManager->UnregisterControl(L"IconList");
1023 static _IconListRegister IconListRegisterToUiBuilder;
1024 }}} // Tizen::Ui::Controls