remove APIs to apply [ACR][03/30][Remove] Remove APIs in Tizen::Ui namespace
[platform/framework/native/uifw.git] / src / ui / inc / FUiCtrl_SlidableGroupedListImpl.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 /**
20  * @file        FUiCtrl_SlidableGroupedListImpl.h
21  * @brief       This is the header file for _SlidableGroupedListImpl class.
22  */
23
24 #ifndef _FUI_CTRL_SLIDABLE_GROUPED_LIST_IMPL_H_
25 #define _FUI_CTRL_SLIDABLE_GROUPED_LIST_IMPL_H_
26
27 #include <FUiISlidableGroupedListEventListener.h>
28 #include <FUiCtrlITableViewItemEventListener.h>
29 #include <FUiCtrlIFastScrollListener.h>
30 #include <FUiCtrlIGroupedTableViewItemProvider.h>
31
32 #include "FUi_ControlImpl.h"
33 #include "FUiCtrl_TableViewItemProvider.h"
34 #include "FUiCtrl_ITableViewItemEventListener.h"
35 #include "FUiCtrl_TableView.h"
36 #include "FUiCtrl_ListBaseImpl.h"
37 #include "FUiCtrl_IFastScrollListener.h"
38 #include "FUiCtrl_CustomListItemImpl.h"
39
40 namespace Tizen { namespace Ui { namespace Controls
41 {
42
43 class _SlidableGroupedListItemProvider
44         : public IGroupedTableViewItemProvider
45 {
46
47 public:
48         _SlidableGroupedListItemProvider(class _SlidableGroupedListImpl* pList);
49         virtual ~_SlidableGroupedListItemProvider(void){}
50
51 public:
52         int GetGroupCount(void);
53         int GetItemCount(int groupIndex);
54         TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
55         TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
56         bool DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem);
57         bool DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem);
58         bool IsReorderable(int groupIndexFrom, int groupIndexTo);
59
60         void UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem);
61         void UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem);
62         int GetDefaultGroupItemHeight(void);
63         int GetDefaultItemHeight(void);
64
65         result UpdateCheckStatus(int groupIndex, int itemIndex);
66         result CallLoadToTopCb(int groupIndex, int itemIndex);
67         result ModifyIndicesAfterTopLoad();
68         _TableViewItemData* LoadAtTop(int groupIndex, int itemIndex);
69         result CallLoadToBottomCb(int groupIndex, int itemIndex);
70         result ModifyIndicesAfterBottomLoad(int groupIndex, int itemIndex);
71         _TableViewItemData* LoadAtBottom(int groupIndex, int itemIndex);
72
73         bool firstTime;
74 private:
75         _SlidableGroupedListItemProvider(const _SlidableGroupedListItemProvider& rhs);
76         _SlidableGroupedListItemProvider& operator =(const _SlidableGroupedListItemProvider& rhs);
77
78
79         _SlidableGroupedListImpl* __pListImpl;
80         int __bottomListenerIndex;
81         int __topListenerIndex;
82 }; //_SlidableGroupedListItemProvider
83
84 class _SlidableGroupObject
85         : public Tizen::Base::Object
86 {
87
88 public:
89         _SlidableGroupObject(void);
90         ~_SlidableGroupObject(void);
91
92 private:
93         _SlidableGroupObject(const _SlidableGroupObject& rhs);
94         _SlidableGroupObject& operator =(const _SlidableGroupObject& rhs);
95
96         int __itemCount;
97         int __groupHeight;
98         int __topIndex;
99
100         Tizen::Base::Collection::ArrayList* __pCheckedList;
101
102         friend class _SlidableGroupedListImpl;
103         friend class _SlidableGroupedListItemProvider;
104
105 }; //_SlidableGroupObject
106
107 class _SlidableGroupedListImpl
108         : public _ITableViewItemEventListener
109         , public _IUiFastScrollListener
110         , public _ListBaseImpl
111 {
112 public:
113         _SlidableGroupedListImpl(Control* pList, _TableView* pCore);
114         ~_SlidableGroupedListImpl(void);
115         static _SlidableGroupedListImpl* CreateSlidableGroupedListImplN(SlidableGroupedList* pControl, bool itemDivider, bool fastScroll);
116
117         //@See doxygen
118         void AddSlidableGroupedListEventListener(Tizen::Ui::ISlidableGroupedListEventListener& listener);
119         //@See doxygen
120         void RemoveSlidableGroupedListEventListener(Tizen::Ui::ISlidableGroupedListEventListener& listener);
121         //@See doxygen
122         void AddFastScrollEventListener(Tizen::Ui::IFastScrollEventListener& listener);
123         //@See doxygen
124         result AddGroup(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int itemCount, int groupHeight, int groupId);
125         //@See doxygen
126         void AddGroupedItemEventListener(Tizen::Ui::IGroupedItemEventListener& listener);
127         //@See doxygen
128         result AddItem(int groupIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
129         //@See doxygen
130         result GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const;
131         //@See doxygen
132         result GetFirstCheckedItemIndex(int& groupIndex, int& itemIndex) const;
133         //@See doxygen
134         int GetGroupIdAt(int groupIndex) const;
135         //@See doxygen
136         int GetGroupIndexFromGroupId(int groupId) const;
137         //@See doxygen
138         result GetFirstLoadedItemIndex(int& groupIndex, int& itemIndex) const;
139         //@See doxygen
140         result GetLastLoadedItemIndex(int& groupIndex, int& itemIndex) const;
141         //@See doxygen
142         result SetFastScrollMainIndex(const Tizen::Base::String& text);
143         //@See doxygen
144         result GetItemIndexFromPosition(int x, int y, int& groupIndex, int& itemIndex) const;
145         //@See doxygen
146         result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex) const;
147         //@See doxygen
148         result InsertGroupAt(int groupIndex, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int itemCount, int groupHeight, int groupId);
149         //@See doxygen
150         result GetLastCheckedItemIndex(int& groupIndex, int& itemIndex) const;
151         //@See doxygen
152         const CustomListItem* GetLoadedItemAt(int groupIndex, int index) const;
153         //@See doxygen
154         int GetLoadedItemIdAt(int groupIndex, int index) const;
155         //@See doxygen
156         result GetNextCheckedItemIndexAfter(int& groupIndex, int& index) const;
157         //@See doxygen
158         result GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const;
159         //@See doxygen
160         bool IsItemChecked(int groupIndex, int index) const;
161         //@See doxygen
162         bool IsItemEnabled(int index) const;
163         //@See doxygen
164         bool IsItemLoaded(int groupIndex, int itemIndex) const;
165         //@See doxygen
166         result RemoveAllGroups(void);
167         //@See doxygen
168         result InsertItemAt(int groupIndex, int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
169         //@See doxygen
170         int GetItemCountAt(int groupIndex) const;
171         //@See doxygen
172         result RefreshItem(int groupIndex, int index);
173         //@See doxygen
174         result RefreshGroup(int groupIndex);
175         //@See doxygen
176         bool IsLoadedItemEnabled(int groupIndex, int index) const;
177         //@See doxygen
178         result LoadItemToTop(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
179         //@See doxygen
180         result LoadItemToBottom(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
181         //@See doxygen
182         result GetLoadedItemIndexFromItemId(int itemId, int& groupIndex, int& itemIndex) const;
183         //@See doxygen
184         result UnloadAllItems(void);
185         //@See doxygen
186         result RemoveAllCheckedItemsAt(int groupIndex, int itemHeight);
187         //@See doxygen
188         result RemoveAllCheckedItems(int itemHeight);
189         //@See doxygen
190         result RemoveAllItemsAt(int groupIndex);
191         //@See doxygen
192         result RemoveAllItems(void);
193         //@See doxygen
194         void RemoveFastScrollEventListener(IFastScrollEventListener& listener);
195         //@See doxygen
196         void RemoveGroupedItemEventListener(IGroupedItemEventListener& listener);
197         //@See doxygen
198         result RemoveItemAt(int groupIndex, int index, int itemHeight);
199         //@See doxygen
200         result RemoveGroupAt(int groupIndex);
201         //@See doxygen
202         void ScrollToBottom(void);
203         //@See doxygen
204         result ScrollToTop(int index);
205         //@See doxygen
206         result ScrollToTop(int groupIndex, int itemIndex);
207         //@See doxygen
208         void ScrollToTop(void);
209         //@See doxygen
210         result SetAllItemsChecked(int groupIndex, bool check);
211         //@See doxygen
212         result SetItemAt(int groupIndex, int itemIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
213         //@See doxygen
214         result SetItemChecked(int groupIndex, int index, bool check);
215         //@See doxygen
216         result SetItemEnabled(int index, bool enable);
217         //@See doxygen
218         result SetLoadedItemEnabled(int groupIndex, int index, bool enable);
219         //@See doxygen
220         result SetGroupAt(int groupIndex, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId);
221
222         void OnTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
223         void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
224         void OnTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int itemIndexFrom, int itemIndexTo);
225         void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
226         void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
227         void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
228         void OnGroupedTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int groupIndexFrom, int itemIndexFrom, int groupIndexTo, int itemIndexTo);
229         void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
230         void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
231         void OnTableViewItemSwept(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewSweepDirection direction);
232
233         void OnUiFastScrollIndexSelected(Tizen::Ui::_Control& source, Tizen::Ui::Controls::_FastScrollIndex& index);
234
235         void OnDraw(void);
236
237         void Initialize(void);
238         int GetTopItemIndex(int groupIndex) const;
239
240 public:
241         static _SlidableGroupedListImpl* GetInstance(SlidableGroupedList& slidableGroupedList);
242         static const _SlidableGroupedListImpl* GetInstance(const SlidableGroupedList& slidableGroupedList);
243
244 private:
245         _SlidableGroupedListImpl(const _SlidableGroupedListImpl& rhs);
246         _SlidableGroupedListImpl& operator =(const _SlidableGroupedListImpl& rhs);
247
248         const char* GetPublicClassName(void) const;
249         const SlidableGroupedList& GetPublic(void) const;
250         SlidableGroupedList& GetPublic(void);
251         const _TableView& GetCore(void) const;
252         _TableView& GetCore(void);
253
254         void ProcessItemStateChange(int groupIndex, int index, int elementId, ItemStatus itemStatus);
255         void ProcessItemStateChange(int groupIndex, int index, ItemStatus itemStatus);
256
257         void CallUnloadItemCb(int groupIndex, int itemIndex);
258
259         int GetCurrentLoadedCount(void);
260         result CreateItemProvider(void);
261         CustomListItem* CreateGroupItemN(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId);
262
263         bool IsCheckedStyle(void);
264         const bool IsCheckedStyle(void) const;
265
266         result CreateGroupObject(int groupIndex, int itemCount, int groupHeight);
267         result UpdateCheckedList(int groupIndex, int index, bool check);
268
269         result SetItemCheckedMarkOnOff(int groupIndex, int index, bool check);
270         result SetItemCheckedRadio(int groupIndex, int index, bool check);
271
272         Tizen::Base::Collection::LinkedList __groupsList;
273         Tizen::Ui::IFastScrollEventListener* __pFastScrollListener;
274         Tizen::Base::String __mainScrollIndex;
275         Tizen::Base::String __subScrollIndex;
276
277         int __bottomGroup;
278         int __topGroup;
279         int __loadedCount;
280         _SlidableGroupedListItemProvider* __pItemProvider;
281         Tizen::Base::Collection::LinkedList __slidableListenersList;
282         Tizen::Base::Collection::LinkedList __itemListenersList;
283         bool __directDelete;
284         bool __forceScroll;
285         bool __isCreating;
286         int __groupItemTextFont;
287         int __groupItemHeight;
288         int __itemCacheSize;
289         CustomListItemFormat* __pItemFormat;
290
291         friend class _SlidableGroupedListItemProvider;
292 }; //_SlidableGroupedListImpl
293
294 }}} //Tizen::Ui::Controls
295
296 #endif // _FUI_CTRL_SLIDABLE_GROUPED_LIST_IMPL_H_