Fork for IVI: mesa fixing
[profile/ivi/uifw.git] / src / ui / inc / FUiCtrl_ContextMenuGridPresenter.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  * @file                FUiCtrl_ContextMenuGridPresenter.h
19  * @brief               This is the header file for the _ContextMenuGridPresenter class.
20  *
21  * This header file contains the declarations of the %_ContextMenuGridPresenter class.
22  */
23 #ifndef _FUI_CTRL_INTERNAL_CONTEXTMENU_GRID_PRESENTER_H_
24 #define _FUI_CTRL_INTERNAL_CONTEXTMENU_GRID_PRESENTER_H_
25
26 #include <FGrp_TextTextObject.h>
27 #include "FUi_Control.h"
28 #include "FUiCtrl_ContextMenu.h"
29 #include "FUiCtrl_ContextMenuModel.h"
30 #include "FUiCtrl_IContextMenuPresenter.h"
31
32 namespace Tizen { namespace Ui { namespace Controls
33 {
34
35 class _ContextMenu;
36 class _ContextMenuModel;
37 class _ContextMenuItem;
38
39 /**
40  * @class _ContextMenuGridPresenter
41  * @brief
42  * @since 2.0
43  *
44  *
45  *
46  *
47  */
48 class _ContextMenuGridPresenter
49         : public _IContextMenuPresenter
50 {
51 // Lifecycle
52 public:
53         _ContextMenuGridPresenter(_ContextMenu* pContextMenu);
54         virtual ~_ContextMenuGridPresenter(void);
55
56 // Operation
57 public:
58         virtual result Install(void);
59         virtual result Draw(void);
60         virtual result DrawBackground(Tizen::Graphics::Canvas* pCanvas);
61         virtual result DrawArrow(Tizen::Graphics::Canvas* pCanvas);
62         virtual result AddItem(const Base::String& text, int actionId, const Tizen::Graphics::Bitmap* normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
63         virtual result InsertItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
64         virtual result SetItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
65         virtual result DeleteItem(int index);
66         virtual result DeleteItemAll(void);
67         virtual int CalculateShowItemCount(void);
68         virtual result CalculateWindowRect(void);
69         virtual result ApplyColorProperty(void);
70
71         virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
72         virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
73         virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
74
75         virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
76         virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
77         virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
78         virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
79
80         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
81         virtual void OnFontInfoRequested(unsigned long& style, int& size);
82
83         virtual void SetAllAccessibilityElement(void);
84
85         virtual _ContextMenuItemInfo GetItemFromPosition(const Tizen::Graphics::Point& position);
86         virtual _ContextMenuItemInfo FindItem(int index);
87         virtual result SetTopDrawnItemIndex(int index);
88         virtual result DrawBitmap(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& bounds, const Tizen::Graphics::Bitmap& bitmap);
89
90 private:
91         void LoadShape(void);
92         result CalculateRect(void);
93         void AdjustItemLayout(void);
94         void AdjustItemPosition(void);
95         Tizen::Graphics::Dimension AdjustItemLayoutIconStyle(void);
96         Tizen::Graphics::Dimension AdjustItemLayoutTabStyle(void);
97         bool IsLayoutBitmapOnly(void);
98
99         _ContextMenuItem* CreateItem(const Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
100         result DrawItem(Tizen::Graphics::Canvas* pCanvas);
101         result DrawLine(Tizen::Graphics::Canvas* pCanvas, Tizen::Graphics::Point point1, Tizen::Graphics::Point point2, bool drawVLine);
102         void SetItemSize(_ContextMenuItem* pItem);
103         int GetItemIndexFromPosition(const Tizen::Graphics::Point& point) const;
104         int GetCountPerLine(int count, int min, int max) const;
105 private:
106         _ContextMenuGridPresenter(const _ContextMenuGridPresenter& rhs);
107         _ContextMenuGridPresenter& operator =(const _ContextMenuGridPresenter& rhs);
108
109 // Attribute
110 private:
111         _ContextMenu* __pContextMenu;
112         _ContextMenuModel* __pModel;
113
114         Tizen::Graphics::_Text::TextObject* __pTextObject;
115         Tizen::Graphics::Font* __pFont;
116         Tizen::Graphics::Dimension __layoutSize;
117
118         bool __touchOutRect;
119         int __selectedIndex;
120         int __pressedIndex;
121         int __maxWidth;
122         int __minWidth;
123         int __topMargin;
124         int __bottomMargin;
125         int __leftMargin;
126         int __rightMargin;
127         int __screenTopMargin;
128         int __screenBottomMargin;
129         int __screenLeftMargin;
130         int __screenRightMargin;
131         int __arrowMargin;
132         int __arrowWidth;
133         int __arrowHeight;
134         int __itemWidth;
135         int __itemHeight;
136         int __itemMaxWidth;
137         int __itemTextMargin;
138         int __itemGap;
139         int __itemBitmapWidth;
140         int __itemBitmapHeight;
141         int __itemFontSize;
142         int __dividerHeight;
143 }; // _ContextMenuGridPresenter
144
145 }}} // Tizen::Ui: Control
146
147 #endif  //_FUI_CTRL_INTERNAL_CONTEXTMENU_GRID_PRESENTER_H_