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_TableView.h
20 * @brief This file defines the _TableView class.
23 * This file contains the declarations of TableView Control class and its helper classes.
26 #ifndef _FUI_CTRL_INTERNAL_TABLE_VIEW_H_
27 #define _FUI_CTRL_INTERNAL_TABLE_VIEW_H_
29 #include <FUiCtrlTableViewTypes.h>
30 #include "FUiCtrl_ScrollPanel.h"
31 #include "FUiCtrl_TableViewItemEventArg.h"
32 #include "FUiCtrl_ITableViewItemEventListener.h"
34 namespace Tizen { namespace Ui { namespace Controls
38 class _TableViewItemProvider;
39 class _TableViewItemProviderAdaptor;
40 class _TableViewPresenter;
41 class _IUiFastScrollListener;
42 class _UiTableViewItemEvent;
46 TABLE_VIEW_STYLE_SIMPLE = 0,
47 TABLE_VIEW_STYLE_GROUPED,
48 TABLE_VIEW_STYLE_SECTION
51 struct TableViewItemTag
57 class _OSP_EXPORT_ _TableView
59 , virtual public _ITouchGestureEventListener
60 , virtual public _IUiEventListener
61 , virtual public _IUiEventPreviewer
62 , virtual public Tizen::Base::Runtime::IEventListener
64 DECLARE_CLASS_BEGIN(_TableView, _ScrollPanel);
65 DECLARE_PROPERTY("itemDividerColor", GetPropertyItemDividerColor, SetPropertyItemDividerColor);
66 DECLARE_PROPERTY("textColorOfEmptyTableView", GetPropertyTextColorOfEmptyTableView, SetPropertyTextColorOfEmptyTableView);
67 DECLARE_PROPERTY("textOfEmptyTableView", GetPropertyTextOfEmptyTableView, SetPropertyTextOfEmptyTableView);
68 DECLARE_PROPERTY("sectionColor", GetPropertySectionColor, SetPropertySectionColor);
72 virtual ~_TableView(void);
74 static _TableView* CreateTableViewN(TableViewStyle style, bool itemDivider, TableViewScrollBarStyle scrollStyle);
76 result Initialize(TableViewStyle style, bool itemDivider, TableViewScrollBarStyle scrollStyle);
78 result SetItemProvider(const _TableViewItemProvider* pProvider);
80 void SetItemProviderAdaptor(_TableViewItemProviderAdaptor* pProviderAdaptor);
81 _TableViewItemProviderAdaptor* GetItemProviderAdaptor(void) const;
83 result AddTableViewItemEventListener(const _ITableViewItemEventListener& listener);
84 result RemoveTableViewItemEventListener(const _ITableViewItemEventListener& listener);
85 result AddGroupedTableViewItemEventListener(const _ITableViewItemEventListener& listener);
86 result RemoveGroupedTableViewItemEventListener(const _ITableViewItemEventListener& listener);
87 result AddSectionTableViewItemEventListener(const _ITableViewItemEventListener& listener);
88 result RemoveSectionTableViewItemEventListener(const _ITableViewItemEventListener& listener);
90 result AddFastScrollListener(const _IUiFastScrollListener& listener);
92 result RemoveFastScrollListener(const _IUiFastScrollListener& listener);
94 // touch Event Previewer
95 virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
96 virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
97 virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
98 virtual _UiTouchEventDelivery OnPreviewTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
100 // event handler for ITouchEventListener
101 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
102 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
103 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
104 virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
106 // gestureListener Callback API
107 virtual bool OnFlickGestureDetected(_TouchFlickGestureDetector& gesture);
108 virtual bool OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture);
110 void SetSweepEnabled(bool enable);
111 bool IsSweepEnabled(void) const;
113 bool IsReorderModeEnabled(void) const;
114 result SetReorderModeEnabled(bool enable);
116 _FastScroll* GetFastScrollBar(void) const;
117 result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon);
119 TableViewScrollBarStyle GetScrollStyle(void) const;
120 result SetScrollStyle(TableViewScrollBarStyle scrollStyle);
122 TableViewStyle GetTableViewStyle(void) const;
123 void SetTableViewStyle(TableViewStyle style);
125 result GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const;
126 result SetTopDrawnItemIndex(int groupIndex, int itemIndex); // ScrollToItem();
128 result GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const;
129 result SetBottomDrawnItemIndex(int groupIndex, int itemIndex); // ScrollToItem();
131 result ScrollByPixel(int scrollDistance);
132 void SetScrollEnabled(bool enable);
133 bool IsScrollEnabled(void) const;
135 result SetItemChecked(int groupIndex, int itemIndex, bool check);
136 bool IsItemChecked(int groupIndex, int itemIndex) const;
138 result SetItemEnabled(int groupIndex, int itemIndex, bool enable);
139 bool IsItemEnabled(int groupIndex, int itemIndex) const;
141 int GetGroupCount(void) const;
142 int GetItemCountAt(int groupIndex) const;
144 result RefreshTableView(int groupIndex, int itemIndex, TableViewRefreshType type, bool animation = true);
145 result UpdateTableView(void);
147 result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex) const;
149 result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex, int& elementId) const;
151 Tizen::Graphics::Color GetItemDividerColor(void) const;
152 result SetItemDividerColor(const Tizen::Graphics::Color& color);
154 bool IsItemDividerEnabled(void) const;
155 void SetItemDividerEnabled(bool enable);
157 Tizen::Graphics::Bitmap* GetBitmapOfEmptyTableView(void) const;
158 result SetBitmapOfEmptyTableView(const Tizen::Graphics::Bitmap* pBitmap);
160 Tizen::Graphics::Color GetTextColorOfEmptyTableView(void) const;
161 result SetTextColorOfEmptyTableView(const Tizen::Graphics::Color& color);
163 Tizen::Base::String GetTextOfEmptyTableView(void) const;
164 result SetTextOfEmptyTableView(const Tizen::Base::String& text);
166 Tizen::Graphics::Color GetSectionColor(void) const;
167 result SetSectionColor(const Tizen::Graphics::Color& color);
169 int GetTopMargin(void) const;
170 result SetTopMargin(int topMargin);
172 int GetBottomMargin(void) const;
173 result SetBottomMargin(int bottomMargin);
175 bool IsItemChecked(int index) const;
176 result SetItemChecked(int index, bool check);
178 bool IsItemEnabled(int index) const;
179 result SetItemEnabled(int index, bool enable);
181 void CheckItemHeightAndRefreshLayout(int groupIndex, int itemIndex);
183 _TableViewItem* FindItem(int groupIndex, int itemIndex) const;
184 void UnloadItem(int groupIndex, int itemIndex);
185 _TableViewItem* LoadItem(int groupIndex, int itemIndex);
186 void RefreshItemLayout(int groupIndex, int itemIndex);
187 void GetFirstLoadedItemIndex(int& groupIndex, int& itemIndex) const;
188 void GetLastLoadedItemIndex(int& groupIndex, int& itemIndex) const;
189 void ResetSweepItem(void);
190 int GetPressedItemCount(void);
192 void FireTableViewItemEvent(int groupIndex, int itemIndex, TableViewNotifyType type, _TableViewItem* pItem);
193 void FireTableViewItemSweepEvent(int groupIndex, int itemIndex, TableViewSweepDirection directioin);
194 void FireTableViewItemReorderEvent(int fromItemIndex, int toItemIndex);
195 void FireTableViewItemReorderEvent(int fromGroupIndex, int fromItemIndex, int toGroupIndex, int toItemIndex);
196 void FireTableViewContextItemActivationEvent(int groupIndex, int itemIndex, _TableViewItem* pItem, bool activated);
198 // Item Expand / Collapse
199 result ExpandGroup(int groupIndex);
200 result CollapseGroup(int groupIndex);
201 bool IsGroupExpanded(int groupIndex) const;
203 result ExpandAllGroup(bool animation);
204 result CollapseAllGroup(bool animation);
206 void SetGroupedLookEnabled(bool enable);
207 bool IsGroupedLookEnabled(void) const;
209 bool GetFirstDrawnFlag(void) const;
210 int GetMaxItemCachingSize(void) const;
212 virtual void OnDraw(void);
213 virtual void OnBoundsChanged(void);
215 virtual void OnChildAttached(const _Control& child);
216 virtual void OnChildDetached(const _Control& child);
218 result SetTableViewStatusChanged(bool changed);
222 result SetPropertyItemDividerColor(const Variant& itemDividerColor);
223 Variant GetPropertyItemDividerColor(void) const;
225 result SetPropertyTextColorOfEmptyTableView(const Variant& textColorOfEmptyTableView);
226 Variant GetPropertyTextColorOfEmptyTableView(void) const;
228 result SetPropertyTextOfEmptyTableView(const Variant& textOfEmptyTableView);
229 Variant GetPropertyTextOfEmptyTableView(void) const;
231 result SetPropertySectionColor(const Variant& sectionColor);
232 Variant GetPropertySectionColor(void) const;
236 _TableViewPresenter* GetTableViewPresenter(void) const;
237 void SetTableViewPresenter(const _TableViewPresenter* pPresenter);
240 _TableView(_TableView& rhs);
241 _TableView& operator =(_TableView& rhs);
243 bool IsOnProcessing(void);
247 _TableViewPresenter* __pTableViewPresenter;
248 _FastScroll* __pFastScroll;
249 _UiTableViewItemEvent* __pTableViewItemEvent;
252 bool __itemDividerEnabled;
254 bool __reorderEnabled;
256 bool __groupedLookEnable;
257 TableViewStyle __tableViewStyle;
258 TableViewScrollBarStyle __scrollStyle;
260 Tizen::Graphics::Color __itemDividerColor;
261 Tizen::Graphics::Bitmap* __pBitmapOfEmptyTableView;
262 Tizen::Graphics::Bitmap* __pBackgroundBitmap;
263 Tizen::Base::String __textOfEmptyTableView;
264 Tizen::Graphics::Color __textColorOfEmptyTableView;
265 Tizen::Graphics::Color __sectionStyleColor;
268 }}} // Tizen::Ui::Controls
270 #endif // _FUI_CTRL_INTERNAL_TABLE_VIEW_H_