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.
18 * @file FUiCtrl_ListImpl.h
19 * @brief This is the header file for the _ListImpl class.
22 #ifndef _FUI_CTRL_LIST_IMPL_H_
23 #define _FUI_CTRL_LIST_IMPL_H_
25 #include <FUiCtrlTableView.h>
26 #include "FUiCtrl_TableViewItemProvider.h"
27 #include "FUiCtrl_CustomListItemImpl.h"
28 #include "FUiCtrl_ITableViewItemEventListener.h"
31 namespace Tizen { namespace Ui { namespace Controls
34 extern const int INVALID_INDEX;
39 : public ICustomListElement
43 ~_NumberElement(void);
45 result DrawElement(const Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::CustomListItemStatus itemStatus);
48 _NumberElement(const _NumberElement& rhs);
49 _NumberElement& operator =(const _NumberElement& rhs);
56 class _ListItemDataProvider
57 : public ITableViewItemProvider
60 _ListItemDataProvider(_ListImpl* pListImpl);
61 virtual ~_ListItemDataProvider(void);
63 virtual int GetItemCount(void);
64 virtual TableViewItem* CreateItem(int index, int itemWidth);
65 virtual bool DeleteItem(const int itemIndex, TableViewItem* pItem);
66 virtual int GetDefaultItemHeight(void);
67 virtual void UpdateItem(int itemIndex, TableViewItem* pItem);
70 _ListItemDataProvider(void);
71 _ListItemDataProvider(const _ListItemDataProvider& rhs);
72 _ListItemDataProvider& operator =(const _ListItemDataProvider& rhs);
75 _ListImpl* __pListImpl;
76 }; //_ListItemDataProvider
79 : public _ListBaseImpl
80 , public _ITableViewItemEventListener
83 _ListImpl(Control* pList, _TableView* pCore);
86 virtual const char* GetPublicClassName(void) const;
87 virtual const List& GetPublic(void) const;
88 virtual List& GetPublic(void);
89 virtual const _TableView& GetCore(void) const;
90 virtual _TableView& GetCore(void);
91 static _ListImpl* CreateListImplN(List* pControl, const Tizen::Graphics::Rectangle& bounds);
92 result Initialize(ListItemFormat itemFormat, int row1Height, int row2Height, int column1Width, int column2Width);
93 result UpdateBounds(const Tizen::Graphics::Rectangle& rect);
94 result SetStyle(ListStyle style);
95 void SetListItemFormat(ListItemFormat itemFormat);
96 result InitCustomListItemFormat(void);
97 bool GetTextSlide(ListItemText textIndex);
100 result AddItemEventListener(const Tizen::Ui::IItemEventListener& listener);
102 result RemoveItemEventListener(const Tizen::Ui::IItemEventListener& listener);
104 result AddItem(const Tizen::Base::String* pText1, const Tizen::Base::String* pText2, const Tizen::Graphics::Bitmap* pBitmap1, const Tizen::Graphics::Bitmap* pBitmap2, int itemId = LIST_ITEM_UNSPECIFIED_ID);
106 result InsertItemAt(int index, const Tizen::Base::String* pText1, const Tizen::Base::String* pText2, const Tizen::Graphics::Bitmap* pBitmap1, const Tizen::Graphics::Bitmap* pBitmap2, int itemId = LIST_ITEM_UNSPECIFIED_ID);
108 result SetItemAt(int index, const Tizen::Base::String* pText1, const Tizen::Base::String* pText2, const Tizen::Graphics::Bitmap* pBitmap1, const Tizen::Graphics::Bitmap* pBitmap2, int itemId = LIST_ITEM_UNSPECIFIED_ID);
110 result RemoveItemAt(int index);
112 result RemoveAllItems(void);
114 result SetItemEnabled(int index, bool enable);
116 bool IsItemEnabled(int index) const;
118 void SetFocusedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
120 void SetHighlightedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
122 void SetNormalItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
124 void SetItemTextColor(ListItemText textIndex, const Tizen::Graphics::Color& textColor);
126 Tizen::Graphics::Color GetItemTextColor(ListItemText textIndex) const;
128 void EnableTextSlide(ListItemText textIndex);
130 void DisableTextSlide(void);
132 int GetItemHeight(void) const;
134 int GetRow1Height(void) const;
136 int GetRow2Height(void) const;
138 int GetColumn1Width(void) const;
140 int GetColumn2Width(void) const;
142 result SetRow1Height(int row1Height);
144 result SetRow2Height(int row2Height);
146 result SetColumn1Width(int column1Width);
148 result SetColumn2Width(int column2Width);
150 result SetItemChecked(int index, bool check);
152 bool IsItemChecked(int index) const;
154 result SetAllItemsChecked(bool check);
156 result RemoveAllCheckedItems(void);
158 int GetFirstCheckedItemIndex(void) const;
160 int GetLastCheckedItemIndex(void) const;
162 int GetNextCheckedItemIndexAfter(int index) const;
164 int GetItemIndexFromItemId(int itemId) const;
166 int GetItemIdAt(int index) const;
168 void ScrollToBottom(void);
170 void ScrollToTop(void);
172 result ScrollToTop(int index);
174 result RefreshItem(int index);
176 static _ListImpl* GetInstance(List& list);
177 static const _ListImpl* GetInstance(const List& list);
180 _ListImpl(const _ListImpl& rhs);
181 _ListImpl& operator =(const _ListImpl& rhs);
183 virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
184 virtual void OnTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int itemIndexFrom, int itemIndexTo);
185 virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
186 virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
187 virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
188 virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
189 virtual void OnGroupedTableViewItemReordered(Tizen::Ui::Controls::_TableView& tableView, int groupIndexFrom, int itemIndexFrom, int groupIndexTo, int itemIndexTo);
190 virtual void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
191 virtual void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::_TableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::_TableViewItem* pContextItem, bool activated);
192 virtual void OnTableViewItemSwept(Tizen::Ui::Controls::_TableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewSweepDirection direction);
194 void ProcessItemStateChange(int groupIndex, int itemIndex, ItemStatus itemStatus);
195 void ProcessItemStateChange(int groupIndex, int itemIndex, int elementId, ItemStatus itemStatus);
197 CustomListItem* GetNewItemN(const Tizen::Base::String* pText1, const Tizen::Base::String* pText2,
198 const Tizen::Graphics::Bitmap* pBitmap1, const Tizen::Graphics::Bitmap* pBitmap2, int itemId, int index);
200 void GetElementRects(Tizen::Graphics::Rectangle& text1Rect, Tizen::Graphics::Rectangle& text2Rect, Tizen::Graphics::Rectangle& img1Rect, Tizen::Graphics::Rectangle& img2Rect);
201 result ReDrawList(void);
202 void SetBitmap(TableViewItemDrawingStatus itemStatus, const Tizen::Graphics::Bitmap& bitmap);
203 result UpdateNumbers(int index);
205 result SetItemChecked(int groupIndex, int itemIndex, bool check);
206 bool IsItemChecked(int groupIndex, int subIndex) const;
208 result InitializeItemSizes(int row1Height, int row2height, int column1Width, int column2Width);
209 void GetItemMargins(int& leftMargin, int& numberStyleMargin, int& dividerMargin, int& lowerMargin, int& upperMargin);
212 static const int ID_FORMAT_TEXT1 = 101;
213 static const int ID_FORMAT_TEXT2 = 102;
214 static const int ID_FORMAT_IMAGE1 = 103;
215 static const int ID_FORMAT_IMAGE2 = 104;
216 static const int ID_FORMAT_NUMBER = 105;
217 static const int ID_FORMAT_CHECK = 106;
219 Tizen::Base::Collection::LinkedList __itemListeners;
224 Tizen::Graphics::Color __text1Color;
225 Tizen::Graphics::Color __text2Color;
226 bool __text1SlideEnabled;
227 bool __text2SlideEnabled;
228 ListStyle __listStyle;
229 ListItemFormat __listItemFormat;
230 Tizen::Graphics::Bitmap* __pNormalBgBitmap;
231 Tizen::Graphics::Bitmap* __pHighlightedBgBitmap;
232 Tizen::Graphics::Bitmap* __pFocusedBgBitmap;
233 Tizen::Base::Collection::LinkedList* __pNumberElements;
234 CustomListItemFormat* __pItemFormat;
235 _ListItemDataProvider* __pItemProvider;
239 friend class _ListItemDataProvider;
240 friend class _CustomListItemImpl;
244 } } } //Tizen::Ui::Controls
246 #endif //_FUI_CTRL_LIST_IMPL_H_