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_GroupedListImpl.h
20 * @brief This is the header file for the _GroupedListImpl class.
22 * This header file contains the declarations of the _GroupedListImpl class and its helper classes.
25 #ifndef _FUI_CTRL_INTERNAL_GROUPED_LIST_IMPL_H_
26 #define _FUI_CTRL_INTERNAL_GROUPED_LIST_IMPL_H_
28 #include <FUiControls.h>
29 #include <FUiCtrlIGroupedListViewItemEventListener.h>
30 #include <FUiCtrlITableViewItemEventListener.h>
31 #include <FUiCtrlIFastScrollListener.h>
32 #include <FUiCtrlIGroupedTableViewItemProvider.h>
33 #include "FUiCtrl_CustomListImpl.h"
34 #include "FUiCtrl_TableView.h"
35 #include "FUi_ControlImpl.h"
36 #include "FUiCtrl_ListBaseImpl.h"
37 #include "FUiCtrl_IFastScrollListener.h"
38 #include "FUiCtrl_CustomListItemImpl.h"
40 namespace Tizen { namespace Ui { namespace Controls
43 class _GroupedListItemDataProvider
44 : public Tizen::Ui::Controls::IGroupedTableViewItemProvider
47 _GroupedListItemDataProvider(class _GroupedListImpl* pGroupedListImpl);
48 virtual ~_GroupedListItemDataProvider(void);
50 int GetGroupCount(void);
51 int GetItemCount(int groupIndex);
52 Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
53 Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
54 bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
55 bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
56 bool IsReorderable(int groupIndexFrom, int groupIndexTo);
58 void UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem);
59 void UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem);
60 int GetDefaultGroupItemHeight(void);
61 int GetDefaultItemHeight(void);
64 _GroupedListItemDataProvider(const _GroupedListItemDataProvider& rhs);
65 _GroupedListItemDataProvider& operator =(const _GroupedListItemDataProvider& rhs);
68 _GroupedListImpl* __pList;
69 }; //_GroupedListItemDataProvider
71 class _GroupedListImpl
72 : public _ListBaseImpl
73 , public _ITableViewItemEventListener
74 , public _IUiFastScrollListener
75 , virtual public Tizen::Base::Runtime::IEventListener
78 virtual ~_GroupedListImpl(void);
79 static _GroupedListImpl* CreateGroupedListImplN(GroupedList* pControl, const Tizen::Graphics::Rectangle& bounds, bool itemDivider = true, bool fastScroll = false);
80 virtual const char* GetPublicClassName(void) const;
81 virtual const GroupedList& GetPublic(void) const;
82 virtual GroupedList& GetPublic(void);
83 virtual const _TableView& GetCore(void) const;
84 virtual _TableView& GetCore(void);
85 result Initialize(void);
87 result AddFastScrollEventListener(const Tizen::Ui::IFastScrollEventListener& listener);
89 result RemoveFastScrollEventListener(const Tizen::Ui::IFastScrollEventListener& listener);
91 result AddGroupedItemEventListener(const Tizen::Ui::IGroupedItemEventListener& listener);
93 result RemoveGroupedItemEventListener(const Tizen::Ui::IGroupedItemEventListener& listener);
94 result SetItemProvider(void);
96 result AddGroup(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId = LIST_ITEM_UNSPECIFIED_ID);
98 result AddItem(int groupIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
100 result SetItemAt(int groupIndex, int itemIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
102 result InsertGroupAt(int groupIndex, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId = LIST_ITEM_UNSPECIFIED_ID);
104 result SetGroupAt(int groupIndex, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId = LIST_ITEM_UNSPECIFIED_ID);
106 result InsertItemAt(int groupIndex, int itemIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID);
108 result RemoveItemAt(int groupIndex, int itemIndex);
110 result RemoveAllItemsAt(int groupIndex);
112 result RemoveGroupAt(int groupIndex);
114 result RemoveAllGroups(void);
116 result RemoveAllItems(void);
118 result SetItemEnabled(int groupIndex, int itemIndex, bool enable);
120 bool IsItemEnabled(int groupIndex, int itemIndex) const;
122 result SetItemChecked(int groupIndex, int itemIndex, bool check);
124 bool IsItemChecked(int groupIndex, int itemIndex) const;
126 result SetAllItemsChecked(int groupIndex, bool check);
128 result RemoveAllCheckedItems(void);
130 result RemoveAllCheckedItemsAt(int groupIndex);
132 result GetFirstCheckedItemIndex(int& groupIndex, int& itemIndex) const;
134 result GetLastCheckedItemIndex(int& groupIndex, int& itemIndex) const;
136 result GetNextCheckedItemIndexAfter(int& groupIndex, int& itemIndex) const;
138 int GetGroupIndexFromGroupId(int groupId) const;
140 result GetItemIndexFromItemId(int itemId, int& groupIndex, int& itemIndex) const;
142 result SetFastScrollMainIndex(const Tizen::Base::String& text);
144 void ScrollToBottom(void);
146 void ScrollToTop(void);
148 result ScrollToTop(int groupIndex, int itemIndex);
150 result ScrollToTop(int groupIndex);
152 result RefreshGroup(int groupIndex);
154 result RefreshItem(int groupIndex, int itemIndex);
156 int GetGroupIdAt(int groupIndex) const;
158 int GetItemIdAt(int groupIndex, int itemIndex) const;
160 void SetListBackgroundColor(const Tizen::Graphics::Color& bgColor);
162 void OnTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
163 void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
164 void OnTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int itemIndexFrom, int itemIndexTo);
165 void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
166 void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
167 void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
168 void OnGroupedTableViewItemReordered(_TableView& tableView, int groupIndexFrom, int itemIndexFrom, int groupIndexTo, int itemIndexTo);
169 void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
170 void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
171 void OnTableViewItemSwept(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewSweepDirection direction);
173 virtual void OnUiFastScrollIndexSelected(Tizen::Ui::_Control& source, Tizen::Ui::Controls::_FastScrollIndex& index);
174 virtual void OnBoundsChanged(void);
177 static _GroupedListImpl* GetInstance(GroupedList& groupedList);
178 static const _GroupedListImpl* GetInstance(const GroupedList& groupedList);
181 _GroupedListImpl(Control* pPublic, _TableView* pCore);
182 _GroupedListImpl(const _GroupedListImpl& rhs);
183 _GroupedListImpl& operator =(const _GroupedListImpl& rhs);
184 virtual void ProcessItemStateChange(int groupIndex, int itemIndex, ItemStatus itemStatus);
185 virtual void ProcessItemStateChange(int groupIndex, int itemIndex, int elementId, ItemStatus itemStatus);
187 _GroupedListItemDataProvider* __pItemProvider;
188 Tizen::Ui::IGroupedItemEventListener* __pItemListener;
189 Tizen::Base::String __mainIndexText;
190 int __groupItemHeight;
191 int __groupItemTextFont;
192 Tizen::Base::Collection::LinkedList __itemListenersList;
193 Tizen::Base::Collection::LinkedList __fastScrollListenersList;
194 Tizen::Graphics::Color __bgColor;
196 CustomListItemFormat* __pItemFormat;
198 friend class _GroupedListItemDataProvider;
199 }; //_GroupedListImpl
201 }}} // Tizen::Ui::Controls
204 #endif //_FUI_CTRL_INTERNAL_GROUPED_LIST_IMPL_H_