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_TableView.cpp
20 * @brief This file implements the _TableView class.
24 #include <FGrp_BitmapImpl.h>
25 #include "FUi_ControlManager.h"
26 #include "FUi_ResourceManager.h"
27 #include "FUiAnim_VisualElement.h"
28 #include "FUiCtrl_ListViewModel.h"
29 #include "FUiCtrl_FastScroll.h"
30 #include "FUiCtrl_Scroll.h"
31 #include "FUiCtrl_TableView.h"
32 #include "FUiCtrl_TableViewPresenter.h"
33 #include "FUiCtrl_TableViewItem.h"
34 #include "FUiCtrl_TableViewItemProvider.h"
35 #include "FUiCtrl_TableViewItemProviderAdaptor.h"
36 #include "FUiCtrl_UiTableViewItemEvent.h"
39 using namespace Tizen::Base;
40 using namespace Tizen::Ui;
41 using namespace Tizen::Ui::Animations;
42 using namespace Tizen::Graphics;
44 namespace Tizen { namespace Ui { namespace Controls
47 IMPLEMENT_PROPERTY(_TableView);
49 _TableView::_TableView(void)
50 : __pTableViewPresenter(null)
52 , __pTableViewItemEvent(null)
53 , __itemDividerEnabled(false)
54 , __sweepEnabled(false)
55 , __reorderEnabled(false)
56 , __sectionStyle(false)
57 , __groupedLookEnable(false)
58 , __tableViewStyle(TABLE_VIEW_STYLE_SIMPLE)
59 , __scrollStyle(TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT)
60 , __pBitmapOfEmptyTableView(null)
61 , __pBackgroundBitmap(null)
62 , __textOfEmptyTableView(L"Empty TableView")
66 GET_COLOR_CONFIG(TABLEVIEW::BG_NORMAL, bgColor);
67 GET_COLOR_CONFIG(TABLEVIEW::SECTIONITEM_BG_NORMAL, __sectionStyleColor);
68 GET_COLOR_CONFIG(TABLEVIEW::ITEM_DIVIDER_BOTTOM_BG_NORMAL, __itemDividerColor);
70 SetBackgroundColor(bgColor);
73 _TableView::~_TableView(void)
75 GetVisualElement()->RemoveAllAnimations();
77 __pTableViewPresenter = null;
79 if (__pFastScroll != null)
81 DetachSystemChild(*__pFastScroll);
87 delete __pTableViewItemEvent;
88 __pTableViewItemEvent = null;
92 _TableView::CreateTableViewN(TableViewStyle style, bool itemDivider, TableViewScrollBarStyle scrollStyle)
97 _TableView* pTableView = null;
99 _ControlManager* pControlManager = _ControlManager::GetInstance();
100 SysTryReturn(NID_UI_CTRL, pControlManager, null, E_SYSTEM, "[E_SYSTEM] System error occurred.");
102 pTableView = new (std::nothrow) _TableView;
103 SysTryCatch(NID_UI_CTRL, pTableView != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory shortage.");
106 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] Propagating", GetErrorMessage(r));
108 pTableView->AcquireHandle();
110 r = pTableView->Initialize(style, itemDivider, scrollStyle);
111 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Failed to Initialize", GetErrorMessage(r));
121 _TableView::Initialize(TableViewStyle style, bool itemDivider, TableViewScrollBarStyle scrollStyle)
123 result r = E_SUCCESS;
125 _TableViewPresenter* pPresenter = new (std::nothrow) _TableViewPresenter();
126 SysTryReturn(NID_UI_CTRL, pPresenter != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory shortage.");
128 r = pPresenter->Construct(this);
129 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
131 r = _ScrollPanel::Initialize(*pPresenter);
132 SetTableViewPresenter(pPresenter);
133 SetScrollAreaAutoResizingEnabled(false);
135 Rectangle rect = GetBounds();
136 SetScrollAreaBounds(rect);
138 SetTableViewStyle(style);
139 SetScrollStyle(scrollStyle);
140 SetItemDividerEnabled(itemDivider);
146 _TableView::GetTableViewPresenter(void) const
148 return __pTableViewPresenter;
152 _TableView::SetTableViewPresenter(const _TableViewPresenter* pPresenter)
154 _ScrollPanel::SetScrollPanelPresenter(pPresenter);
156 __pTableViewPresenter = const_cast<_TableViewPresenter*>(pPresenter);
160 _TableView::SetItemProvider(const _TableViewItemProvider* pProvider)
162 return __pTableViewPresenter->SetItemProvider(pProvider);
166 _TableView::SetItemProviderAdaptor(_TableViewItemProviderAdaptor* pProviderAdaptor)
168 __pTableViewPresenter->SetTableViewItemProviderAdaptor(pProviderAdaptor);
171 _TableViewItemProviderAdaptor*
172 _TableView::GetItemProviderAdaptor(void) const
174 return __pTableViewPresenter->GetTableViewItemProviderAdaptor();
178 _TableView::SetSweepEnabled(bool enable)
180 __sweepEnabled = enable;
184 _TableView::IsSweepEnabled(void) const
186 return __sweepEnabled;
190 _TableView::IsReorderModeEnabled(void) const
192 return __reorderEnabled;
196 _TableView::SetReorderModeEnabled(bool enable)
198 if (__reorderEnabled != enable)
200 __reorderEnabled = enable;
202 __pTableViewPresenter->SetReorderMode(enable);
209 _TableView::SetItemChecked(int groupIndex, int itemIndex, bool check)
211 if (IsOnProcessing())
213 return E_INVALID_OPERATION;
215 return __pTableViewPresenter->SetItemChecked(groupIndex, itemIndex, check);
219 _TableView::IsItemChecked(int groupIndex, int itemIndex) const
221 return __pTableViewPresenter->IsItemChecked(groupIndex, itemIndex);
225 _TableView::SetItemEnabled(int groupIndex, int itemIndex, bool enable)
227 if (IsOnProcessing())
229 return E_INVALID_OPERATION;
231 return __pTableViewPresenter->SetItemEnabled(groupIndex, itemIndex, enable);
235 _TableView::CheckItemHeightAndRefreshLayout(int groupIndex, int itemIndex)
237 TableViewItemTag itemTag = {groupIndex, itemIndex};
238 __pTableViewPresenter->CheckItemHeightAndRefreshLayout(itemTag, true);
242 _TableView::FindItem(int groupIndex, int itemIndex) const
244 TableViewItemTag itemTag = {groupIndex, itemIndex};
246 return __pTableViewPresenter->FindItem(itemTag);
250 _TableView::UnloadItem(int groupIndex, int itemIndex)
252 if (IsOnProcessing())
256 return __pTableViewPresenter->UnloadItem(groupIndex, itemIndex);
260 _TableView::LoadItem(int groupIndex, int itemIndex)
262 if (IsOnProcessing())
266 return __pTableViewPresenter->LoadItem(groupIndex, itemIndex);
270 _TableView::RefreshItemLayout(int groupIndex, int itemIndex)
272 __pTableViewPresenter->RefreshItemLayout(groupIndex, itemIndex);
276 _TableView::GetFirstLoadedItemIndex(int& groupIndex, int& itemIndex) const
278 __pTableViewPresenter->GetFirstLoadedItemIndex(groupIndex, itemIndex);
282 _TableView::GetLastLoadedItemIndex(int& groupIndex, int& itemIndex) const
284 __pTableViewPresenter->GetLastLoadedItemIndex(groupIndex, itemIndex);
288 _TableView::ResetSweepItem(void)
290 __pTableViewPresenter->ResetSweepItem();
294 _TableView::GetPressedItemCount(void)
296 return __pTableViewPresenter->GetPressedItemCount();
300 _TableView::GetTopMargin(void) const
302 return __pTableViewPresenter->GetTopMargin();
306 _TableView::SetTopMargin(int topMargin)
308 return __pTableViewPresenter->SetTopMargin(topMargin);
312 _TableView::GetBottomMargin(void) const
314 return __pTableViewPresenter->GetBottomMargin();
318 _TableView::SetBottomMargin(int bottomMargin)
320 return __pTableViewPresenter->SetBottomMargin(bottomMargin);
324 _TableView::IsItemEnabled(int groupIndex, int itemIndex) const
326 return __pTableViewPresenter->IsItemEnabled(groupIndex, itemIndex);
330 _TableView::GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const
335 return __pTableViewPresenter->GetTopDrawnItemIndex(groupIndex, itemIndex);
339 _TableView::SetTopDrawnItemIndex(int groupIndex, int itemIndex)
341 if (IsOnProcessing())
343 return E_INVALID_OPERATION;
345 return __pTableViewPresenter->SetTopDrawnItemIndex(groupIndex, itemIndex);
349 _TableView::GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const
354 return __pTableViewPresenter->GetBottomDrawnItemIndex(groupIndex, itemIndex);
358 _TableView::SetBottomDrawnItemIndex(int groupIndex, int itemIndex)
360 if (IsOnProcessing())
362 return E_INVALID_OPERATION;
364 return __pTableViewPresenter->SetBottomDrawnItemIndex(groupIndex, itemIndex);
368 _TableView::ScrollByPixel(int scrollDistance)
370 return __pTableViewPresenter->ScrollByPixel(scrollDistance);
374 _TableView::SetScrollEnabled(bool enable)
376 __pTableViewPresenter->SetScrollEnabled(enable);
380 _TableView::IsScrollEnabled(void) const
382 return __pTableViewPresenter->IsScrollEnabled();
386 _TableView::AddTableViewItemEventListener(const _ITableViewItemEventListener& listener)
388 result r = E_SUCCESS;
390 if (__pTableViewItemEvent == null)
392 __pTableViewItemEvent = new (std::nothrow) _UiTableViewItemEvent();
393 SysTryReturn(NID_UI_CTRL, __pTableViewItemEvent != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
395 r = __pTableViewItemEvent->Construct(this, TABLE_VIEW_STYLE_SIMPLE);
396 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Unable to construct Item Event.");
399 r = __pTableViewItemEvent->AddListener(listener);
400 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
406 _TableView::RemoveTableViewItemEventListener(const _ITableViewItemEventListener& listener)
408 SysTryReturn(NID_UI_CTRL, __pTableViewItemEvent != null, E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] This instance isn't constructed.");
410 return __pTableViewItemEvent->RemoveListener(listener);
414 _TableView::AddGroupedTableViewItemEventListener(const _ITableViewItemEventListener& listener)
416 result r = E_SUCCESS;
418 if (__pTableViewItemEvent == null)
420 __pTableViewItemEvent = new (std::nothrow) _UiTableViewItemEvent();
421 SysTryReturn(NID_UI_CTRL, __pTableViewItemEvent != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
423 r = __pTableViewItemEvent->Construct(this, TABLE_VIEW_STYLE_GROUPED);
424 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Unable to construct Item Event.");
427 r = __pTableViewItemEvent->AddListener(listener);
428 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
434 _TableView::RemoveGroupedTableViewItemEventListener(const _ITableViewItemEventListener& listener)
436 SysTryReturn(NID_UI_CTRL, __pTableViewItemEvent != null, E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] This instance isn't constructed.");
438 return __pTableViewItemEvent->RemoveListener(listener);
442 _TableView::AddSectionTableViewItemEventListener(const _ITableViewItemEventListener& listener)
444 result r = E_SUCCESS;
446 if (__pTableViewItemEvent == null)
448 __pTableViewItemEvent = new (std::nothrow) _UiTableViewItemEvent();
449 SysTryReturn(NID_UI_CTRL, __pTableViewItemEvent != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
451 r = __pTableViewItemEvent->Construct(this, TABLE_VIEW_STYLE_SECTION);
452 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Unable to construct Item Event.");
455 r = __pTableViewItemEvent->AddListener(listener);
456 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
462 _TableView::RemoveSectionTableViewItemEventListener(const _ITableViewItemEventListener& listener)
464 SysTryReturn(NID_UI_CTRL, __pTableViewItemEvent != null, E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] This instance isn't constructed.");
466 return __pTableViewItemEvent->RemoveListener(listener);
470 _TableView::AddFastScrollListener(const _IUiFastScrollListener& listener)
472 SysTryReturn(NID_UI_CTRL, __pFastScroll != null, E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] This instance isn't constructed.");
473 __pFastScroll->AddFastScrollEventListener(listener);
479 _TableView::RemoveFastScrollListener(const _IUiFastScrollListener& listener)
481 SysTryReturn(NID_UI_CTRL, __pFastScroll != null, E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] This instance isn't constructed.");
482 __pFastScroll->RemoveFastScrollEventListener(listener);
488 _TableView::GetFastScrollBar(void) const
490 return __pFastScroll;
494 _TableView::SetFastScrollIndex(const String& text, bool useSearchIcon)
496 SysTryReturn(NID_UI_CTRL, __scrollStyle == TABLE_VIEW_SCROLL_BAR_STYLE_FAST_SCROLL, E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The style of TableView scroll is not TABLE_VIEW_SCROLL_BAR_STYLE_FAST_SCROLL");
497 SysTryReturn(NID_UI_CTRL, __pFastScroll != null, E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] This instance isn't constructed.");
498 result r = E_SUCCESS;
500 const wchar_t* pIndexTextArray = text.GetPointer();
502 int indexCount = text.GetLength();
505 // Set the primary index.
506 _FastScrollIndex* pRootIndex = __pFastScroll->GetIndex();
507 if (pRootIndex == null)
509 pRootIndex = _FastScrollIndex::CreateFastScrollIndexN();
511 SysTryReturn(NID_UI_CTRL, pRootIndex != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
513 r = __pFastScroll->SetIndex(pRootIndex);
514 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
518 pRootIndex->RemoveChildren(true);
521 if (useSearchIcon == true)
523 Bitmap* pSearchIcon = null;
524 String fastScrollSearchIconIndex(L"[SEARCH_ICON_INDEX]");
526 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SEARCH_ICON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSearchIcon);
527 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] SearchIcon image load failed");
529 r = pRootIndex->AddChildIndex(&fastScrollSearchIconIndex, pSearchIcon);
530 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Failed to add text array to the primary index.");
535 r = pRootIndex->AddChildTextIndexArray(childOrder, pIndexTextArray, indexLenth, indexCount);
536 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
538 r = __pFastScroll->UpdateIndex();
539 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
544 _TableView::SetScrollStyle(TableViewScrollBarStyle scrollStyle)
546 __scrollStyle = scrollStyle;
552 _TableView::GetTableViewStyle(void) const
554 return __tableViewStyle;
558 _TableView::SetTableViewStyle(TableViewStyle style)
560 __tableViewStyle = style;
562 if (__tableViewStyle == TABLE_VIEW_STYLE_SECTION)
565 GET_FIXED_VALUE_CONFIG(TABLEVIEW::SECTIONITEM_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, topMargin);
566 SetTopMargin(topMargin);
569 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, x);
570 __pTableViewPresenter->SetLeftMargin(x);
572 __groupedLookEnable = true;
576 TableViewScrollBarStyle
577 _TableView::GetScrollStyle(void) const
579 return __scrollStyle;
583 _TableView::GetGroupCount(void) const
585 return __pTableViewPresenter->GetGroupCount();
589 _TableView::GetItemCountAt(int groupIndex) const
591 SysTryReturn(NID_UI_CTRL, groupIndex >= 0 && groupIndex < GetGroupCount(), -1, E_INVALID_ARG, "[E_INVALID_ARG] Invalid group index.");
593 int itemCount = __pTableViewPresenter->GetItemCountAt(groupIndex);
595 if (GetTableViewStyle() == TABLE_VIEW_STYLE_SECTION)
597 // sub section footer
598 if (__pTableViewPresenter->HasSectionFooter(groupIndex) == true)
612 _TableView::RefreshTableView(int groupIndex, int itemIndex, TableViewRefreshType type, bool animation)
614 if (IsOnProcessing())
616 return E_INVALID_OPERATION;
618 return __pTableViewPresenter->RefreshTableView(groupIndex, itemIndex, type, animation);
622 _TableView::UpdateTableView(void)
624 if (IsOnProcessing())
626 return E_INVALID_OPERATION;
628 return __pTableViewPresenter->UpdateTableView();
632 _TableView::GetItemIndexFromPosition(const Point& position, int& groupIndex, int& itemIndex) const
634 return __pTableViewPresenter->GetItemIndexFromPosition(position, groupIndex, itemIndex);
638 _TableView::SetPropertySectionColor(const Variant& sectionColor)
640 __sectionStyleColor = sectionColor.ToColor();
646 _TableView::SetSectionColor(const Color& color)
648 if (GetTableViewStyle() != TABLE_VIEW_STYLE_SECTION)
650 SysLog(NID_UI_CTRL, "[E_INVALID_OPERATION] The style of TableView is not TABLE_VIEW_STYLE_SECTION.");
651 return E_INVALID_OPERATION;
654 if (__sectionStyleColor == color)
659 result r = SetProperty("sectionColor", Variant(color));
660 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
662 return __pTableViewPresenter->SetStatusChanged(true);
666 _TableView::GetPropertySectionColor(void) const
668 return Variant(__sectionStyleColor);
672 _TableView::GetSectionColor(void) const
674 if (GetTableViewStyle() != TABLE_VIEW_STYLE_SECTION)
676 SetLastResult(E_SUCCESS);
680 Variant sectionColor = GetProperty("sectionColor");
682 return sectionColor.ToColor();
686 _TableView::GetPropertyItemDividerColor(void) const
688 return Variant(__itemDividerColor);
692 _TableView::GetItemDividerColor(void) const
694 Variant itemDividerColor = GetProperty("itemDividerColor");
696 return itemDividerColor.ToColor();
700 _TableView::SetPropertyItemDividerColor(const Variant& itemDividerColor)
702 __itemDividerColor = itemDividerColor.ToColor();
708 _TableView::SetItemDividerColor(const Color& color)
710 return SetProperty("itemDividerColor", Variant(color));
714 _TableView::IsItemDividerEnabled(void) const
716 return __itemDividerEnabled;
720 _TableView::SetItemDividerEnabled(bool enable)
722 __itemDividerEnabled = enable;
726 _TableView::GetBitmapOfEmptyTableView(void) const
728 return __pBitmapOfEmptyTableView;
732 _TableView::SetBitmapOfEmptyTableView(const Bitmap* pBitmap)
734 Bitmap* pCloneBitmap = null;
738 delete __pBitmapOfEmptyTableView;
739 __pBitmapOfEmptyTableView = null;
745 pCloneBitmap = _BitmapImpl::CloneN(*pBitmap);
746 SysTryReturn(NID_UI_CTRL, pCloneBitmap != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
748 delete __pBitmapOfEmptyTableView;
749 __pBitmapOfEmptyTableView = pCloneBitmap;
752 return __pTableViewPresenter->SetStatusChanged(true);
756 _TableView::GetPropertyTextColorOfEmptyTableView(void) const
758 return Variant(__textColorOfEmptyTableView);
762 _TableView::GetTextColorOfEmptyTableView(void) const
764 Variant textColorOfEmptyTableView = GetProperty("textColorOfEmptyTableView");
766 return textColorOfEmptyTableView.ToColor();
770 _TableView::SetPropertyTextColorOfEmptyTableView(const Variant& textColorOfEmptyTableView)
772 __textColorOfEmptyTableView = textColorOfEmptyTableView.ToColor();
778 _TableView::SetTextColorOfEmptyTableView(const Color& color)
780 if (__textColorOfEmptyTableView == color)
785 result r = SetProperty("textColorOfEmptyTableView", Variant(color));
787 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
789 return __pTableViewPresenter->SetStatusChanged(true);
793 _TableView::GetPropertyTextOfEmptyTableView(void) const
795 return Variant(__textOfEmptyTableView);
799 _TableView::GetTextOfEmptyTableView(void) const
801 Variant textOfEmptyTableView = GetProperty("textOfEmptyTableView");
803 return textOfEmptyTableView.ToString();
807 _TableView::SetPropertyTextOfEmptyTableView(const Variant& textOfEmptyTableView)
809 __textOfEmptyTableView = textOfEmptyTableView.ToString();
815 _TableView::SetTextOfEmptyTableView(const String& text)
817 if (__textOfEmptyTableView == text)
822 result r = SetProperty("textOfEmptyTableView", Variant(text));
824 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
826 return __pTableViewPresenter->SetStatusChanged(true);
830 _TableView::FireTableViewItemEvent(int groupIndex, int itemIndex, TableViewNotifyType type, _TableViewItem* pItem)
832 if (type == TABLEVIEW_NOTIFY_TYPE_ANNEX_CHECK)
834 __pTableViewPresenter->GetModel()->SetItemChecked(groupIndex, itemIndex, true);
836 else if (type == TABLEVIEW_NOTIFY_TYPE_ANNEX_UNCHECK)
838 __pTableViewPresenter->GetModel()->SetItemChecked(groupIndex, itemIndex, false);
841 if (__pTableViewItemEvent != null)
843 _TableViewItemEventArg* pArg = new (std::nothrow) _TableViewItemEventArg(groupIndex, itemIndex, 0, 0, pItem, type);
844 SysTryReturnVoidResult(NID_UI_CTRL, pArg, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
845 __pTableViewItemEvent->Fire(*pArg);
850 _TableView::FireTableViewItemSweepEvent(int groupIndex, int itemIndex, TableViewSweepDirection directioin)
852 if (__pTableViewItemEvent != null)
854 _TableViewItemEventArg* pArg = new (std::nothrow) _TableViewItemEventArg(groupIndex, itemIndex, directioin, 0, null, TABLEVIEW_NOTIFY_TYPE_ITEM_SWEPT);
855 SysTryReturnVoidResult(NID_UI_CTRL, pArg, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
856 __pTableViewItemEvent->Fire(*pArg);
861 _TableView::FireTableViewItemReorderEvent(int fromItemIndex, int toItemIndex)
863 if (__pTableViewItemEvent != null)
865 _TableViewItemEventArg* pArg = new (std::nothrow) _TableViewItemEventArg(fromItemIndex, toItemIndex, 0, 0, null, TABLEVIEW_NOTIFY_TYPE_REORDERED_ITEM);
866 SysTryReturnVoidResult(NID_UI_CTRL, pArg, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
867 __pTableViewItemEvent->Fire(*pArg);
871 _TableView::FireTableViewItemReorderEvent(int fromGroupIndex, int fromItemIndex, int toGroupIndex, int toItemIndex)
873 if (__pTableViewItemEvent != null)
875 _TableViewItemEventArg* pArg = new (std::nothrow) _TableViewItemEventArg(fromGroupIndex, fromItemIndex, toGroupIndex, toItemIndex, null, TABLEVIEW_NOTIFY_TYPE_REORDERED_ITEM);
876 SysTryReturnVoidResult(NID_UI_CTRL, pArg, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
877 __pTableViewItemEvent->Fire(*pArg);
882 _TableView::FireTableViewContextItemActivationEvent(int groupIndex, int itemIndex, _TableViewItem* pItem, bool activated)
884 if (__pTableViewItemEvent != null)
886 _TableViewItemEventArg* pArg = new (std::nothrow) _TableViewItemEventArg(groupIndex, itemIndex, 0, 0, pItem, TABLEVIEW_NOTIFY_TYPE_CONTEXT_ITEM_ACTIVATION, activated);
887 SysTryReturnVoidResult(NID_UI_CTRL, pArg, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
888 __pTableViewItemEvent->Fire(*pArg);
893 _TableView::ExpandGroup(int groupIndex)
895 if (IsOnProcessing())
897 return E_INVALID_OPERATION;
899 return __pTableViewPresenter->ExpandGroup(groupIndex, true);
903 _TableView::CollapseGroup(int groupIndex)
905 if (IsOnProcessing())
907 return E_INVALID_OPERATION;
909 return __pTableViewPresenter->CollapseGroup(groupIndex, true);
913 _TableView::IsGroupExpanded(int groupIndex) const
915 return __pTableViewPresenter->IsGroupExpanded(groupIndex);
919 _TableView::ExpandAllGroup(bool animation)
921 if (IsOnProcessing())
923 return E_INVALID_OPERATION;
926 int groupCount = GetGroupCount();
928 for (int i = 0; i < groupCount; i++)
930 __pTableViewPresenter->ExpandGroup(i, false);
937 _TableView::CollapseAllGroup(bool animation)
939 if (IsOnProcessing())
941 return E_INVALID_OPERATION;
944 int groupCount = GetGroupCount();
946 for (int i = 0; i < groupCount; i++)
948 __pTableViewPresenter->CollapseGroup(i, false);
955 _TableView::SetGroupedLookEnabled(bool enable)
957 __groupedLookEnable = enable;
959 if (__tableViewStyle == TABLE_VIEW_STYLE_SECTION && !__groupedLookEnable)
961 __pTableViewPresenter->SetLeftMargin(0);
966 _TableView::IsGroupedLookEnabled(void) const
968 return __groupedLookEnable;
972 _TableView::GetFirstDrawnFlag(void) const
974 return __pTableViewPresenter->GetFirstDrawnFlag();
978 _TableView::GetMaxItemCachingSize(void) const
980 return __pTableViewPresenter->GetMaxItemCachingSize();
984 _TableView::OnDraw(void)
986 __pTableViewPresenter->Draw();
990 _TableView::OnChildAttached(const _Control& child)
992 _ScrollPanel::OnChildAttached(child);
996 _TableView::OnChildDetached(const _Control& child)
998 _ScrollPanel::OnChildDetached(child);
1002 _TableView::OnBoundsChanged(void)
1004 if (__scrollStyle == TABLE_VIEW_SCROLL_BAR_STYLE_FAST_SCROLL || __scrollStyle == TABLE_VIEW_SCROLL_BAR_STYLE_NONE)
1006 _Scroll* pScroll = _ScrollPanel::GetScrollBar();
1007 if (pScroll == null)
1009 Rectangle bounds = GetBounds();
1011 pScroll = _Scroll::CreateScrollN(*this,
1012 SCROLL_DIRECTION_VERTICAL,
1020 SysTryReturnVoidResult(NID_UI_CTRL, pScroll != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
1022 pScroll->EnableScrollingEffect(false);
1023 pScroll->SetVisibleState(false);
1024 _ScrollPanel::SetScrollBar(pScroll);
1026 pScroll->AddScrollEventListener(*this);
1027 AttachSystemChild(*pScroll);
1030 if (__pFastScroll == null && __scrollStyle == TABLE_VIEW_SCROLL_BAR_STYLE_FAST_SCROLL)
1032 __pFastScroll = _FastScroll::CreateFastScrollN(*this);
1033 if (__pFastScroll != null)
1035 AttachSystemChild(*__pFastScroll);
1041 _Scroll* pScroll = _ScrollPanel::GetScrollBar();
1043 if (pScroll == null)
1045 Rectangle bounds = GetBounds();
1047 pScroll = _Scroll::CreateScrollN(*this,
1048 SCROLL_DIRECTION_VERTICAL,
1049 ((__scrollStyle == TABLE_VIEW_SCROLL_BAR_STYLE_FIXED) ? false : true),
1050 ((__scrollStyle == TABLE_VIEW_SCROLL_BAR_STYLE_JUMP_TO_TOP) ? true : false),
1051 ((__scrollStyle == TABLE_VIEW_SCROLL_BAR_STYLE_THUMB) ? true : false),
1052 ((__scrollStyle == TABLE_VIEW_SCROLL_BAR_STYLE_FIXED) ? true : false),
1056 SysTryReturnVoidResult(NID_UI_CTRL, pScroll != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
1058 pScroll->EnableScrollingEffect(true);
1059 _ScrollPanel::SetScrollBar(pScroll);
1061 pScroll->AddScrollEventListener(*this);
1062 AttachSystemChild(*pScroll);
1066 _ScrollPanel::OnBoundsChanged();
1069 _UiTouchEventDelivery
1070 _TableView::OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1072 return __pTableViewPresenter->OnPreviewTouchPressed(source, touchinfo);
1075 _UiTouchEventDelivery
1076 _TableView::OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1078 return __pTableViewPresenter->OnPreviewTouchMoved(source, touchinfo);
1081 _UiTouchEventDelivery
1082 _TableView::OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1084 return __pTableViewPresenter->OnPreviewTouchReleased(source, touchinfo);
1087 _UiTouchEventDelivery
1088 _TableView::OnPreviewTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
1090 return __pTableViewPresenter->OnPreviewTouchCanceled(source, touchinfo);
1094 _TableView::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1096 return __pTableViewPresenter->OnTouchPressed(source, touchinfo);
1100 _TableView::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1102 return __pTableViewPresenter->OnTouchMoved(source, touchinfo);
1106 _TableView::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1108 return __pTableViewPresenter->OnTouchReleased(source, touchinfo);
1112 _TableView::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
1114 return __pTableViewPresenter->OnTouchCanceled(source, touchinfo);
1118 _TableView::OnFlickGestureDetected(_TouchFlickGestureDetector& gesture)
1120 return __pTableViewPresenter->OnFlickGestureDetected(gesture);
1124 _TableView::OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture)
1126 return __pTableViewPresenter->OnFlickGestureCanceled(gesture);
1130 _TableView::SetTableViewStatusChanged(bool changed)
1132 return __pTableViewPresenter->SetStatusChanged(changed);
1136 _TableView::IsOnProcessing(void)
1138 _TableViewItemProviderAdaptor* pProviderAdapter = __pTableViewPresenter->GetTableViewItemProviderAdaptor();
1139 if (pProviderAdapter != null)
1141 if (pProviderAdapter->IsOnProcessing())
1150 }}} // Tizen::Ui::Controls