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_TableViewItemProviderAdaptor.cpp
20 * @brief This is the implementation file for _TableViewItemProviderAdaptor class.
22 * This file contains the implementation of _TableViewItemProviderAdaptor class.
25 #include <FUi_ResourceManager.h>
26 #include <FUiCtrlTableViewItem.h>
27 #include <FUiCtrlTableViewGroupItem.h>
28 #include "FUiCtrl_TableViewItemProviderAdaptor.h"
29 #include "FUiCtrl_TableViewItem.h"
30 #include "FUiCtrl_TableViewItemProvider.h"
31 #include "FUiCtrl_TableViewPresenter.h"
32 #include "FUiCtrl_TableViewItemImpl.h"
33 #include "FUiCtrl_ListViewModel.h"
34 #include "FUiCtrl_IListItemCommon.h"
35 #include "FUiCtrl_LabelImpl.h"
36 #include "FUi_CoordinateSystemUtils.h"
38 using namespace Tizen::Graphics;
40 namespace Tizen { namespace Ui { namespace Controls
43 _TableViewItemProviderAdaptor::_TableViewItemProviderAdaptor()
44 : __pTableViewProvider(null)
45 , __pDefaultItem(null)
46 , __pTableViewPresenter(null)
52 _TableViewItemProviderAdaptor::~_TableViewItemProviderAdaptor()
54 delete __pDefaultItem;
55 __pDefaultItem = null;
57 delete __pTableViewProvider;
58 __pTableViewProvider = null;
62 _TableViewItemProviderAdaptor::SetItemProvider(_TableViewItemProvider* pProvider)
64 if (__pTableViewProvider != pProvider)
66 delete __pTableViewProvider;
69 __pTableViewProvider = pProvider;
73 _TableViewItemProviderAdaptor::IsItemProvider() const
75 if (__pTableViewProvider != null)
86 _TableViewItemProviderAdaptor::GetItemCount(int groupIndex) const
88 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
90 if (__style == TABLE_VIEW_STYLE_SECTION)
92 if (__pTableViewProvider->HasSectionFooter(groupIndex) == true)
94 return __pTableViewProvider->GetItemCount(groupIndex) + 1;
98 return __pTableViewProvider->GetItemCount(groupIndex);
102 _TableViewItemProviderAdaptor::GetGroupCount(void) const
104 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
106 if (__style == TABLE_VIEW_STYLE_SIMPLE)
111 return __pTableViewProvider->GetGroupCount();
115 _TableViewItemProviderAdaptor::LoadItem(int groupIndex, int itemIndex)
117 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, null, E_SYSTEM, "[E_SYSTEM] This instance isn't constructed.");
119 TableViewItem* pItem = null;
120 TableViewGroupItem* pGroupItem = null;
121 TableViewItemTag index = {groupIndex, itemIndex};
123 // Label* pLabel = null;
127 if (__style == TABLE_VIEW_STYLE_SIMPLE)
129 GetDefaultItem()->SetItemHeight(0);
130 return GetDefaultItem();
132 else if (__style == TABLE_VIEW_STYLE_GROUPED)
134 pGroupItem = __pTableViewProvider->CreateGroupItem(groupIndex, __listWidth);
136 if (pGroupItem == null)
138 GetDefaultItem()->SetAppInfo(null);
139 return __pDefaultItem;
142 else // (__style == TABLE_VIEW_STYLE_SECTION)
144 if (!HasSectionHeader(groupIndex))
146 _TableViewItem* pHeaderItem = _TableViewItem::CreateTableViewItemN(0);
147 if (pHeaderItem == null)
149 GetDefaultItem()->SetAppInfo(null);
150 return __pDefaultItem;
156 pGroupItem = new (std::nothrow) TableViewGroupItem();
157 if (pGroupItem == null)
159 GetDefaultItem()->SetAppInfo(null);
160 return __pDefaultItem;
163 float itemHeight = 0.0f;
164 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_DEFAULT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, itemHeight);
166 pGroupItem->Construct(FloatDimension(__listWidth, itemHeight));
168 _TableViewItemImpl* pImpl = _TableViewItemImpl::GetInstance(*pGroupItem);
171 _TableViewItem* pItemCore = &pImpl->GetCore();
172 if (pItemCore != null)
174 Tizen::Base::String contents = __pTableViewProvider->GetSectionHeader(groupIndex);
175 HorizontalAlignment contentsAlignment = __pTableViewPresenter->GetSectionHeaderTextHorizontalAlignment(groupIndex);
176 pItemCore->SetSectionHeaderFooterContents(contents, contentsAlignment, true);
181 else if ((__style == TABLE_VIEW_STYLE_SECTION) && (itemIndex == __pTableViewPresenter->GetItemCountAt(groupIndex) - 1) && HasSectionFooter(groupIndex))
183 pItem = new (std::nothrow) TableViewItem();
186 GetDefaultItem()->SetAppInfo(null);
187 return __pDefaultItem;
190 float itemHeight = 0.0f;
191 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_DEFAULT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, itemHeight);
193 pItem->Construct(FloatDimension(__listWidth, itemHeight));
195 _TableViewItemImpl* pImpl = _TableViewItemImpl::GetInstance(*pItem);
198 _TableViewItem* pItemCore = &pImpl->GetCore();
199 if (pItemCore != null)
201 Tizen::Base::String contents = __pTableViewProvider->GetSectionFooter(groupIndex);
202 HorizontalAlignment contentsAlignment = __pTableViewPresenter->GetSectionFooterTextHorizontalAlignment(groupIndex);
203 pItemCore->SetSectionHeaderFooterContents(contents, contentsAlignment, false);
209 pItem = __pTableViewProvider->CreateItem(index, __listWidth);
213 GetDefaultItem()->SetAppInfo(null);
214 return __pDefaultItem;
218 _TableViewItem* pItemCore = null;
219 _TableViewItemImpl* pImpl = null;
222 if ((pImpl = _TableViewItemImpl::GetInstance(*pGroupItem)) == null)
224 if (!(__pTableViewProvider->DeleteGroupItem(groupIndex, pGroupItem)))
230 GetDefaultItem()->SetAppInfo(null);
231 return __pDefaultItem;
235 pItemCore = &pImpl->GetCore();
240 if ((pImpl = _TableViewItemImpl::GetInstance(*pItem)) == null)
242 if (!(__pTableViewProvider->DeleteItem(index, pItem)))
248 GetDefaultItem()->SetAppInfo(null);
249 return __pDefaultItem;
253 pItemCore = &pImpl->GetCore();
257 if (pItemCore == null)
261 if ((__pTableViewProvider->DeleteGroupItem(groupIndex, pGroupItem)) == false)
269 if ((__pTableViewProvider->DeleteItem(index, pItem)) == false)
276 GetDefaultItem()->SetAppInfo(null);
277 return __pDefaultItem;
282 pItemCore->SetAppInfo(pGroupItem);
286 pItemCore->SetAppInfo(pItem);
293 _TableViewItemProviderAdaptor::UnloadItem(_IListItemCommon* pItemCore, int groupIndex, int itemIndex)
295 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
296 SysTryReturn(NID_UI_CTRL, pItemCore != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] pItemCore is invalid argument.");
298 TableViewItem* pItem = static_cast <TableViewItem*>(pItemCore->GetAppInfo());
299 TableViewItemTag index = {groupIndex, itemIndex};
301 _TableViewItem* pCoreItem = static_cast <_TableViewItem*>(pItemCore);
302 if (pCoreItem->GetParent() != null)
304 pCoreItem->GetParent()->DetachChild(*pCoreItem);
313 // if (pItem->GetParent() != null)
315 // pItem->GetParent()->RemoveControl(*pItem);
318 // pItemCore->Release();
320 pItemCore->SetAppInfo(null);
323 if (__pTableViewProvider->DeleteGroupItem(groupIndex, (TableViewGroupItem*) pItem) == false)
331 if (__pTableViewProvider->DeleteItem(index, pItem) == false)
342 _TableViewItemProviderAdaptor::DeleteItem(_IListItemCommon* pItemCore, int groupIndex, int itemIndex)
344 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
345 SysTryReturn(NID_UI_CTRL, pItemCore != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] pItemCore is invalid argument.");
347 TableViewItem* pItem = static_cast <TableViewItem*>(pItemCore->GetAppInfo());
349 _TableViewItem* pCoreItem = static_cast <_TableViewItem*>(pItemCore);
350 if (pCoreItem->GetParent() != null)
352 pCoreItem->GetParent()->DetachChild(*pCoreItem);
361 // pItemCore->Release();
370 _TableViewItemProviderAdaptor::UpdateItem(_IListItemCommon* pItemCore, int groupIndex, int itemIndex)
372 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
374 TableViewItemTag itemTag = {groupIndex, itemIndex};
379 TableViewGroupItem* pItem = static_cast <TableViewGroupItem*>(pItemCore->GetAppInfo());
383 ret = __pTableViewProvider->UpdateGroupItem(itemTag.groupIndex, pItem);
388 TableViewItem* pItem = static_cast <TableViewItem*>(pItemCore->GetAppInfo());
392 ret = __pTableViewProvider->UpdateItem(itemTag, pItem);
400 _TableViewItemProviderAdaptor::SetListWidth(float width)
408 _TableViewItemProviderAdaptor::GetListWidth(void)
414 _TableViewItemProviderAdaptor::SetTableViewStyle(int style)
422 _TableViewItemProviderAdaptor::SetTableViewPresenter(_TableViewPresenter* pPresenter)
424 __pTableViewPresenter = pPresenter;
428 _TableViewItemProviderAdaptor::HasSectionHeader(int groupIndex) const
430 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
432 return __pTableViewProvider->HasSectionHeader(groupIndex);
436 _TableViewItemProviderAdaptor::HasSectionFooter(int groupIndex) const
438 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
440 return __pTableViewProvider->HasSectionFooter(groupIndex);
444 _TableViewItemProviderAdaptor::GetItemHeight(int groupIndex, int itemIndex)
446 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
448 float itemHeight = 0.0f;
452 itemHeight = __pTableViewProvider->GetGroupItemHeight(groupIndex);
456 TableViewItemTag itemTag = {groupIndex, itemIndex};
457 itemHeight = __pTableViewProvider->GetItemHeight(itemTag);
464 _TableViewItemProviderAdaptor::GetDefaultItemHeight(void)
466 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
468 return __pTableViewProvider->GetDefaultItemHeight();
472 _TableViewItemProviderAdaptor::GetDefaultGroupItemHeight(void)
474 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
476 return __pTableViewProvider->GetDefaultGroupItemHeight();
480 _TableViewItemProviderAdaptor::IsReorderable(int groupIndexFrom, int groupIndexTo)
482 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
484 return __pTableViewProvider->IsReorderable(groupIndexFrom, groupIndexTo);
488 _TableViewItemProviderAdaptor::IsOnProcessing()
490 if (__pTableViewProvider != null)
492 return __pTableViewProvider->IsOnProcessing();
498 _TableViewItemProviderAdaptor::GetDefaultItem(void)
500 if (__pDefaultItem == null)
502 __pDefaultItem = _TableViewItem::CreateTableViewItemN(0.0f);
505 return __pDefaultItem;
508 }}} // Tizen::Ui::Controls