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_ExpandableListImpl.h
20 * @brief This is the header file for the _ExpandableListImpl class.
22 * This header file contains the declarations of the _ExpandableListImpl class and its helper classes.
25 #ifndef _FUI_CTRL_INTERNAL_EXPANDABLELIST_IMPL_H_
26 #define _FUI_CTRL_INTERNAL_EXPANDABLELIST_IMPL_H_
28 #include <FUiCtrlCustomListItem.h>
29 #include "FUiCtrl_CustomListItemImpl.h"
30 #include <FUiCtrlTableView.h>
31 #include <FUiCtrlITableViewItemEventListener.h>
32 #include "FUiCtrl_TableViewItemProvider.h"
33 #include <FUiCtrlIGroupedTableViewItemProvider.h>
34 #include "FUiCtrl_TableView.h"
35 #include "FUiCtrl_ITableViewItemEventListener.h"
36 #include "FUiCtrl_ListBaseImpl.h"
38 namespace Tizen { namespace Ui { namespace Controls
42 class _TableViewGroupItemData;
43 class _TableViewItemData;
44 class _CheckBoxElement;
45 class _ExpandableListImpl;
47 class _ExpandableListItemDataProvider
48 : public Tizen::Ui::Controls::IGroupedTableViewItemProvider
51 _ExpandableListItemDataProvider(_ExpandableListImpl* pList);
52 virtual ~_ExpandableListItemDataProvider(void);
54 virtual int GetGroupCount(void);
55 virtual int GetItemCount(int groupIndex);
56 virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
57 virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
58 virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
59 virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
60 virtual bool IsReorderable(int groupIndexFrom, int groupIndexTo);
62 void UpdateGroupItem(int groupIndex, TableViewGroupItem *pItem);
63 void UpdateItem(int groupIndex, int itemIndex, TableViewItem *pItem);
64 int GetDefaultGroupItemHeight(void);
65 int GetDefaultItemHeight(void);
68 _ExpandableListItemDataProvider(const _ExpandableListItemDataProvider& rhs);
69 _ExpandableListItemDataProvider& operator =(const _ExpandableListItemDataProvider& rhs);
72 _ExpandableListImpl* __pListImpl;
73 }; //_ExpandableListItemDataProvider
76 class _ExpandableListImpl
77 : public _ListBaseImpl
78 , public _ITableViewItemEventListener
79 , virtual public Tizen::Base::Runtime::IEventListener
82 virtual ~_ExpandableListImpl(void);
83 static _ExpandableListImpl* CreateExpandableListImplN(ExpandableList* pControl, const Tizen::Graphics::Rectangle& bounds, bool itemDivider);
84 virtual const char* GetPublicClassName(void) const;
85 virtual const ExpandableList& GetPublic(void) const;
86 virtual ExpandableList& GetPublic(void);
87 virtual const _TableView& GetCore(void) const;
88 virtual _TableView& GetCore(void);
91 result AddExpandableItemEventListener(const Tizen::Ui::IExpandableItemEventListener& listener);
93 result RemoveExpandableItemEventListener(const Tizen::Ui::IExpandableItemEventListener& listener);
95 result AddItem(const CustomListItem& item, int itemId);
97 result AddSubItem(int mainIndex, const CustomListItem& item, int itemId);
99 result InsertItemAt(int mainIndex, const CustomListItem& item, int itemId);
101 result SetItemAt(int mainIndex, const CustomListItem& item, int itemId);
103 result RemoveItemAt(int mainIndex);
105 result InsertSubItemAt(int mainIndex, int subIndex, const CustomListItem& item, int itemId);
107 result SetSubItemAt(int mainIndex, int subIndex, const CustomListItem& item, int itemId);
109 result RemoveSubItemAt(int mainIndex, int subIndex);
111 result RemoveAllSubItemsAt(int mainIndex);
113 const CustomListItem* GetSubItemAt(int mainIndex, int subIndex) const;
115 result RemoveAllItems(void);
117 int GetItemCount(void) const;
119 int GetSubItemCount(int mainIndex) const;
121 int GetFirstCheckedItemIndex(void) const;
123 int GetItemIdAt(int mainIndex) const;
125 int GetItemIndexFromItemId(int itemId) const;
127 int GetSubItemIdAt(int mainIndex, int subIndex) const;
129 result SetItemExpanded(int mainIndex, bool expand);
131 result SetItemEnabled(int mainIndex, bool enable);
133 bool IsItemEnabled(int mainIndex) const;
135 bool IsItemExpanded(int mainIndex) const;
137 result SetSubItemEnabled(int mainIndex, int subIndex, bool enable);
139 bool IsSubItemEnabled(int mainIndex, int subIndex) const;
141 result SetItemChecked(int mainIndex, bool check);
143 bool IsItemChecked(int mainIndex) const;
145 result SetSubItemChecked(int mainIndex, int subIndex, bool check);
147 bool IsSubItemChecked(int mainIndex, int subIndex) const;
149 result SetAllSubItemsChecked(int mainIndex, bool check);
151 result RemoveAllCheckedSubItemsAt(int mainIndex);
153 int GetFirstCheckedSubItemIndex(int mainIndex) const;
155 int GetLastCheckedItemIndex(void) const;
157 int GetLastCheckedSubItemIndex(int mainIndex) const;
159 int GetNextCheckedItemIndexAfter(int index) const;
161 int GetNextCheckedSubItemIndexAfter(int mainIndex, int subIndex) const;
163 result GetSubItemIndexFromItemId(int itemId, int& mainIndex, int& subIndex) const;
165 result ScrollToBottom(void);
167 result ScrollToTop(void);
169 result ScrollToTop(int mainIndex, int subIndex);
171 result ScrollToTop(int mainIndex);
173 void SetBgColor(const Tizen::Graphics::Color& color);
174 result RefreshItem(int index);
176 result RefreshSubItem(int mainIndex, int subIndex);
178 result Initialize(void);
179 result LoadArrowBitmap(void);
180 result UpdateBounds(const Tizen::Graphics::Rectangle& rect);
181 result SetItemChecked(int groupIndex, int itemIndex, bool check);
182 bool IsItemChecked(int groupIndex, int subIndex) const;
184 void OnTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
185 void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
186 void OnTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int itemIndexFrom, int itemIndexTo);
187 void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
188 void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
189 void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
190 void OnGroupedTableViewItemReordered(_TableView& tableView, int groupIndexFrom, int itemIndexFrom, int groupIndexTo, int itemIndexTo);
191 void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
192 void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
193 void OnTableViewItemSwept(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewSweepDirection direction);
195 virtual void OnTouchPressed (const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
196 int GetCheckedItemCount(int mainIndex);
198 static _ExpandableListImpl* GetInstance(ExpandableList& expandableList);
199 static const _ExpandableListImpl* GetInstance(const ExpandableList& expandableList);
203 static void DeleteExpandStateFlag(Tizen::Base::Object* pObj);
206 _ExpandableListImpl(Control* pPublic, _TableView* pCore);
207 _ExpandableListImpl(const _ExpandableListImpl& rhs);
208 _ExpandableListImpl& operator =(const _ExpandableListImpl& rhs);
209 result AddSubItem(int mainIndex, _TableViewItemData* pCustomItemData);
210 virtual void ProcessItemStateChange(int groupIndex, int itemIndex, int elementId, ItemStatus itemStatus);
211 virtual void ProcessItemStateChange(int groupIndex,int itemIndex, ItemStatus itemStatus);
213 int GetCheckedItemCountAt(int mainIndex) const;
214 result SetSubItemCheckedMarkOnOff(int mainIndex, int subIndex, bool check);
215 result SetSubItemCheckedRadio(int mainIndex, int subIndex, bool check);
217 result CreateArrowIcon(int groupIndex);
220 Tizen::Graphics::Bitmap* __pOpenedImage;
221 Tizen::Graphics::Bitmap* __pClosedImage;
222 friend class _ExpandableListItemDataProvider;
223 _ExpandableListItemDataProvider* __pItemProvider;
224 Tizen::Base::Collection::LinkedList __itemListenersList;
225 Tizen::Graphics::Color __subItemBgColor;
227 Tizen::Base::Collection::ArrayList __groupExpandStateList;
229 static const int _EXPANDABLE_ICON_ID = Tizen::Base::Integer::VALUE_MAX;
230 }; //_ExpandableListImpl
232 }}} //Tizen::Ui::Controls
235 #endif //_FUI_CTRL_INTERNAL_EXPANDABLELIST_IMPL_H_