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_CustomListImpl.h
20 * @brief This is the header file for the _CustomListImpl class.
22 * This header file contains the declarations of the _CustomListImpl class and its helper classes.
25 #ifndef _FUI_CTRL_INTERNAL_CUSTOM_LIST_IMPL_H_
26 #define _FUI_CTRL_INTERNAL_CUSTOM_LIST_IMPL_H_
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"
39 namespace Tizen { namespace Ui { namespace Controls
41 extern const int INVALID_INDEX;
44 class _CustomListImpl;
46 class _CustomListItemDataProvider
47 : public ITableViewItemProvider
50 _CustomListItemDataProvider(_CustomListImpl* pList);
51 virtual ~_CustomListItemDataProvider(void);
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);
60 _CustomListItemDataProvider(void);
61 _CustomListItemDataProvider(const _CustomListItemDataProvider& rhs);
62 _CustomListItemDataProvider& operator =(const _CustomListItemDataProvider& rhs);
65 _CustomListImpl* __pList;
66 }; //_CustomListItemDataProvider
70 : public _ListBaseImpl
71 , public _ITableViewItemEventListener
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);
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);
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);
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);
121 Tizen::Graphics::Bitmap** GetCheckBitmaps();
122 result SetItemChecked(int groupIndex, int itemIndex, bool check);
123 bool IsItemChecked(int groupIndex, int subIndex) const;
126 _CustomListImpl(Control* pPublic, _TableView* pCore);
127 _CustomListImpl(const _CustomListImpl& rhs);
128 _CustomListImpl& operator =(const _CustomListImpl& rhs);
130 void ProcessItemStateChange(int groupIndex, int itemIndex, int elementId, ItemStatus itemStatus);
131 void ProcessItemStateChange(int groupIndex, int itemIndex, ItemStatus itemStatus);
134 _CustomListItemDataProvider* __pItemProvider;
135 Tizen::Base::Collection::LinkedList __itemListenersList;
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;
150 }}} // Tizen::Ui::Controls
152 #endif //_FUI_CTRL_INTERNAL_CUSTOM_LIST_IMPL_H_