Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_ListBaseImpl.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://floralicense.org/license/
10 //
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.
16 //
17
18 /**
19  * @file        FUiCtrl_ListBaseImpl.h
20  * @brief       This is the header file for the _ListBaseImpl class.
21  *
22  * This header file contains the declarations of the _ListBaseImpl class and its helper classes.
23  */
24
25 #ifndef _FUI_CTRL_INTERNAL_LIST_COMMON_H_
26 #define _FUI_CTRL_INTERNAL_LIST_COMMON_H_
27
28 #include <FUiControls.h>
29 #include <FUiCtrlTableView.h>
30 #include <FUiCtrlITableViewItemEventListener.h>
31 #include "FUiCtrl_TableView.h"
32 #include "FUi_ResourceManager.h"
33 #include "FUi_ContainerImpl.h"
34
35 namespace Tizen { namespace Ui { namespace Controls
36 {
37
38 class _Label;
39
40 typedef enum _CheckBoxBitmapType
41 {
42         CHECK_BOX_UNCHECKED = 0,
43         CHECK_BOX_CHECKED,
44         CHECK_BOX_DISABLED,
45         CHECK_BOX_MAX
46 }_CheckBoxStatus;
47
48 class _ListBaseImpl
49         : public _ControlImpl
50         , public Tizen::Ui::ITouchEventListener
51 {
52 public:
53         _ListBaseImpl(Control* pList, _TableView* pCore);
54         ~_ListBaseImpl(void);
55
56         result LoadDefaultBitmap(void);
57         Tizen::Graphics::Bitmap** GetCheckBitmaps(void);
58         _TableView& GetCore(void);
59         const _TableView& GetCore(void) const;
60
61         virtual void OnDraw(void);
62         virtual result SetListStyle(CustomListStyle style);
63
64         virtual void ProcessItemStateChange(int groupIndex, int itemIndex, int elementId, ItemStatus itemStatus) = 0;
65         virtual void ProcessItemStateChange(int groupIndex, int itemIndex, ItemStatus itemStatus) = 0;
66
67         virtual result SetItemChecked(int groupIndex, int itemIndex, bool check);
68         virtual bool IsItemChecked(int groupIndex, int itemIndex) const;
69
70         virtual void SetTextOfEmptyList(const Tizen::Base::String& text);
71         virtual void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color);
72         virtual Tizen::Graphics::Color GetTextColorOfEmptyList(void) const;
73
74         virtual result GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const;
75         virtual result GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const;
76
77         result GetItemIndexFromPosition(const Tizen::Graphics::Point& point, int& groupIndex, int& itemIndex) const;
78
79         virtual void OnTouchDoublePressed (const Tizen::Ui::Control &source, const Tizen::Graphics::Point &currentPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
80         virtual void OnTouchFocusIn (const Tizen::Ui::Control &source, const Tizen::Graphics::Point &currentPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
81         virtual void OnTouchFocusOut (const Tizen::Ui::Control &source, const Tizen::Graphics::Point &currentPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
82         virtual void OnTouchLongPressed (const Tizen::Ui::Control &source, const Tizen::Graphics::Point &currentPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
83         virtual void OnTouchMoved (const Tizen::Ui::Control &source, const Tizen::Graphics::Point &currentPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
84         virtual void OnTouchPressed (const Tizen::Ui::Control &source, const Tizen::Graphics::Point &currentPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
85         virtual void OnTouchReleased (const Tizen::Ui::Control &source, const Tizen::Graphics::Point &currentPosition, const Tizen::Ui::TouchEventInfo &touchInfo);
86
87         void UpdateElements(const Control &source, CustomListItemStatus itemStatus);
88
89         result InsertIntoItemsList(const CustomListItem& item, int groupIndex, int itemIndex, bool updateIndexes = true);
90         result RemoveFromItemsList(int groupIndex, int itemIndex, bool updateIndexes = true);
91         result SetInItemsList(const CustomListItem& item, int groupIndex, int itemIndex);
92
93         void RemoveAllFromItemsList(void);
94
95         CustomListItem* GetCustomListItemAt(int groupIndex, int itemIndex);
96         class _TableViewItemData* GetTableViewItemAt(int groupIndex, int itemIndex);
97         class _TableViewGroupItemData* GetTableViewGroupItemAt(int groupIndex);
98
99         const CustomListItem* GetCustomListItemAt(int groupIndex, int itemIndex) const;
100         const class _TableViewItemData* GetTableViewItemAt(int groupIndex, int itemIndex) const;
101         const class _TableViewGroupItemData* GetTableViewGroupItemAt(int groupIndex) const;
102
103         class _CheckElementModel* GetCheckElementAt(int groupIndex, int itemIndex);
104         const class _CheckElementModel* GetCheckElementAt(int groupIndex, int itemIndex) const;
105         void DrawItem(int groupIndex, int itemIndex);
106         virtual int GetTopItemIndex(int groupIndex) const;
107
108         int GetItemCount(void) const;
109         int GetGroupCount(void) const;
110         int GetSubItemCountAt(int groupIndex) const;
111
112         result RemoveFromSubItemsList(int groupIndex);
113
114         bool IsItemNew(const CustomListItem& item) const;
115
116 private:
117         _ListBaseImpl(const _ListBaseImpl& rhs);
118         _ListBaseImpl& operator =(const _ListBaseImpl& rhs);
119
120         result UpdateIndices(int groupIndex, int itemIndex, int updateBy);
121         CustomListItem* GetItemFromControl(const Control &source);
122
123 protected:
124         TableViewAnnexStyle _annexStyle;
125         Tizen::Graphics::Bitmap* _pCheckBitmaps[CHECK_BOX_MAX];
126         int _currentRadioIndex;
127         int _currentRadioGroupIndex;
128         bool _isDividerEnabled;
129         int _defaultItemHeight;
130         Tizen::Base::Collection::ArrayList _itemsList;
131
132 private:
133         _Label* __pEmptyText;
134         Tizen::Graphics::Color __emptyTextColor;
135
136         friend class _CustomListItemImpl;
137 };
138
139 }}} //Tizen::Ui::Controls
140
141 #endif //_FUI_CTRL_INTERNAL_LIST_COMMON_H_