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_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;
72 _TableViewItemProvider*
73 _TableViewItemProviderAdaptor::GetItemProvider() const
75 return __pTableViewProvider;
79 _TableViewItemProviderAdaptor::IsItemProvider() const
81 if (__pTableViewProvider != null)
92 _TableViewItemProviderAdaptor::GetItemCount(int groupIndex) const
94 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
96 if (__style == TABLE_VIEW_STYLE_SECTION)
98 if (__pTableViewProvider->HasSectionFooter(groupIndex) == true)
100 return __pTableViewProvider->GetItemCount(groupIndex) + 1;
104 return __pTableViewProvider->GetItemCount(groupIndex);
108 _TableViewItemProviderAdaptor::GetGroupCount(void) const
110 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
112 if (__style == TABLE_VIEW_STYLE_SIMPLE)
117 return __pTableViewProvider->GetGroupCount();
121 _TableViewItemProviderAdaptor::LoadItem(int groupIndex, int itemIndex)
123 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, null, E_SYSTEM, "[E_SYSTEM] This instance isn't constructed.");
125 TableViewItem* pItem = null;
126 TableViewGroupItem* pGroupItem = null;
127 TableViewItemTag index = {groupIndex, itemIndex};
129 // Label* pLabel = null;
133 if (__style == TABLE_VIEW_STYLE_SIMPLE)
135 GetDefaultItem()->SetItemHeight(0);
136 return GetDefaultItem();
138 else if (__style == TABLE_VIEW_STYLE_GROUPED)
140 pGroupItem = __pTableViewProvider->CreateGroupItem(groupIndex, __listWidth);
142 if (pGroupItem == null)
144 GetDefaultItem()->SetAppInfo(null);
145 return __pDefaultItem;
148 else // (__style == TABLE_VIEW_STYLE_SECTION)
150 if (!HasSectionHeader(groupIndex))
152 _TableViewItem* pHeaderItem = _TableViewItem::CreateTableViewItemN(0);
153 if (pHeaderItem == null)
155 GetDefaultItem()->SetAppInfo(null);
156 return __pDefaultItem;
162 pGroupItem = new (std::nothrow) TableViewGroupItem();
163 if (pGroupItem == null)
165 GetDefaultItem()->SetAppInfo(null);
166 return __pDefaultItem;
169 float itemHeight = 0.0f;
170 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_DEFAULT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, itemHeight);
172 pGroupItem->Construct(FloatDimension(__listWidth, itemHeight));
174 _TableViewItemImpl* pImpl = _TableViewItemImpl::GetInstance(*pGroupItem);
177 _TableViewItem* pItemCore = &pImpl->GetCore();
178 if (pItemCore != null)
180 Tizen::Base::String contents = __pTableViewProvider->GetSectionHeader(groupIndex);
181 HorizontalAlignment contentsAlignment = __pTableViewPresenter->GetSectionHeaderTextHorizontalAlignment(groupIndex);
182 pItemCore->SetSectionHeaderFooterContents(contents, contentsAlignment, true);
187 else if ((__style == TABLE_VIEW_STYLE_SECTION) && (itemIndex == __pTableViewPresenter->GetItemCountAt(groupIndex) - 1) && HasSectionFooter(groupIndex))
189 pItem = new (std::nothrow) TableViewItem();
192 GetDefaultItem()->SetAppInfo(null);
193 return __pDefaultItem;
196 float itemHeight = 0.0f;
197 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_DEFAULT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, itemHeight);
199 pItem->Construct(FloatDimension(__listWidth, itemHeight));
201 _TableViewItemImpl* pImpl = _TableViewItemImpl::GetInstance(*pItem);
204 _TableViewItem* pItemCore = &pImpl->GetCore();
205 if (pItemCore != null)
207 Tizen::Base::String contents = __pTableViewProvider->GetSectionFooter(groupIndex);
208 HorizontalAlignment contentsAlignment = __pTableViewPresenter->GetSectionFooterTextHorizontalAlignment(groupIndex);
209 pItemCore->SetSectionHeaderFooterContents(contents, contentsAlignment, false);
215 pItem = __pTableViewProvider->CreateItem(index, __listWidth);
219 GetDefaultItem()->SetAppInfo(null);
220 return __pDefaultItem;
224 _TableViewItem* pItemCore = null;
225 _TableViewItemImpl* pImpl = null;
228 if ((pImpl = _TableViewItemImpl::GetInstance(*pGroupItem)) == null)
230 if (!(__pTableViewProvider->DeleteGroupItem(groupIndex, pGroupItem)))
236 GetDefaultItem()->SetAppInfo(null);
237 return __pDefaultItem;
241 pItemCore = &pImpl->GetCore();
246 if ((pImpl = _TableViewItemImpl::GetInstance(*pItem)) == null)
248 if (!(__pTableViewProvider->DeleteItem(index, pItem)))
254 GetDefaultItem()->SetAppInfo(null);
255 return __pDefaultItem;
259 pItemCore = &pImpl->GetCore();
263 if (pItemCore == null)
267 if ((__pTableViewProvider->DeleteGroupItem(groupIndex, pGroupItem)) == false)
275 if ((__pTableViewProvider->DeleteItem(index, pItem)) == false)
282 GetDefaultItem()->SetAppInfo(null);
283 return __pDefaultItem;
288 pItemCore->SetAppInfo(pGroupItem);
292 pItemCore->SetAppInfo(pItem);
299 _TableViewItemProviderAdaptor::UnloadItem(_IListItemCommon* pItemCore, int groupIndex, int itemIndex)
301 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
302 SysTryReturn(NID_UI_CTRL, pItemCore != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] pItemCore is invalid argument.");
304 TableViewItem* pItem = static_cast <TableViewItem*>(pItemCore->GetAppInfo());
305 TableViewItemTag index = {groupIndex, itemIndex};
307 _TableViewItem* pCoreItem = static_cast <_TableViewItem*>(pItemCore);
308 if (pCoreItem->GetParent() != null)
310 pCoreItem->GetParent()->DetachChild(*pCoreItem);
319 // if (pItem->GetParent() != null)
321 // pItem->GetParent()->RemoveControl(*pItem);
324 // pItemCore->Release();
326 pItemCore->SetAppInfo(null);
329 if (__pTableViewProvider->DeleteGroupItem(groupIndex, (TableViewGroupItem*) pItem) == false)
337 if (__pTableViewProvider->DeleteItem(index, pItem) == false)
348 _TableViewItemProviderAdaptor::DeleteItem(_IListItemCommon* pItemCore, int groupIndex, int itemIndex)
350 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
351 SysTryReturn(NID_UI_CTRL, pItemCore != null, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] pItemCore is invalid argument.");
353 TableViewItem* pItem = static_cast <TableViewItem*>(pItemCore->GetAppInfo());
355 _TableViewItem* pCoreItem = static_cast <_TableViewItem*>(pItemCore);
356 if (pCoreItem->GetParent() != null)
358 pCoreItem->GetParent()->DetachChild(*pCoreItem);
367 // pItemCore->Release();
376 _TableViewItemProviderAdaptor::UpdateItem(_IListItemCommon* pItemCore, int groupIndex, int itemIndex)
378 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
380 TableViewItemTag itemTag = {groupIndex, itemIndex};
385 TableViewGroupItem* pItem = static_cast <TableViewGroupItem*>(pItemCore->GetAppInfo());
389 ret = __pTableViewProvider->UpdateGroupItem(itemTag.groupIndex, pItem);
394 TableViewItem* pItem = static_cast <TableViewItem*>(pItemCore->GetAppInfo());
398 ret = __pTableViewProvider->UpdateItem(itemTag, pItem);
406 _TableViewItemProviderAdaptor::SetListWidth(float width)
414 _TableViewItemProviderAdaptor::GetListWidth(void)
420 _TableViewItemProviderAdaptor::SetTableViewStyle(int style)
428 _TableViewItemProviderAdaptor::SetTableViewPresenter(_TableViewPresenter* pPresenter)
430 __pTableViewPresenter = pPresenter;
434 _TableViewItemProviderAdaptor::HasSectionHeader(int groupIndex) const
436 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
438 return __pTableViewProvider->HasSectionHeader(groupIndex);
442 _TableViewItemProviderAdaptor::HasSectionFooter(int groupIndex) const
444 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
446 return __pTableViewProvider->HasSectionFooter(groupIndex);
450 _TableViewItemProviderAdaptor::GetItemHeight(int groupIndex, int itemIndex)
452 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
454 float itemHeight = 0.0f;
458 itemHeight = __pTableViewProvider->GetGroupItemHeight(groupIndex);
462 TableViewItemTag itemTag = {groupIndex, itemIndex};
463 itemHeight = __pTableViewProvider->GetItemHeight(itemTag);
470 _TableViewItemProviderAdaptor::GetDefaultItemHeight(void)
472 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
474 return __pTableViewProvider->GetDefaultItemHeight();
478 _TableViewItemProviderAdaptor::GetDefaultGroupItemHeight(void)
480 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, 0, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
482 return __pTableViewProvider->GetDefaultGroupItemHeight();
486 _TableViewItemProviderAdaptor::IsReorderable(int groupIndexFrom, int groupIndexTo)
488 SysTryReturn(NID_UI_CTRL, __pTableViewProvider != null, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This instance has not provider.");
490 return __pTableViewProvider->IsReorderable(groupIndexFrom, groupIndexTo);
494 _TableViewItemProviderAdaptor::IsOnProcessing()
496 if (__pTableViewProvider != null)
498 return __pTableViewProvider->IsOnProcessing();
504 _TableViewItemProviderAdaptor::GetDefaultItem(void)
506 if (__pDefaultItem == null)
508 __pDefaultItem = _TableViewItem::CreateTableViewItemN(0.0f);
511 return __pDefaultItem;
514 }}} // Tizen::Ui::Controls