Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_GroupedListViewImpl.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_GroupedListViewImpl.h
20  * @brief               This file defines the GroupedListViewImpl class.
21  * @version             3.0
22  *
23  * This file contains the declarations of GroupedListViewImpl class.
24  */
25
26 #ifndef _FUI_CTRL_GROUPED_LIST_VIEW_IMPL_H_
27 #define _FUI_CTRL_GROUPED_LIST_VIEW_IMPL_H_
28
29 #include "FUi_ControlImpl.h"
30 #include "FUi_TouchEventArg.h"
31 #include "FUiCtrl_IFastScrollListener.h"
32 #include "FUiCtrl_IScrollEventListener.h"
33 #include "FUiCtrl_IUiListViewItemEventListener.h"
34 #include "FUiCtrl_TableView.h"
35
36 namespace Tizen { namespace Ui { namespace Controls
37 {
38
39 class GroupedListView;
40 class _FastScrollEvent;
41 class _Label;
42 class _ListItemEvent;
43 class _ListViewItem;
44 class _PublicLinkEvent;
45 class _ScrollEvent;
46
47 class _GroupedListViewImpl
48         : public _ControlImpl
49         , public _ITableViewItemEventListener
50         , public _IScrollEventListener
51         , public _IUiFastScrollListener
52         , public _IUiListViewItemEventListener
53         , virtual public Tizen::Base::Runtime::IEventListener
54 {
55 public:
56         virtual ~_GroupedListViewImpl(void);
57
58         static _GroupedListViewImpl* CreateGroupedListViewImplN(GroupedListView* pControl, GroupedListViewStyle style,
59                         bool itemDivider, ListScrollStyle scrollStyle);
60
61         virtual const char* GetPublicClassName(void) const;
62
63         virtual const GroupedListView& GetPublic(void) const;
64
65         virtual GroupedListView& GetPublic(void);
66
67         virtual const _TableView& GetCore(void) const;
68
69         virtual _TableView& GetCore(void);
70
71 public:
72         result SetItemProvider(IGroupedListViewItemProvider& provider);
73
74         void AddGroupedListViewItemEventListener(IGroupedListViewItemEventListener& listener);
75
76         void RemoveGroupedListViewItemEventListener(IGroupedListViewItemEventListener& listener);
77
78         void AddFastScrollListener(IFastScrollListener& listener);
79
80         void RemoveFastScrollListener(IFastScrollListener& listener);
81
82         void AddScrollEventListener(IScrollEventListener& listener);
83
84         void RemoveScrollEventListener(IScrollEventListener& listener);
85
86         void AddUiLinkEventListener(const Tizen::Ui::IUiLinkEventListener& listener);
87
88         void RemoveUiLinkEventListener(const Tizen::Ui::IUiLinkEventListener& listener);
89
90         result SetSweepEnabled(bool enable);
91
92         result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon);
93
94         result GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const;
95
96         result GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const;
97
98         result ScrollToItem(int groupIndex, int itemIndex, ListScrollItemAlignment itemAlignment);
99
100         result SetItemChecked(int groupIndex, int itemIndex, bool check);
101
102         bool IsItemChecked(int groupIndex, int itemIndex) const;
103
104         result SetItemEnabled(int groupIndex, int itemIndex, bool enable);
105
106         bool IsItemEnabled(int groupIndex, int itemIndex) const;
107
108         int GetGroupCount(void) const;
109
110         int GetItemCountAt(int groupIndex) const;
111
112         result ShowItemDescriptionText(int groupIndex, int itemIndex);
113
114         result HideItemDescriptionText(int groupIndex, int itemIndex);
115
116         result RefreshList(int groupIndex, int itemIndex, ListRefreshType type);
117
118         result RefreshList(int groupIndex, int itemIndex, int elementId);
119
120         result UpdateList(void);
121
122         result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex) const;
123
124         result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex, int& elementId) const;
125
126         result SetSectionColor(const Tizen::Graphics::Color& color);
127
128         Tizen::Graphics::Color GetSectionColor(void) const;
129
130         result SetItemDividerColor(const Tizen::Graphics::Color& color);
131
132         Tizen::Graphics::Color GetItemDividerColor(void) const;
133
134         void SetListBackgroundColor(const Tizen::Graphics::Color& color);
135
136         result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap);
137
138         result SetBitmapOfEmptyList(const Tizen::Graphics::Bitmap* pBitmap);
139
140         result SetTextOfEmptyList(const Tizen::Base::String& text);
141
142         Tizen::Base::String GetTextOfEmptyList(void) const;
143
144         result SetTextColorOfEmptyList(const Tizen::Graphics::Color& color);
145
146         Tizen::Graphics::Color GetTextColorOfEmptyList(void) const;
147
148         result ExpandGroup(int groupIndex);
149
150         result CollapseGroup(int groupIndex);
151
152         bool IsGroupExpanded(int groupIndex) const;
153
154         result BeginReorderingMode(void);
155
156         result EndReorderingMode(void);
157
158         bool IsInReorderingMode(void) const;
159
160         // _IUiListViewItemEventListener
161         virtual void OnListViewContextItemStateChanged(Tizen::Ui::_Control& source, int groupIndex, int itemIndex, int elementId,
162                         Tizen::Ui::Controls::ListContextItemStatus status);
163
164         virtual void OnListViewItemLongPressed(Tizen::Ui::_Control& source, int groupIndex, int itemIndex, int elementId);
165
166         // _ITableViewItemEventListener
167         virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex,
168                         Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status) {};
169
170         virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex,
171                         Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated) {};
172
173         virtual void OnTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int itemIndexFrom, int itemIndexTo) {};
174
175         virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex,
176                         Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
177
178         virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex,
179                         Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
180
181         virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex,
182                         int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
183
184         virtual void OnGroupedTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int groupIndexFrom, int itemIndexFrom,
185                         int groupIndexTo, int itemIndexTo);
186
187         virtual void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex,
188                         Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
189
190         virtual void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex,
191                         int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
192
193         virtual void OnTableViewItemSwept(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex,
194                         Tizen::Ui::Controls::TableViewSweepDirection direction);
195
196         // _IScrollEventListener
197         virtual void OnScrollEndReached(Tizen::Ui::_Control& source, ScrollEndEvent type);
198
199         virtual void OnScrollPositionChanged(Tizen::Ui::_Control& source, int scrollPos);
200
201         virtual void OnScrollStopped(Tizen::Ui::_Control& source);
202
203         // event handler for _IUiFastScrollListener
204         virtual void OnUiFastScrollIndexSelected(Tizen::Ui::_Control& source, Tizen::Ui::Controls::_FastScrollIndex& index);
205
206         virtual void OnDraw(void);
207
208         virtual void OnBoundsChanged(void);
209
210         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
211
212         virtual void OnFontInfoRequested(unsigned long& style, int& size);
213
214         virtual bool OnTouchPressed(const _ControlImpl& source, const _TouchInfo& touchinfo);
215
216         virtual bool OnTouchReleased(const _ControlImpl& source, const _TouchInfo& touchinfo);
217
218         virtual bool OnTouchMoved(const _ControlImpl& source, const _TouchInfo& touchinfo);
219
220         virtual bool OnTouchCanceled(const _ControlImpl& source, const _TouchInfo& touchinfo);
221
222 public:
223         static _GroupedListViewImpl* GetInstance(GroupedListView& groupedListView);
224         static const _GroupedListViewImpl* GetInstance(const GroupedListView& groupedListView);
225
226 private:
227         _GroupedListViewImpl(GroupedListView* pGroupedList, _TableView* pCore);
228
229         _GroupedListViewImpl(_GroupedListViewImpl& rhs);
230
231         _GroupedListViewImpl& operator =(_GroupedListViewImpl& rhs);
232
233         result SetItemDescriptionTextShowState(int groupIndex, int itemIndex, bool show);
234
235         void AdjustLayoutOfEmptyList(void);
236
237         void CheckEmptyListShowState(void);
238
239         void FireListViewItemEvent(int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem,
240                         Tizen::Ui::Controls::TableViewItemStatus status);
241
242         void FirePublicTouchEvent(const _TouchInfo& touchInfo);
243
244         void FirePublicListener(ITouchEventListener& listener, const TouchEventInfo& touchEventInfo);
245
246         void FireFocusListener(ITouchEventListener& listener, const TouchEventInfo& touchEventInfo);
247
248         _TouchEventArg* GetTouchEventArgN(const _TouchInfo& touchInfo);
249
250 private:
251         _ListItemEvent* __pListItemEvent;
252         _PublicLinkEvent* __pLinkEvent;
253         _ScrollEvent* __pScrollEvent;
254         _FastScrollEvent* __pFastScrollEvent;
255
256         _Label* __pEmptyBitmap;
257         _Label* __pEmptyText;
258         Tizen::Graphics::Color __emptyTextColor;
259
260         bool __redrawListView;
261         _ListViewItem* __pItemNeedsLazyDeletion;
262         _ListViewItem* __pItemSwept;
263 }; // _GroupedListViewImpl
264
265 }}} // Tizen::Ui::Controls
266
267 #endif //_FUI_CTRL_GROUPED_LIST_VIEW_IMPL_H_