Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_ContextMenuListPresenter.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_ContextMenuListPresenter.h
19  * @brief               This is the header file for the _ContextMenuListPresenter class.
20  *
21  * This header file contains the declarations of the %_ContextMenuListPresenter class.
22  */
23 #ifndef _FUI_CTRL_INTERNAL_CONTEXTMENU_LIST_PRESENTER_H_
24 #define _FUI_CTRL_INTERNAL_CONTEXTMENU_LIST_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 _ContextMenuListPresenter
41  * @brief
42  * @since 2.0
43  *
44  *
45  *
46  *
47  */
48 class _ContextMenuListPresenter
49         : public _IContextMenuPresenter
50 {
51 // Lifecycle
52 public:
53         _ContextMenuListPresenter(_ContextMenu* pContextMenu);
54         virtual ~_ContextMenuListPresenter(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 AdjustItemLayoutStyle(void);
96
97         _ContextMenuItem* CreateItem(const Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
98         int GetItemIndexFromPosition(const Tizen::Graphics::Point& point) const;
99
100 private:
101         _ContextMenuListPresenter(const _ContextMenuListPresenter& rhs);
102         _ContextMenuListPresenter& operator =(const _ContextMenuListPresenter& rhs);
103
104 // Attribute
105 private:
106         _ContextMenu* __pContextMenu;
107         _ContextMenuModel* __pModel;
108
109         Tizen::Graphics::Font* __pFont;
110         Tizen::Graphics::Dimension __layoutSize;
111
112         bool __touchOutRect;
113         int __selectedIndex;
114         bool __scrollEnable;
115
116         int __maxWidth;
117         int __minWidth;
118         int __topMargin;
119         int __bottomMargin;
120         int __leftMargin;
121         int __rightMargin;
122         int __screenTopMargin;
123         int __screenBottomMargin;
124         int __screenLeftMargin;
125         int __screenRightMargin;
126         int __arrowMargin;
127         int __arrowWidth;
128         int __arrowHeight;
129         int __itemWidth;
130         int __itemMinWidth;
131         int __itemHeight;
132         int __itemMaxWidth;
133         int __itemGap;
134         int __itemBitmapWidth;
135         int __itemBitmapHeight;
136         int __itemFontSize;
137         int __dividerHeight;
138
139 }; // _ContextMenuListPresenter
140
141 }}} // Tizen::Ui: Control
142
143 #endif  //_FUI_CTRL_INTERNAL_CONTEXTMENU_LIST_PRESENTER_H_