Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_IconListItem.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_IconListItem.h
20  * @brief               This is the header file for the _IconListItem class.
21  */
22
23 #ifndef _FUI_CTRL_INTERNAL_ICON_LIST_ITEM_H_
24 #define _FUI_CTRL_INTERNAL_ICON_LIST_ITEM_H_
25
26 #include <FBaseString.h>
27 #include <FGrpBitmap.h>
28 #include <FGrpCanvas.h>
29 #include <FGrpColor.h>
30 #include <FGrpRectangle.h>
31 #include <FUiCtrlControlsTypes.h>
32 #include <FUiCtrlIconListViewTypes.h>
33 #include <FGrp_TextTextObject.h>
34 #include "FUiCtrl_LinkedList.h"
35 #include "FUiCtrl_ListItemCommon.h"
36
37 namespace Tizen { namespace Ui
38 {
39
40 namespace Animations
41 {
42 class _VisualElement;
43 } // Tizen::Ui::Animations
44
45 namespace Controls
46 {
47
48 class IconListViewItem;
49 class _IconListItemDrawingProperty;
50
51 struct _OverlayBitmap
52 {
53         int id;
54         Tizen::Graphics::Bitmap* pBitmap;
55         HorizontalAlignment horizontalAlignment;
56         VerticalAlignment verticalAlignment;
57         Tizen::Ui::Animations::_VisualElement* pVE;
58 };
59
60 class _IconListItem
61         : public _ListItemCommon
62 {
63 // Lifecycle
64
65 public:
66         virtual ~_IconListItem(void);
67
68         static _IconListItem* CreateIconListItemN(IconListViewItem* pIconListViewItem);
69
70         // _ListItemCommon
71         virtual bool DrawItem(Tizen::Graphics::Rectangle& rcItem, ListItemState isFocused, bool itemDivider = false);
72         virtual void SetChecked(bool checked);
73         virtual void SetItemIndex(int groupIndex, int itemIndex);
74         virtual void GetItemIndex(int& groupIndex, int& itemIndex) const;
75
76         result DrawItemTouchAnimation(Tizen::Graphics::Rectangle& rcItem, float ratio);
77         result DrawItemCheckAnimation(Tizen::Graphics::Rectangle& rcItem, float ratio);
78
79         result SetText(const Tizen::Base::String* pText);
80
81         const Tizen::Base::String& GetText(void) const;
82
83         result SetBitmap(IconListViewItemDrawingStatus status, const Tizen::Graphics::Bitmap* pBitmap);
84
85         const Tizen::Graphics::Bitmap* GetBitmap(IconListViewItemDrawingStatus status) const;
86
87         Tizen::Ui::Animations::_VisualElement* GetVisualElement(void) const;
88
89         void ClearVisualElement(void);
90
91         result SetDrawingProperty(_IconListItemDrawingProperty& property);
92
93         result SetOverlayBitmap(int overlayBitmapId, const Tizen::Graphics::Bitmap* pOverlayBitmap, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment);
94
95         int GetOverlayBitmapIdFromPosition(Tizen::Graphics::Point& position) const;
96
97         Tizen::Ui::Animations::_VisualElement* GetItemVisualElement(void) const;
98
99 protected:
100         result DrawBitmap(Tizen::Graphics::Canvas& canvas, Tizen::Graphics::Bitmap& bitmap, bool isFocused = false, float ratio = 1.0f);
101         result DrawText(const Tizen::Graphics::Color& color);
102         result DrawCheck(Tizen::Graphics::Canvas& canvas, float ratio = 1.0f);
103         result DrawOverlayBitmaps(void);
104
105 private:
106         _IconListItem(Tizen::Ui::Animations::_VisualElement* pBase);
107         _IconListItem(const _IconListItem& rhs);
108         _IconListItem& operator =(const _IconListItem& rhs);
109
110         Tizen::Graphics::Rectangle GetOverlayBitmapBounds(_OverlayBitmap* pOverlayBitmap, const Tizen::Graphics::Rectangle& parentRect, int overlayMargin) const;
111
112 // Inquiry
113 public:
114 // Attribute
115 private:
116         static const int DEFAULT_GROUP_INDEX = 0;
117         static const int MAX_ITEM_TEXT_LINE_COUNT = 2;
118         static const float REFERENCE_FACTOR = 1.0f;
119         static const int OPAQUE_ALPHA = 255;
120
121         int __itemIndex;
122         Tizen::Base::String __text;
123         Tizen::Graphics::Bitmap* __pBitmap[LIST_ITEM_STATE_MAX];
124         Tizen::Ui::Animations::_VisualElement* __pBase;
125         Tizen::Ui::Animations::_VisualElement* __pTextVE;
126         Tizen::Ui::Animations::_VisualElement* __pCheckVE;
127         _IconListItemDrawingProperty* __pProperty;
128         ListItemState __foreDrawnState;
129         bool __isDrawn;
130
131         Tizen::Graphics::_Text::TextObject* __pTextObject;
132         _LinkedList <_OverlayBitmap*> __overlayBitmaps;
133 }; // _IconListItem
134
135 }}} // Tizen::Ui::Controls
136
137 #endif // _FUI_CTRL_INTERNAL_ICON_LIST_ITEM_H_