Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_CustomListImpl.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_CustomListImpl.h
20  * @brief       This is the header file for the _CustomListImpl class.
21  *
22  * This header file contains the declarations of the _CustomListImpl class and its helper classes.
23  */
24
25 #ifndef _FUI_CTRL_INTERNAL_CUSTOM_LIST_IMPL_H_
26 #define _FUI_CTRL_INTERNAL_CUSTOM_LIST_IMPL_H_
27
28 #include <FUiControls.h>
29 #include <FUiCtrlListView.h>
30 #include <FUiCtrlTableView.h>
31 #include <FUiCtrlITableViewItemEventListener.h>
32 #include "FUiCtrl_TableViewItemProvider.h"
33 #include <FUiCtrlITableViewItemProvider.h>
34 #include "FUiCtrl_TableView.h"
35 #include "FUi_ControlImpl.h"
36 #include "FUiCtrl_ITableViewItemEventListener.h"
37 #include "FUiCtrl_ListBaseImpl.h"
38
39 namespace Tizen { namespace Ui { namespace Controls
40 {
41 extern const int INVALID_INDEX;
42
43 class CustomListItem;
44 class _CustomListImpl;
45
46 class _CustomListItemDataProvider
47         : public ITableViewItemProvider
48 {
49 public:
50         _CustomListItemDataProvider(_CustomListImpl* pList);
51         virtual ~_CustomListItemDataProvider(void);
52
53         virtual int GetItemCount(void);
54         virtual TableViewItem* CreateItem(int index, int itemWidth);
55         virtual bool DeleteItem(const int itemIndex, TableViewItem* pItem);
56         virtual void UpdateItem(int itemIndex, TableViewItem* pItem);
57         virtual int GetDefaultItemHeight(void);
58
59 private:
60         _CustomListItemDataProvider(void);
61         _CustomListItemDataProvider(const _CustomListItemDataProvider& rhs);
62         _CustomListItemDataProvider& operator =(const _CustomListItemDataProvider& rhs);
63
64 private:
65         _CustomListImpl* __pList;
66 };  //_CustomListItemDataProvider
67
68
69 class _CustomListImpl
70         : public _ListBaseImpl
71         , public _ITableViewItemEventListener
72 {
73 public:
74         virtual ~_CustomListImpl(void);
75         virtual const char* GetPublicClassName(void) const;
76         virtual const CustomList& GetPublic(void) const;
77         virtual CustomList& GetPublic(void);
78         virtual const _TableView& GetCore(void) const;
79         virtual _TableView& GetCore(void);
80
81         result Initialize(void);
82         result AddCustomItemEventListener(const ICustomItemEventListener& listener);
83         result RemoveCustomItemEventListener(const ICustomItemEventListener& listener);
84         result AddItem(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
85         result SetItemAt(int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
86         result InsertItemAt(int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
87         result RemoveItemAt(int index);
88         result RemoveAllItems(void);
89         result SetItemEnabled(int index, bool enable);
90         bool IsItemEnabled(int index) const;
91         result SetItemChecked(int index, bool check);
92         bool IsItemChecked(int index) const;
93         result SetAllItemsChecked(bool check);
94         result RemoveAllCheckedItems(void);
95         int GetFirstCheckedItemIndex(void) const;
96         int GetLastCheckedItemIndex(void) const;
97         int GetNextCheckedItemIndexAfter(int index) const;
98         int GetItemIndexFromItemId(int itemId) const;
99         void ScrollToBottom(void);
100         void ScrollToTop(void);
101         result ScrollToTop(int index);
102         result RefreshItem(int index);
103         int GetItemIdAt(int index) const;
104         result InitializeBounds(const Tizen::Graphics::Rectangle& rect);
105
106         void OnTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
107         void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
108         void OnTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int itemIndexFrom, int itemIndexTo);
109         void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
110         void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
111         void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
112         void OnGroupedTableViewItemReordered(_TableView& tableView, int groupIndexFrom, int itemIndexFrom, int groupIndexTo, int itemIndexTo);
113         void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
114         void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
115         void OnTableViewItemSwept(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewSweepDirection direction);
116
117         static _CustomListImpl* CreateCustomListImplN(CustomList* pControl, const Tizen::Graphics::Rectangle& bounds, bool itemDivider);
118         static _CustomListImpl* GetInstance(CustomList& customList);
119         static const _CustomListImpl* GetInstance(const CustomList& customList);
120
121         Tizen::Graphics::Bitmap** GetCheckBitmaps();
122         result SetItemChecked(int groupIndex, int itemIndex, bool check);
123         bool IsItemChecked(int groupIndex, int subIndex) const;
124
125 private:
126         _CustomListImpl(Control* pPublic, _TableView* pCore);
127         _CustomListImpl(const _CustomListImpl& rhs);
128         _CustomListImpl& operator =(const _CustomListImpl& rhs);
129
130         void ProcessItemStateChange(int groupIndex, int itemIndex, int elementId, ItemStatus itemStatus);
131         void ProcessItemStateChange(int groupIndex, int itemIndex, ItemStatus itemStatus);
132
133 private:
134         _CustomListItemDataProvider* __pItemProvider;
135         Tizen::Base::Collection::LinkedList __itemListenersList;
136
137         friend class _CustomListItemDataProvider;
138         friend class _ExpandableListImpl;
139         friend class _SlidableListImpl;
140         friend class _GroupedListImpl;
141         friend class _SlidableGroupedListImpl;
142         friend class _SlidableListItemProvider;
143         friend class _SlidableGroupedListItemProvider;
144         friend class _ListImpl;
145         friend class _TableViewItemData;
146         friend class _CustomListItemImpl;
147
148 }; //_CustomListImpl
149
150 }}} // Tizen::Ui::Controls
151
152 #endif //_FUI_CTRL_INTERNAL_CUSTOM_LIST_IMPL_H_