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_SlidableListImpl.h
20 * @brief This is the header file for the _SlidableListImpl class.
23 #ifndef _FUI_CTRL_SLIDABLE_LIST_IMPL_H_
24 #define _FUI_CTRL_SLIDABLE_LIST_IMPL_H_
26 #include <FUiISlidableListEventListener.h>
28 #include "FUiCtrl_CustomListItemImpl.h"
29 #include "FUiCtrl_IFastScrollListener.h"
30 #include "FUiCtrl_TableView.h"
31 #include "FUiCtrl_ListBaseImpl.h"
33 namespace Tizen { namespace Ui { namespace Controls
37 class _SlidableListImpl;
38 class _TableViewItemData;
40 class _SlidableListItemProvider
41 : public ITableViewItemProvider
44 _SlidableListItemProvider(_SlidableListImpl* pList);
45 virtual ~_SlidableListItemProvider(void){}
48 virtual int GetItemCount(void);
49 virtual TableViewItem* CreateItem(int index, int itemWidth);
50 virtual bool DeleteItem(const int itemIndex, TableViewItem* pItem);
51 virtual void UpdateItem(int itemIndex, TableViewItem* pItem);
52 virtual int GetDefaultItemHeight(void);
54 result UpdateCheckStatus(_TableViewItemData* pTableViewItemData, int index);
55 result CallLoadToTopCb(int index);
56 _TableViewItemData* LoadAtTop(int index);
57 result CallLoadToBottomCb(int index);
58 _TableViewItemData* LoadAtBottom(int index);
61 int bottomListenerIndex;
65 _SlidableListItemProvider(const _SlidableListItemProvider& rhs);
66 _SlidableListItemProvider& operator =(const _SlidableListItemProvider& rhs);
67 _SlidableListImpl* __pListImpl;
69 friend class _CustomListItemImpl;
71 }; //_SlidableListItemProvider
73 class _SlidableListImpl
74 : public _ListBaseImpl
75 , public _ITableViewItemEventListener
78 _SlidableListImpl(Control* pList, _TableView* pCore);
79 ~_SlidableListImpl(void);
81 void ProcessItemStateChange(int groupIndex, int index, int elementId, ItemStatus itemStatus);
82 void ProcessItemStateChange(int groupIndex, int index, ItemStatus itemStatus);
85 static _SlidableListImpl* CreateSlidableListImplN(SlidableList* pControl, const Tizen::Graphics::Rectangle& bounds, bool itemDivider);
87 void AddSlidableListEventListener(const Tizen::Ui::ISlidableListEventListener& listener);
88 void RemoveSlidableListEventListener(const Tizen::Ui::ISlidableListEventListener& listener);
90 void AddCustomItemEventListener(const Tizen::Ui::ICustomItemEventListener& listener);
92 result AddItem(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
94 int GetBottomDrawnItemIndex(void) const;
96 int GetFirstCheckedItemIndex(void) const;
98 int GetFirstLoadedItemIndex(void) const;
100 int GetLastLoadedItemIndex(void) const;
102 int GetItemCount(void) const;
103 int GetItemIndexFromItemId(int itemId) const;
105 int GetItemIndexFromPosition(int x, int y) const;
107 int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const;
109 int GetLastCheckedItemIndex(void) const;
111 const CustomListItem* GetLoadedItemAt(int index) const;
113 int GetLoadedItemIdAt(int index) const;
115 int GetNextCheckedItemIndexAfter(int index) const;
117 Tizen::Graphics::Color GetTextColorOfEmptyList(void) const;
119 int GetTopDrawnItemIndex(void) const;
121 result InsertItemAt(int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
123 bool IsItemChecked(int index) const;
125 bool IsItemLoaded(int index) const;
127 bool IsLoadedItemEnabled(int index) const;
129 result LoadItemToTop(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
131 result LoadItemToBottom(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
133 void SetItemCountAndHeight(int count, int listHeight);
136 int GetLoadedItemIndexFromItemId(int itemId) const;
139 result UnloadAllItems(void);
141 result RefreshItem(int index);
143 result RemoveAllCheckedItems(int itemHeight);
145 result RemoveAllItems(void);
147 void RemoveCustomItemEventListener(const Tizen::Ui::ICustomItemEventListener& listener);
149 result RemoveItemAt(int index, int itemHeight);
151 void ScrollToBottom(void);
153 result ScrollToTop(int index);
155 void ScrollToTop(void);
157 result SetAllItemsChecked(bool check);
160 result SetItemAt(int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
162 result SetItemChecked(int index, bool check);
163 result SetItemChecked(int groupindex, int index, bool check);
165 result SetLoadedItemEnabled(int index, bool enable);
167 void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color);
169 void SetTextOfEmptyList(const Tizen::Base::String& text);
171 virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
173 virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
175 virtual void OnTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int itemIndexFrom, int itemIndexTo);
177 virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
179 virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
181 virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
183 virtual void OnGroupedTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int groupIndexFrom, int itemIndexFrom, int groupIndexTo, int itemIndexTo);
185 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);
189 virtual void OnTableViewItemSwept(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewSweepDirection direction);
191 result Initalize(void);
192 result UpdateBounds(const Tizen::Graphics::Rectangle& rect);
195 int GetTopItemIndex(void);
196 bool IsItemChecked(int groupIndex, int subIndex) const;
199 static _SlidableListImpl* GetInstance(SlidableList& slidableList);
200 static const _SlidableListImpl* GetInstance(const SlidableList& slidableList);
203 _SlidableListImpl(const _SlidableListImpl& rhs);
204 _SlidableListImpl& operator =(const _SlidableListImpl& rhs);
206 void CallUnloadItemCb(int index);
207 void HandleItemStateChanged(int index, int elementId, ItemStatus itemStatus);
208 void HandleItemStateChanged(int index, ItemStatus itemStatus);
209 bool IsCheckedStyle(void);
210 const bool IsCheckedStyle(void) const;
212 result CreateItemProvider(void);
214 const char* GetPublicClassName(void) const;
215 const SlidableList& GetPublic(void) const;
216 SlidableList& GetPublic(void);
217 const _TableView& GetCore(void) const;
218 _TableView& GetCore(void);
220 Tizen::Base::Collection::ArrayList* __pCheckedList;
221 Tizen::Base::Collection::LinkedList __slidableListenersList;
222 Tizen::Base::Collection::LinkedList __itemListenersList;
224 int __totalItemCount;
226 _SlidableListItemProvider* __pItemProvider;
227 bool __isDirectDelete;
230 static const int LISTVIEW_MAX_ITEM_COUNT = 30;
231 static const int LISTVIEW_ITEM_HEIGHT = 100;
232 friend class _SlidableListItemProvider;
233 friend class _CustomListItemImpl;
234 }; //_SlidableListImpl
235 }}} //Tizen::Ui::Controls
237 #endif // _FUI_CTRL_SLIDABLE_LIST_IMPL_H_