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_TableViewImpl.h
20 * @brief This file defines the TableViewImpl class.
23 * This file contains the declarations of TableViewImpl class.
26 #ifndef _FUI_CTRL_INTERNAL_TABLE_VIEW_IMPL_H_
27 #define _FUI_CTRL_INTERNAL_TABLE_VIEW_IMPL_H_
29 #include <FUiCtrlTableView.h>
30 #include <FUiCtrlGroupedTableView.h>
31 #include <FUiCtrlSectionTableView.h>
32 #include "FUi_ContainerImpl.h"
33 #include "FUiCtrl_TableView.h"
34 #include "FUiCtrl_TableViewItemEvent.h"
35 #include "FUiCtrl_ITableViewItemEventListener.h"
36 #include "FUiCtrl_IScrollEventListener.h"
37 #include "FUiCtrl_FastScrollEvent.h"
38 #include "FUiCtrl_FastScrollEventArg.h"
39 #include "FUiCtrl_IFastScrollListener.h"
41 namespace Tizen { namespace Ui { namespace Controls
44 class ITableViewitemEventListener;
45 class IGroupedTableViewItemEventListener;
46 class ISectionTableViewItemEventListener;
47 class ITableViewItemProvider;
48 class IGroupedTableViewItemProvider;
49 class ISectionTableViewItemProvider;
51 class _FastScrollEvent;
53 struct _TableViewPublic
56 TableView *pTableView;
57 GroupedTableView *pGroupedTableView;
58 SectionTableView *pSectionTableView;
60 _TableViewPublic(void)
62 style = TABLE_VIEW_STYLE_SIMPLE;
64 pGroupedTableView = null;
65 pSectionTableView = null;
70 : public _ContainerImpl
71 , public _ITableViewItemEventListener
72 , public _IScrollEventListener
73 , public _IUiFastScrollListener
74 , virtual public Tizen::Base::Runtime::IEventListener
77 class TableViewSizeInfo
78 : public _ControlImpl::SizeInfo
80 virtual Tizen::Graphics::Dimension GetDefaultMinimumSize(_ControlOrientation orientation) const;
84 _TableViewImpl(Container* pPublic, _TableView* pCore);
86 virtual ~_TableViewImpl(void);
88 static _TableViewImpl* CreateTableViewImplN(Container* pPublic, Tizen::Graphics::Rectangle bounds, TableViewStyle style, bool itemDivider, TableViewScrollBarStyle scrollStyle);
89 static _TableViewImpl* CreateTableViewImplN(TableView* pPublic, Tizen::Graphics::Rectangle bounds, TableViewStyle style, bool itemDivider, TableViewScrollBarStyle scrollStyle);
90 static _TableViewImpl* CreateGroupedTableViewImplN(GroupedTableView* pPublic, Tizen::Graphics::Rectangle bounds, TableViewStyle style, bool itemDivider, TableViewScrollBarStyle scrollStyle);
91 static _TableViewImpl* CreateSectionTableViewImplN(SectionTableView* pPublic, Tizen::Graphics::Rectangle bounds, TableViewStyle style, bool itemDivider, TableViewScrollBarStyle scrollStyle);
93 virtual const char* GetPublicClassName(void) const;
94 // virtual const _TableViewPublic& GetPublic(void) const;
95 // virtual _TableViewPublic& GetPublic(void);
96 virtual const _TableView& GetCore(void) const;
97 virtual _TableView& GetCore(void);
100 result SetSimpleStyleItemProvider(ITableViewItemProvider* pProvider);
101 result SetGroupedStyleItemProvider(IGroupedTableViewItemProvider* pProvider);
102 result SetSectionStyleItemProvider(ISectionTableViewItemProvider* pProvider);
104 result AddTableViewItemEventListener(ITableViewItemEventListener& listener);
105 result RemoveTableViewItemEventListener(ITableViewItemEventListener& listener);
106 result AddGroupedTableViewItemEventListener(IGroupedTableViewItemEventListener& listener);
107 result RemoveGroupedTableViewItemEventListener(IGroupedTableViewItemEventListener& listener);
108 result AddSectionTableViewItemEventListener(ISectionTableViewItemEventListener& listener);
109 result RemoveSectionTableViewItemEventListener(ISectionTableViewItemEventListener& listener);
111 result AddFastScrollListener(IFastScrollListener& listener);
112 result RemoveFastScrollListener(IFastScrollListener& listener);
113 result AddScrollEventListener(IScrollEventListener& listener);
114 result RemoveScrollEventListener(IScrollEventListener& listener);
116 result SetSweepEnabled(bool enable);
117 result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon);
119 result GetTopDrawnItemIndex(int &groupIndex, int& itemIndex) const;
120 result GetBottomDrawnItemIndex(int &groupIndex, int& itemIndex) const;
122 result ScrollToItem(int groupIndex, int itemIndex, TableViewScrollItemAlignment itemAlignment);
124 result ScrollByPixel(int scrollDistance);
125 int GetCurrentScrollPosition(void) const;
127 void SetScrollEnabled(bool enable);
128 bool IsScrollEnabled(void) const;
130 result SetItemChecked(int groupIndex, int itemIndex, bool check);
131 bool IsItemChecked(int groupIndex, int itemIndex) const;
133 result SetItemEnabled(int groupIndex, int itemIndex, bool enable);
134 bool IsItemEnabled(int groupIndex, int itemIndex) const;
136 int GetGroupCount(void) const;
137 int GetItemCountAt(int groupIndex) const;
139 result RefreshTableView(int groupIndex, int itemIndex, TableViewRefreshType type);
140 result UpdateTableView(void);
142 result GetItemIndexFromPosition(int x, int y, int& groupIndex, int& itemIndex) const;
143 result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex) const;
145 result SetSectionColor(const Tizen::Graphics::Color& color);
146 Tizen::Graphics::Color GetSectionColor(void) const;
147 result SetItemDividerColor(const Tizen::Graphics::Color& color);
148 Tizen::Graphics::Color GetItemDividerColor(void) const;
150 result SetBitmapOfEmptyTableView(const Tizen::Graphics::Bitmap* pBitmap);
152 result SetTextOfEmptyTableView(const Tizen::Base::String& text);
153 Tizen::Base::String GetTextOfEmptyTableView(void) const;
155 result SetTextColorOfEmptyTableView(const Tizen::Graphics::Color& color);
156 Tizen::Graphics::Color GetTextColorOfEmptyTableView(void) const;
158 // Item Expand / Collapse
159 result ExpandGroup(int groupIndex);
160 result CollapseGroup(int groupIndex);
161 bool IsGroupExpanded(int groupIndex) const;
163 result ExpandAllGroup(void);
164 result CollapseAllGroup(void);
166 result SetGroupedLookEnabled(bool enable);
167 bool IsGroupedLookEnabled(void) const;
169 result BeginReorderingMode(void);
170 result EndReorderingMode(void);
171 bool IsInReorderingMode(void) const;
173 void SetScrollInputMode(ScrollInputMode mode);
174 ScrollInputMode GetScrollInputMode(void) const;
176 void SetPublic(TableViewStyle style, Container *pPublic);
178 // _ITableViewItemEventListener
179 virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
180 virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
181 virtual void OnTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int itemIndexFrom, int itemIndexTo);
182 virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
183 virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
184 virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
185 virtual void OnGroupedTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int groupIndexFrom, int itemIndexFrom, int groupIndexTo, int itemIndexTo);
186 virtual void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
187 virtual void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
188 virtual void OnTableViewItemSwept(Tizen::Ui::Controls::_TableView& TableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewSweepDirection direction);
189 // virtual void OnTableViewItemLongPressed(Tizen::Ui::Controls::_TableView& tableView, const Tizen::Ui::Controls::TableViewItemTag& itemTag, bool& invokeTableViewItemCallback);
191 // _IScrollEventListener
192 virtual void OnScrollEndReached(_Control& source, ScrollEndEvent type);
193 virtual void OnScrollPositionChanged(_Control& source, int scrollPosition);
194 virtual void OnScrollStopped(_Control& source);
196 // event handler for _IUiFastScrollListener
197 virtual void OnUiFastScrollIndexSelected(Tizen::Ui::_Control& source, Tizen::Ui::Controls::_FastScrollIndex& index);
201 static _TableViewImpl* GetInstance(TableView& tableView);
202 static const _TableViewImpl* GetInstance(const TableView& tableView);
204 static _TableViewImpl* GetInstance(GroupedTableView& tableView);
205 static const _TableViewImpl* GetInstance(const GroupedTableView& tableView);
207 static _TableViewImpl* GetInstance(SectionTableView& tableView);
208 static const _TableViewImpl* GetInstance(const SectionTableView& tableView);
211 _TableViewImpl(_TableViewImpl& rhs);
212 _TableViewImpl& operator =(_TableViewImpl& rhs);
214 _TableViewItemEvent* __pTableViewEvent;
215 _ScrollEvent* __pScrollEvent;
216 _FastScrollEvent* __pFastScrollEvent;
218 bool __useSearchIcon;
220 _TableViewPublic __tableViewPublic;
222 //friend class _TableView;
225 }}} // Tizen::Ui::Controls
227 #endif //_FUI_CTRL_INTERNAL_TABLE_VIEW_IMPL_H_