Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_TableViewImpl.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://floralicense.org/license/
10 //
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.
16 //
17
18 /**
19  * @file                FUiCtrl_TableViewImpl.h
20  * @brief               This file defines the TableViewImpl class.
21  * @version             3.0
22  *
23  * This file contains the declarations of TableViewImpl class.
24  */
25
26 #ifndef _FUI_CTRL_INTERNAL_TABLE_VIEW_IMPL_H_
27 #define _FUI_CTRL_INTERNAL_TABLE_VIEW_IMPL_H_
28
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"
40
41 namespace Tizen { namespace Ui { namespace Controls
42 {
43
44 class ITableViewitemEventListener;
45 class IGroupedTableViewItemEventListener;
46 class ISectionTableViewItemEventListener;
47 class ITableViewItemProvider;
48 class IGroupedTableViewItemProvider;
49 class ISectionTableViewItemProvider;
50 class _ScrollEvent;
51 class _FastScrollEvent;
52
53 struct _TableViewPublic
54 {
55         TableViewStyle style;
56         TableView *pTableView;
57         GroupedTableView *pGroupedTableView;
58         SectionTableView *pSectionTableView;
59
60         _TableViewPublic(void)
61         {
62                  style = TABLE_VIEW_STYLE_SIMPLE;
63                  pTableView = null;
64                  pGroupedTableView = null;
65                  pSectionTableView = null;
66         }
67 };
68
69 class _TableViewImpl
70         : public _ContainerImpl
71         , public _ITableViewItemEventListener
72         , public _IScrollEventListener
73         , public _IUiFastScrollListener
74         , virtual public Tizen::Base::Runtime::IEventListener
75 {
76 public:
77         class TableViewSizeInfo
78                 : public _ControlImpl::SizeInfo
79         {
80                 virtual Tizen::Graphics::Dimension GetDefaultMinimumSize(_ControlOrientation orientation) const;
81         };
82
83 private:
84         _TableViewImpl(Container* pPublic, _TableView* pCore);
85 public:
86         virtual ~_TableViewImpl(void);
87
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);
92
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);
98
99 public:
100         result SetSimpleStyleItemProvider(ITableViewItemProvider* pProvider);
101         result SetGroupedStyleItemProvider(IGroupedTableViewItemProvider* pProvider);
102         result SetSectionStyleItemProvider(ISectionTableViewItemProvider* pProvider);
103
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);
110
111         result AddFastScrollListener(IFastScrollListener& listener);
112         result RemoveFastScrollListener(IFastScrollListener& listener);
113         result AddScrollEventListener(IScrollEventListener& listener);
114         result RemoveScrollEventListener(IScrollEventListener& listener);
115
116         result SetSweepEnabled(bool enable);
117         result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon);
118
119         result GetTopDrawnItemIndex(int &groupIndex, int& itemIndex) const;
120         result GetBottomDrawnItemIndex(int &groupIndex, int& itemIndex) const;
121
122         result ScrollToItem(int groupIndex, int itemIndex, TableViewScrollItemAlignment itemAlignment);
123
124         result ScrollByPixel(int scrollDistance);
125         int GetCurrentScrollPosition(void) const;
126
127         void SetScrollEnabled(bool enable);
128         bool IsScrollEnabled(void) const;
129
130         result SetItemChecked(int groupIndex, int itemIndex, bool check);
131         bool IsItemChecked(int groupIndex, int itemIndex) const;
132
133         result SetItemEnabled(int groupIndex, int itemIndex, bool enable);
134         bool IsItemEnabled(int groupIndex, int itemIndex) const;
135
136         int GetGroupCount(void) const;
137         int GetItemCountAt(int groupIndex) const;
138
139         result RefreshTableView(int groupIndex, int itemIndex, TableViewRefreshType type);
140         result UpdateTableView(void);
141
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;
144
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;
149
150         result SetBitmapOfEmptyTableView(const Tizen::Graphics::Bitmap* pBitmap);
151
152         result SetTextOfEmptyTableView(const Tizen::Base::String& text);
153         Tizen::Base::String GetTextOfEmptyTableView(void) const;
154
155         result SetTextColorOfEmptyTableView(const Tizen::Graphics::Color& color);
156         Tizen::Graphics::Color GetTextColorOfEmptyTableView(void) const;
157
158         // Item Expand / Collapse
159         result ExpandGroup(int groupIndex);
160         result CollapseGroup(int groupIndex);
161         bool IsGroupExpanded(int groupIndex) const;
162
163         result ExpandAllGroup(void);
164         result CollapseAllGroup(void);
165
166         result SetGroupedLookEnabled(bool enable);
167         bool IsGroupedLookEnabled(void) const;
168
169         result BeginReorderingMode(void);
170         result EndReorderingMode(void);
171         bool IsInReorderingMode(void) const;
172
173         void SetScrollInputMode(ScrollInputMode mode);
174         ScrollInputMode GetScrollInputMode(void) const;
175
176         void SetPublic(TableViewStyle style, Container *pPublic);
177
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);
190
191         // _IScrollEventListener
192         virtual void OnScrollEndReached(_Control& source, ScrollEndEvent type);
193         virtual void OnScrollPositionChanged(_Control& source, int scrollPosition);
194         virtual void OnScrollStopped(_Control& source);
195
196         // event handler for _IUiFastScrollListener
197         virtual void OnUiFastScrollIndexSelected(Tizen::Ui::_Control& source, Tizen::Ui::Controls::_FastScrollIndex& index);
198
199
200 public:
201         static _TableViewImpl* GetInstance(TableView& tableView);
202         static const _TableViewImpl* GetInstance(const TableView& tableView);
203
204         static _TableViewImpl* GetInstance(GroupedTableView& tableView);
205         static const _TableViewImpl* GetInstance(const GroupedTableView& tableView);
206
207         static _TableViewImpl* GetInstance(SectionTableView& tableView);
208         static const _TableViewImpl* GetInstance(const SectionTableView& tableView);
209
210 private:
211         _TableViewImpl(_TableViewImpl& rhs);
212         _TableViewImpl& operator =(_TableViewImpl& rhs);
213
214         _TableViewItemEvent* __pTableViewEvent;
215         _ScrollEvent* __pScrollEvent;
216         _FastScrollEvent* __pFastScrollEvent;
217
218         bool __useSearchIcon;
219
220         _TableViewPublic __tableViewPublic;
221
222         //friend class _TableView;
223 };
224
225 }}}     // Tizen::Ui::Controls
226
227 #endif //_FUI_CTRL_INTERNAL_TABLE_VIEW_IMPL_H_