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.
18 * @file FUiCtrl_ContextMenu.h
19 * @brief This is the header file for the _ContextMenu class.
21 * This header file contains the declarations of the %_ContextMenu class.
23 #ifndef _FUI_CTRL_INTERNAL_CONTEXT_MENU_H_
24 #define _FUI_CTRL_INTERNAL_CONTEXT_MENU_H_
26 #include <FBaseString.h>
27 #include <FGrpColor.h>
28 #include "FUi_Window.h"
29 #include "FUiCtrl_IContextMenuPresenter.h"
30 #include "FUiCtrl_ContextMenuGridPresenter.h"
31 #include "FUiCtrl_ContextMenuListPresenter.h"
32 #include "FUiCtrl_ActionEvent.h"
33 #include "FUiCtrl_IActionEventListener.h"
35 #include "FUiCtrl_ScrollPanel.h"
37 namespace Tizen { namespace Ui {
38 class _AccessibilityElement;
41 namespace Tizen { namespace Ui { namespace Controls
44 const int CONTEXT_MENU_ITEM_STATUS_COUNT = 3;
45 const int MAX_CONTEXTMENU_LIST_SHOW_ITEM = 4;
46 const int MAX_CONTEXTMENU_ICON_SHOW_ITEM = 5;
48 enum ContextMenuCoreStyle
50 CONTEXT_MENU_CORE_STYLE_LIST, /**< The style of the vertical list of image + text */
51 CONTEXT_MENU_CORE_STYLE_GRID /**< The style of the horizontal list of image + text */
54 enum ContextMenuCoreAlign
56 CONTEXT_MENU_CORE_ALIGN_LEFT,
57 CONTEXT_MENU_CORE_ALIGN_RIGHT,
58 CONTEXT_MENU_CORE_ALIGN_UP,
59 CONTEXT_MENU_CORE_ALIGN_DOWN,
60 CONTEXT_MENU_CORE_ALIGN_AUTO
63 enum ContextMenuCoreItemStatus
65 CONTEXT_MENU_CORE_ITEM_STATUS_NORMAL = 0, /**< The normal state */
66 CONTEXT_MENU_CORE_ITEM_STATUS_PRESSED, /**< The pressed state */
67 CONTEXT_MENU_CORE_ITEM_STATUS_HIGHLIGHTED /**< The highlighted state */
71 enum ContextMenuCoreDropPosition
73 CONTEXT_MENU_CORE_DROP_POSITION_INVALID = -1,
74 CONTEXT_MENU_CORE_DROP_POSITION_UP,
75 CONTEXT_MENU_CORE_DROP_POSITION_DOWN,
76 CONTEXT_MENU_CORE_DROP_POSITION_LEFT,
77 CONTEXT_MENU_CORE_DROP_POSITION_RIGHT,
79 CONTEXT_MENU_CORE_DROP_POSITION_MAX
82 struct _ContextMenuItemInfo;
93 class _OSP_EXPORT_ _ContextMenu
95 , virtual public Tizen::Base::Runtime::IEventListener
96 , virtual public _IUiEventListener
97 , virtual public _IUiEventPreviewer
99 DECLARE_CLASS_BEGIN(_ContextMenu, _Control);
100 DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
101 DECLARE_PROPERTY("normalItemColor", GetPropertyNormalItemColor, SetPropertyNormalItemColor);
102 DECLARE_PROPERTY("pressedItemColor", GetPropertyPressedItemColor, SetPropertyPressedItemColor);
103 DECLARE_PROPERTY("highlightedItemColor", GetPropertyHighlightedItemColor, SetPropertyHighlightedItemColor);
104 DECLARE_PROPERTY("normalItemTextColor", GetPropertyNormalItemTextColor, SetPropertyNormalItemTextColor);
105 DECLARE_PROPERTY("pressedItemTextColor", GetPropertyPressedItemTextColor, SetPropertyPressedItemTextColor);
106 DECLARE_PROPERTY("highlightedItemTextColor", GetPropertyHighlightedItemTextColor, SetPropertyHighlightedItemTextColor);
107 DECLARE_PROPERTY("maxVisibleItemsCount", GetPropertyMaxVisibleItemsCount, SetPropertyMaxVisibleItemsCount);
111 result SetPropertyMaxVisibleItemsCount(const Variant& count);
112 Variant GetPropertyMaxVisibleItemsCount(void) const;
114 result SetPropertyColor(const Variant& color);
115 Variant GetPropertyColor(void) const;
117 result SetPropertyNormalItemColor(const Variant& color);
118 Variant GetPropertyNormalItemColor(void) const;
120 result SetPropertyPressedItemColor(const Variant& color);
121 Variant GetPropertyPressedItemColor(void) const;
123 result SetPropertyHighlightedItemColor(const Variant & color);
124 Variant GetPropertyHighlightedItemColor(void) const;
126 result SetPropertyNormalItemTextColor(const Variant& color);
127 Variant GetPropertyNormalItemTextColor(void) const;
129 result SetPropertyPressedItemTextColor(const Variant& color);
130 Variant GetPropertyPressedItemTextColor(void) const;
132 result SetPropertyHighlightedItemTextColor(const Variant & color);
133 Variant GetPropertyHighlightedItemTextColor(void) const;
137 _ContextMenu(const Tizen::Graphics::FloatPoint& point, enum ContextMenuCoreStyle style
138 , enum ContextMenuCoreAlign contextMenuAlign = CONTEXT_MENU_CORE_ALIGN_AUTO);
139 virtual ~_ContextMenu(void);
140 static _ContextMenu* CreateContextMenuN(const Tizen::Graphics::FloatPoint& point
141 , enum ContextMenuCoreStyle style, enum ContextMenuCoreAlign contextMenuAlign);
145 result Install(void);
146 result Initialize(void);
147 result AddItem(const Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
148 result InsertItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap
149 , const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
150 result SetItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap
151 , const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
152 result RemoveItemAt(int index);
153 result RemoveAllItems(void);
154 int GetItemCount(void) const;
155 result SetShowItemCount(int count);
156 int GetShowItemCount(void) const;
157 int GetShowItemMaxCount(void) const;
158 int GetItemIndexAt(int actionId) const;
159 int GetItemActionIdAt(int index) const;
160 result SetAnchorPosition(float x, float y);
161 Tizen::Graphics::FloatPoint GetAnchorPosition(void) const;
162 result SetBodyRect(const Tizen::Graphics::FloatRectangle& rect);
163 Tizen::Graphics::FloatRectangle GetBodyRect(void) const;
164 result SetArrowRect(const Tizen::Graphics::FloatRectangle& rect);
165 Tizen::Graphics::FloatRectangle GetArrowRect(void) const;
166 result SetWindowRect(const Tizen::Graphics::FloatRectangle& rect);
167 Tizen::Graphics::FloatRectangle GetWindowRect(void) const;
168 result SetTextColor(enum ContextMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
169 Tizen::Graphics::Color GetTextColor(enum ContextMenuCoreItemStatus status) const;
170 result SetColor(const Tizen::Graphics::Color& color);
171 Tizen::Graphics::Color GetColor(void) const;
172 result SetItemColor(enum ContextMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
173 Tizen::Graphics::Color GetItemColor(enum ContextMenuCoreItemStatus status) const;
174 result AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
175 result RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
176 Tizen::Ui::Controls::_ActionEvent* GetActionEvent(void) const;
177 const Tizen::Graphics::Bitmap* GetArrowNormalBitmap(ContextMenuCoreDropPosition dropPosition) const;
178 const Tizen::Graphics::Bitmap* GetArrowEffectBitmap(ContextMenuCoreDropPosition dropPosition) const;
179 const Tizen::Graphics::Bitmap* GetBackgroundNormalBitmap(void) const;
180 const Tizen::Graphics::Bitmap* GetBackgroundEffectBitmap(void) const;
181 ContextMenuCoreDropPosition GetDropPosition(void) const;
182 _ControlOrientation GetLayout(void) const;
184 virtual result OnAttachedToMainTree(void);
185 virtual result OnDetachingFromMainTree(void);
186 virtual void OnDraw(void);
188 virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
189 virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
190 virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
192 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
193 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
194 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
195 virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
197 virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
198 virtual void OnFontInfoRequested(unsigned long& style, float& size);
200 virtual void OnVisibleStateChanged(void);
201 virtual void OnChangeLayout(_ControlOrientation orientation);
202 virtual void OnOwnerChanged(_Control* pOldOwner);
204 virtual bool IsActivatedOnOpen(void) const;
205 Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(const int mainIndex) const;
206 void AddAccessibilityElement(const _AccessibilityElement& element);
208 _ContextMenuItemInfo GetItemFromPosition(const Tizen::Graphics::FloatPoint& position) const;
209 _ContextMenuItemInfo FindItem(int index) const;
210 result SetTopDrawnItemIndex(int index);
212 _ScrollPanel* GetScrollPanel(void);
215 result SetPresenter(const _IContextMenuPresenter& ContextMenuPresenter);
218 result LoadBitmap(void);
219 result LoadColorReplacedBitmap(const Tizen::Graphics::Color& color);
220 void AdjustDropPosition(void);
221 void SetAllAccessibilityElement(void);
222 void RemoveAllAccessibilityElement(void);
225 _ContextMenu(const _ContextMenu& rhs);
226 _ContextMenu& operator =(const _ContextMenu& rhs);
230 _IContextMenuPresenter* __pContextMenuPresenter;
231 enum ContextMenuCoreStyle __style;
232 enum ContextMenuCoreAlign __align;
234 int __showItemMaxCount;
235 bool __isAttachedToMainTree;
236 bool __ownerInputEnableState;
238 // attribute for position fo the window
239 Tizen::Graphics::FloatPoint __anchorPoint; // the anchor point on whole screen area.
240 Tizen::Graphics::FloatRectangle __bodyRect; // the body area of the ContextMenu area.
241 Tizen::Graphics::FloatRectangle __arrowRect; // the arrow area of the ContextMenu area.
242 Tizen::Graphics::FloatRectangle __windowRect; // the ContextMenu area on whole screen area.
244 // attribute for event
245 _ActionEvent* __pActionEvent;
247 // attribute for drawing
248 Tizen::Graphics::Bitmap* __pArrowNormalBitmap[CONTEXT_MENU_CORE_DROP_POSITION_MAX];
249 Tizen::Graphics::Bitmap* __pArrowEffectBitmap[CONTEXT_MENU_CORE_DROP_POSITION_MAX];
250 Tizen::Graphics::Bitmap* __pBackgroundNormalBitmap;
251 Tizen::Graphics::Bitmap* __pBackgroundEffectBitmap;
252 enum ContextMenuCoreDropPosition __dropPosition;
253 enum _ControlOrientation __layout;
255 Tizen::Graphics::Color __backgroundColor;
256 Tizen::Graphics::Color __textColor[CONTEXT_MENU_ITEM_STATUS_COUNT];
257 Tizen::Graphics::Color __itemColor[CONTEXT_MENU_ITEM_STATUS_COUNT];
259 Tizen::Base::Collection::ArrayListT<int> __actionId;
260 Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
262 _ScrollPanel* __pScrollPanel;
266 }}} // Tizen::Ui: Control
268 #endif //_FUI_CTRL_INTERNAL_CONTEXT_MENU_H_