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_CustomListItemImpl.h
19 * @brief This is the header file for the _CustomListItemImpl class.
21 * This header file contains the declarations of the _CustomListItemImpl class and its helper classes.
24 #ifndef _FUI_CTRL_INTERNAL_CUSTOM_LIST_ITEM_IMPL_H_
25 #define _FUI_CTRL_INTERNAL_CUSTOM_LIST_ITEM_IMPL_H_
27 #include <FBaseString.h>
28 #include <FGrpBitmap.h>
29 #include <FBaseObject.h>
30 #include <FGrpRectangle.h>
31 #include <FGrpCanvas.h>
32 #include <FUiCtrlICustomElement.h>
33 #include "FUiCtrl_CustomListElements.h"
36 namespace Tizen { namespace Ui { namespace Controls
39 extern const int INVALID_INDEX;
41 struct _TableViewItemParams
43 CustomListItem* pItem;
48 bool isDividerEnabled;
49 Tizen::Graphics::Bitmap** pCheckBitmaps;
50 TableViewAnnexStyle annexStyle;
51 }; // _TableViewItemParams
53 struct _TableViewItemUpdateParams
55 CustomListItem* pItem;
56 bool isDividerEnabled;
57 Tizen::Graphics::Bitmap** pCheckBitmaps;
58 TableViewAnnexStyle annexStyle;
59 }; // _TableViewItemUpdateParams
61 class _ITableViewBaseItemData
64 virtual ~_ITableViewBaseItemData(void) {}
66 virtual void GetIndex(int& mainIndex, int& subIndex) const = 0;
67 }; //_ITableViewBaseItemData
69 class _TableViewItemData
70 : public TableViewItem
71 , public _ITableViewBaseItemData
74 _TableViewItemData(void);
75 ~_TableViewItemData(void);
77 result SetEnabled(bool enable);
79 void GetIndex(int& mainIndex, int& subIndex) const;
82 _TableViewItemData(const _TableViewItemData& rhs);
83 _TableViewItemData& operator =(const _TableViewItemData& rhs);
88 }; //_TableViewItemData
90 class _TableViewGroupItemData
91 : public TableViewGroupItem
92 , public _ITableViewBaseItemData
96 _TableViewGroupItemData();
97 ~_TableViewGroupItemData();
99 result SetEnabled(bool enable);
101 void GetIndex(int& mainIndex, int& subIndex) const;
104 _TableViewGroupItemData(const _TableViewGroupItemData& rhs);
105 _TableViewGroupItemData& operator =(const _TableViewGroupItemData& rhs);
109 }; // _TableViewGroupItemData
111 class _CustomListItemImpl
112 : public Tizen::Base::Object
113 , public Tizen::Ui::ITouchEventListener
114 , public Tizen::Base::Runtime::ITimerEventListener
118 virtual ~_CustomListItemImpl(void);
119 static _CustomListItemImpl* CreateInstanceN(int itemHeight);
120 void Initialize(int itemHeight);
121 int GetValue(void) const;
122 result SetCheckBox(int elementId);
123 result SetElement(int elementId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pFocusedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
124 result SetElement(int elementId, const Tizen::Base::String& text);
125 result SetElement(int elementId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pFocusedBitmap);
126 result SetElement(int elementId, const ICustomListElement& element);
127 void SetFocusedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
128 void SetNormalItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
129 void SetHighlightedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
130 void UpdateBitmaps(void);
131 result SetValue(int value);
132 _CheckElementModel* GetCheckElement(void);
134 result SetTextSliding(int elementId, bool enable);
135 void StartSliding(void);
136 void StopSliding(void);
138 // Timer Callback API
139 void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
141 static result SetDividerRequired(Tizen::Base::Collection::LinkedList& elementFormatList, Tizen::Graphics::Rectangle& checkElementBounds, bool& leftDivider, bool& rightDivider);
142 static result CreateTableViewItem(_TableViewItemParams& tableViewItemParams);
143 static TableViewItemBase* CreateTableViewItemN(_TableViewItemParams& tableViewItemParams);
144 static TableViewItemBase* CreateTableViewGroupItemN(_TableViewItemParams& tableViewItemParams);
145 static result UpdateTableViewItem(_TableViewItemUpdateParams& updateItemParams);
147 result SetElementData(_ElementBaseModel* pElement);
148 void SetBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap, TableViewItemDrawingStatus status);
149 _ElementBaseView* GetViewById(int elementId) const;
151 virtual void OnTouchDoublePressed (const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
152 virtual void OnTouchFocusIn (const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
153 virtual void OnTouchFocusOut (const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
154 virtual void OnTouchLongPressed (const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
155 virtual void OnTouchMoved (const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
156 virtual void OnTouchPressed (const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
157 virtual void OnTouchReleased (const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
159 static _CustomListItemFormatImpl* GetFormatImpl(CustomListItem* pItem);
160 static _CustomListItemImpl* GetItemImpl(CustomListItem* pItem);
162 static void DeleteCustomListItem(Tizen::Base::Object* pObj);
163 static _ListBaseImpl* GetListBaseImplFromElement(const Control& element);
166 _CustomListItemImpl(int itemHeight);
167 _CustomListItemImpl(const _CustomListItemImpl& rhs);
168 _CustomListItemImpl& operator =(const _CustomListItemImpl& rhs);
170 _ElementBaseModel* GetElementModelById(int elementId) const;
171 _ElementBaseView* GetElementViewById(int elementId) const;
172 void RemoveElement(int elementId);
174 void UpdateItemBackground(const Control& element, bool isDividerEnabled);
175 void UpdateElements(const Control &source, int elementId, bool isPressed, bool isDividerEnabled);
176 bool IsElementEventEnabled(const Control& source);
177 CustomListItem* GetItemFromElement(const Control& source) const;
178 void GetIndexFromElement(const Control& source, int& groupIndex, int& itemIndex) const;
180 bool IsElementIdValid(Tizen::Base::Collection::LinkedList* pElementFormat, int elementId) const;
182 void StartTextSlideTimer(void);
183 void StopTextSlideTimer(void);
187 Tizen::Base::Collection::LinkedList elements;
190 static const int TEXT_SLIDING_TIMER_DURATION = 60;
193 _TableViewItemData* __pTableViewItemData;
194 _TableViewGroupItemData* __pTableViewGroupItemData;
195 Tizen::Base::Collection::ArrayList* __pSubItemsList;
196 Tizen::Base::Runtime::Timer* __pTextSlideTimer;
197 Tizen::Graphics::Bitmap* __pBitmaps[CUSTOM_LIST_ITEM_STATUS_FOCUSED + 1];
200 friend class _CustomListImpl;
201 friend class _ExpandableListImpl;
202 friend class _ListImpl;
203 friend class _SlidableListImpl;
204 friend class _GroupedListImpl;
205 friend class _SlidableGroupedListImpl;
206 friend class _ListBaseImpl;
208 friend class _GroupedListItemDataProvider;
209 friend class _CustomListItemDataProvider;
210 friend class _ExpandableListItemDataProvider;
211 friend class _SlidableListItemProvider;
212 friend class _SlidableGroupedListItemProvider;
213 friend class _ListItemDataProvider;
214 }; //_CustomListItemImpl
216 }}} //Tizen::Ui::Controls
218 #endif //_FUI_CTRL_INTERNAL_CUSTOM_LIST_ITEM_IMPL_H_