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.
19 * @file FUiCtrl_IconListItemProviderAdaptor.cpp
20 * @brief This is the implementation file for the _IconListItemProviderAdaptor class.
24 #include <FBaseSysLog.h>
25 #include <FBaseObject.h>
26 #include <FUiCtrlIconListViewItem.h>
28 #include "FUiAnim_VisualElement.h"
29 #include "FUiCtrl_IconListItem.h"
30 #include "FUiCtrl_IconListItemProviderAdaptor.h"
31 #include "FUiCtrl_IconListViewItemImpl.h"
33 using namespace Tizen::Base;
34 using namespace Tizen::Graphics;
35 using namespace Tizen::Ui;
36 using namespace Tizen::Ui::Animations;
38 namespace Tizen { namespace Ui { namespace Controls
41 _IconListItemProviderAdaptor::_IconListItemProviderAdaptor(void)
42 : __pItemProvider(null)
49 _IconListItemProviderAdaptor::~_IconListItemProviderAdaptor(void)
51 __pItemProvider = null;
61 _IconListItemProviderAdaptor::GetBlankItem(void) const
63 if (__pBlankItem == null)
65 // Create Default Blank Item.
66 _IconListItem* pBlankItem = _IconListItem::CreateIconListItemN(null);
67 SysTryReturn(NID_UI_CTRL, (pBlankItem != null), null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
69 const_cast<_IconListItemProviderAdaptor*>(this)->__pBlankItem = pBlankItem;
77 _IconListItemProviderAdaptor::SetItemProvider(void* pProvider)
79 IIconListViewItemProvider* pItemProvider = static_cast<IIconListViewItemProvider*>(pProvider);
80 if (pItemProvider != null)
82 __pItemProvider = pItemProvider;
87 _IconListItemProviderAdaptor::LoadItem(int groupIndex, int itemIndex)
90 SysTryReturn(NID_UI_CTRL, (groupIndex == DEFAULT_GROUP_INDEX), null, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] Index of group must be 0.");
91 SysTryReturn(NID_UI_CTRL, (itemIndex >= GROUP_TITLE_INDEX), null, E_OUT_OF_RANGE,
92 "[E_OUT_OF_RANGE] Index must be a non-negative integer.");
94 SysAssertf(__pItemProvider != null, "Not yet initialized. SetItemProvider() should be called before use.");
98 if (itemIndex == GROUP_TITLE_INDEX)
100 return GetBlankItem();
104 _IconListItem* pIconListItem = null;
105 IconListViewItem* pItem = __pItemProvider->CreateItem(itemIndex);
106 SysTryCatch(NID_UI_CTRL, (pItem != null), , E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Can't get new item.");
107 SysTryCatch(NID_UI_CTRL, (pItem->__pImpl != null), , E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Can't get new item.");
109 pIconListItem = pItem->__pImpl->__pIconListItem;
110 SysTryCatch(NID_UI_CTRL, (pIconListItem != null), , E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Can't get new item.");
112 pIconListItem->ClearVisualElement();
113 pIconListItem->AddRef();
115 // Attach _VisualElement
118 _VisualElement* pBase = pIconListItem->GetVisualElement();
121 __pRoot->AttachChild(*pBase);
122 pBase->SetShowState(false);
123 pBase->SetClipToParent(true);
127 return pIconListItem;
132 if (!__pItemProvider->DeleteItem(itemIndex, pItem))
138 return GetBlankItem();
142 _IconListItemProviderAdaptor::UnloadItem(_IListItemCommon* pListItem, int groupIndex, int itemIndex)
145 SysTryReturn(NID_UI_CTRL, (pListItem != null), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. Item must not be null.");
146 SysTryReturn(NID_UI_CTRL, (groupIndex == DEFAULT_GROUP_INDEX), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] Index of group must be 0.");
147 SysTryReturn(NID_UI_CTRL, (itemIndex >= GROUP_TITLE_INDEX), E_OUT_OF_RANGE, E_OUT_OF_RANGE,
148 "[E_OUT_OF_RANGE] Index must be a non-negative integer.");
151 if (itemIndex == GROUP_TITLE_INDEX)
156 // Is the Blank Item?
157 if (pListItem == GetBlankItem())
162 _IconListItem* pIconListItem = dynamic_cast<_IconListItem*>(pListItem);
163 if (pIconListItem != null)
165 _VisualElement* pBase = pIconListItem->GetVisualElement();
168 pBase->SetShowState(false);
169 pIconListItem->ClearVisualElement();
170 __pRoot->DetachChild(*pBase);
174 IconListViewItem* pItem = static_cast<IconListViewItem*>(pIconListItem->GetAppInfo());
175 pIconListItem->Release();
181 SysAssertf(__pItemProvider != null, "Not yet initialized. SetItemProvider() should be called before use.");
183 if (!__pItemProvider->DeleteItem(itemIndex, pItem))
192 _IconListItemProviderAdaptor::DeleteItem(_IListItemCommon* pListItem, int groupIndex, int itemIndex)
195 SysTryReturn(NID_UI_CTRL, (pListItem != null), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. Item must not be null.");
196 SysTryReturn(NID_UI_CTRL, (groupIndex == DEFAULT_GROUP_INDEX), E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] Index of group must be 0.");
197 SysTryReturn(NID_UI_CTRL, (itemIndex >= GROUP_TITLE_INDEX), E_OUT_OF_RANGE, E_OUT_OF_RANGE,
198 "[E_OUT_OF_RANGE] Index must be a non-negative integer.");
201 if (itemIndex == GROUP_TITLE_INDEX)
206 // Is the Blank Item?
207 if (pListItem == GetBlankItem())
212 _IconListItem* pIconListItem = dynamic_cast <_IconListItem*>(pListItem);
213 if (pIconListItem != null)
215 _VisualElement* pBase = pIconListItem->GetVisualElement();
218 pBase->SetShowState(false);
219 pIconListItem->ClearVisualElement();
220 __pRoot->DetachChild(*pBase);
224 IconListViewItem* pItem = static_cast <IconListViewItem*>(pIconListItem->GetAppInfo());
225 pIconListItem->Release();
235 _IconListItemProviderAdaptor::GetItemCount(int groupIndex) const
238 SysTryReturn(NID_UI_CTRL, (groupIndex == DEFAULT_GROUP_INDEX), -1, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] Index of group must be 0.");
240 SysAssertf(__pItemProvider != null, "Not yet initialized. SetItemProvider() should be called before use.");
244 int itemCount = __pItemProvider->GetItemCount();
245 return (itemCount < 0) ? 0 : itemCount;
249 _IconListItemProviderAdaptor::GetGroupCount(void) const
251 return DEFAULT_GROUP_COUNT;
255 _IconListItemProviderAdaptor::SetVisualElement(Tizen::Ui::Animations::_VisualElement* pRoot)
257 SysTryReturnVoidResult(NID_UI_CTRL, (pRoot != null), E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used.");
264 }}} // Tizen::Ui::Controls