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_TableViewItemProvider.cpp
20 * @brief This file implements the _TableViewItemProvider class.
24 #include <FUiCtrlTableView.h>
25 #include <FUiCtrlITableViewItemProvider.h>
26 #include <FUiCtrlIGroupedTableViewItemProvider.h>
27 #include <FUiCtrlISectionTableViewItemProvider.h>
28 #include <FUiCtrlTableViewItem.h>
29 #include <FUiCtrlTableViewGroupItem.h>
30 #include "FUiCtrl_TableViewItemProvider.h"
31 #include "FUi_ResourceManager.h"
33 using namespace Tizen::Base;
34 using namespace Tizen::Ui;
36 namespace Tizen { namespace Ui { namespace Controls
39 _TableViewItemProvider::_TableViewItemProvider(TableViewStyle style)
40 : __pSimpleProvider(null)
41 , __pGroupedProvider(null)
42 , __pSectionProvider(null)
44 , __onProcessing(false)
49 _TableViewItemProvider::~_TableViewItemProvider(void)
51 __pSimpleProvider = null;
52 __pGroupedProvider = null;
53 __pSectionProvider = null;
56 _TableViewItemProvider*
57 _TableViewItemProvider::CreateTableViewItemProviderN(TableViewStyle style)
61 _TableViewItemProvider* pProvider = new (std::nothrow) _TableViewItemProvider(style);
62 SysTryReturn(NID_UI_CTRL, pProvider != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory shortage.");
68 _TableViewItemProvider::SetSimpleStyleItemProvider(ITableViewItemProvider* pProvider)
70 SysTryReturn(NID_UI_CTRL, __style == TABLE_VIEW_STYLE_SIMPLE, E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The style of TableView is not TABLE_VIEW_STYLE_SECTION");
72 __pSimpleProvider = pProvider;
78 _TableViewItemProvider::SetGroupedStyleItemProvider(IGroupedTableViewItemProvider* pProvider)
80 SysTryReturn(NID_UI_CTRL, __style == TABLE_VIEW_STYLE_GROUPED, E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The style of TableView is not TABLE_VIEW_STYLE_SECTION");
82 __pGroupedProvider = pProvider;
88 _TableViewItemProvider::SetSectionStyleItemProvider(ISectionTableViewItemProvider* pProvider)
90 SysTryReturn(NID_UI_CTRL, __style == TABLE_VIEW_STYLE_SECTION, E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The style of TableView is not TABLE_VIEW_STYLE_SECTION");
92 __pSectionProvider = pProvider;
98 _TableViewItemProvider::GetGroupCount(void)
101 __onProcessing = true;
105 case TABLE_VIEW_STYLE_SIMPLE:
109 case TABLE_VIEW_STYLE_GROUPED:
110 count = __pGroupedProvider->GetGroupCount();
113 case TABLE_VIEW_STYLE_SECTION:
114 count = __pSectionProvider->GetSectionCount();
118 __onProcessing = false;
124 _TableViewItemProvider::GetItemCount(int groupIndex)
128 __onProcessing = true;
132 case TABLE_VIEW_STYLE_SIMPLE:
133 count = __pSimpleProvider->GetItemCount();
136 case TABLE_VIEW_STYLE_GROUPED:
137 count = __pGroupedProvider->GetItemCount(groupIndex);
140 case TABLE_VIEW_STYLE_SECTION:
141 count = __pSectionProvider->GetItemCount(groupIndex);
145 __onProcessing = false;
151 _TableViewItemProvider::GetGroupItemHeight(int groupIndex)
153 return GetDefaultGroupItemHeight();
157 _TableViewItemProvider::GetItemHeight(const TableViewItemTag& itemTag)
159 return GetDefaultItemHeight();
163 _TableViewItemProvider::GetDefaultItemHeight(void)
167 __onProcessing = true;
171 case TABLE_VIEW_STYLE_SIMPLE:
172 height = __pSimpleProvider->GetDefaultItemHeight();
175 case TABLE_VIEW_STYLE_GROUPED:
176 height = __pGroupedProvider->GetDefaultItemHeight();
179 case TABLE_VIEW_STYLE_SECTION:
180 height = __pSectionProvider->GetDefaultItemHeight();
184 __onProcessing = false;
189 _TableViewItemProvider::GetDefaultGroupItemHeight(void)
193 __onProcessing = true;
197 case TABLE_VIEW_STYLE_SIMPLE:
201 case TABLE_VIEW_STYLE_GROUPED:
202 height = __pGroupedProvider->GetDefaultGroupItemHeight();
205 case TABLE_VIEW_STYLE_SECTION:
206 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_DEFAULT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, height);
210 __onProcessing = false;
217 _TableViewItemProvider::CreateGroupItem(int groupIndex, int itemWidth)
219 TableViewGroupItem* pItem = null;
221 __onProcessing = true;
225 case TABLE_VIEW_STYLE_SIMPLE:
229 case TABLE_VIEW_STYLE_GROUPED:
230 pItem = __pGroupedProvider->CreateGroupItem(groupIndex, itemWidth);
233 case TABLE_VIEW_STYLE_SECTION:
238 __onProcessing = false;
244 _TableViewItemProvider::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
248 __onProcessing = true;
252 case TABLE_VIEW_STYLE_SIMPLE:
257 case TABLE_VIEW_STYLE_GROUPED:
258 value = __pGroupedProvider->DeleteGroupItem(groupIndex, pItem);
261 case TABLE_VIEW_STYLE_SECTION:
266 __onProcessing = false;
272 _TableViewItemProvider::CreateItem(const TableViewItemTag& itemTag, int itemWidth)
274 TableViewItem* pItem = null;
276 __onProcessing = true;
280 case TABLE_VIEW_STYLE_SIMPLE:
281 pItem = __pSimpleProvider->CreateItem(itemTag.itemIndex, itemWidth);
284 case TABLE_VIEW_STYLE_GROUPED:
285 pItem = __pGroupedProvider->CreateItem(itemTag.groupIndex, itemTag.itemIndex, itemWidth);
288 case TABLE_VIEW_STYLE_SECTION:
289 pItem = __pSectionProvider->CreateItem(itemTag.groupIndex, itemTag.itemIndex, itemWidth);
293 __onProcessing = false;
299 _TableViewItemProvider::DeleteItem(const TableViewItemTag& itemTag, TableViewItem* pItem)
303 __onProcessing = true;
307 case TABLE_VIEW_STYLE_SIMPLE:
308 value = __pSimpleProvider->DeleteItem(itemTag.itemIndex, pItem);
311 case TABLE_VIEW_STYLE_GROUPED:
312 value = __pGroupedProvider->DeleteItem(itemTag.groupIndex, itemTag.itemIndex, pItem);
315 case TABLE_VIEW_STYLE_SECTION:
316 value = __pSectionProvider->DeleteItem(itemTag.groupIndex, itemTag.itemIndex, pItem);
320 __onProcessing = false;
326 _TableViewItemProvider::UpdateItem(const TableViewItemTag& itemTag, TableViewItem *pItem)
328 __onProcessing = true;
332 case TABLE_VIEW_STYLE_SIMPLE:
333 __pSimpleProvider->UpdateItem(itemTag.itemIndex, pItem);
336 case TABLE_VIEW_STYLE_GROUPED:
337 __pGroupedProvider->UpdateItem(itemTag.groupIndex, itemTag.itemIndex, pItem);
340 case TABLE_VIEW_STYLE_SECTION:
341 __pSectionProvider->UpdateItem(itemTag.groupIndex, itemTag.itemIndex, pItem);
345 __onProcessing = false;
351 _TableViewItemProvider::UpdateGroupItem(int groupIndex, TableViewGroupItem *pItem)
354 __onProcessing = true;
358 case TABLE_VIEW_STYLE_SIMPLE:
362 case TABLE_VIEW_STYLE_GROUPED:
363 __pGroupedProvider->UpdateGroupItem(groupIndex, pItem);
367 case TABLE_VIEW_STYLE_SECTION:
372 __onProcessing = false;
378 _TableViewItemProvider::IsReorderable(int groupIndexFrom, int groupIndexTo)
384 case TABLE_VIEW_STYLE_SIMPLE:
388 case TABLE_VIEW_STYLE_GROUPED:
389 //value = __pGroupedProvider->IsReorderable(groupIndexFrom, groupIndexTo);
393 case TABLE_VIEW_STYLE_SECTION:
402 _TableViewItemProvider::IsOnProcessing()
404 return __onProcessing;
408 _TableViewItemProvider::GetSectionHeader(int groupIndex)
410 SysTryReturn(NID_UI_CTRL, __style == TABLE_VIEW_STYLE_SECTION, String(""), E_INVALID_OPERATION, "[E_INVALID_OPERATION] The style of TableView is not TABLE_VIEW_STYLE_SECTION");
412 return __pSectionProvider->GetSectionHeader(groupIndex);
416 _TableViewItemProvider::HasSectionHeader(int groupIndex)
418 SysTryReturn(NID_UI_CTRL, __style == TABLE_VIEW_STYLE_SECTION, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The style of TableView is not TABLE_VIEW_STYLE_SECTION");
420 return __pSectionProvider->HasSectionHeader(groupIndex);
424 _TableViewItemProvider::GetSectionFooter(int groupIndex)
426 SysTryReturn(NID_UI_CTRL, __style == TABLE_VIEW_STYLE_SECTION, String(""), E_INVALID_OPERATION, "[E_INVALID_OPERATION] The style of TableView is not TABLE_VIEW_STYLE_SECTION");
428 return __pSectionProvider->GetSectionFooter(groupIndex);
432 _TableViewItemProvider::HasSectionFooter(int groupIndex)
434 SysTryReturn(NID_UI_CTRL, __style == TABLE_VIEW_STYLE_SECTION, false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The style of TableView is not TABLE_VIEW_STYLE_SECTION");
436 return __pSectionProvider->HasSectionFooter(groupIndex);
439 }}} // Tizen::Ui::Controls