2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0/
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_OptionMenu.h
19 * @brief This is the header file for the _OptionMenu class.
21 * This header file contains the declarations of the %_OptionMenu class.
23 #ifndef _FUI_CTRL_INTERNAL_OPTION_MENU_H_
24 #define _FUI_CTRL_INTERNAL_OPTION_MENU_H_
26 #include <FBaseString.h>
27 #include <FGrpColor.h>
28 #include "FUi_Window.h"
29 #include "FUiCtrl_OptionMenuPresenter.h"
30 #include "FUiCtrl_ActionEvent.h"
31 #include "FUiCtrl_IActionEventListener.h"
32 #include "FUiCtrl_IFrameEventListener.h"
34 #include "FUiCtrl_ScrollPanel.h"
36 namespace Tizen { namespace Ui {
37 class _AccessibilityElement;
40 namespace Tizen { namespace Ui { namespace Controls
43 const int OPTION_MENU_ITEM_STATUS_COUNT = 3;
45 enum OptionMenuCoreItemStatus
47 OPTION_MENU_CORE_ITEM_STATUS_NORMAL = 0, /**< The normal state */
48 OPTION_MENU_CORE_ITEM_STATUS_PRESSED, /**< The pressed state */
49 OPTION_MENU_CORE_ITEM_STATUS_HIGHLIGHTED /**< The highlighted state */
52 struct _OptionMenuItemInfo;
63 class _OptionMenuPresenter;
65 class _OptionMenuItem;
67 class _OSP_EXPORT_ _OptionMenu
69 , public _IActionEventListener
70 , virtual public Tizen::Base::Runtime::IEventListener
71 , virtual public _IUiEventListener
72 , virtual public _IUiEventPreviewer
73 , public _IAccessibilityListener
74 , virtual public _IFrameEventListener
76 DECLARE_CLASS_BEGIN(_OptionMenu, _Control);
77 DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
78 DECLARE_PROPERTY("normalItemColor", GetPropertyNormalItemColor, SetPropertyNormalItemColor);
79 DECLARE_PROPERTY("pressedItemColor", GetPropertyPressedItemColor, SetPropertyPressedItemColor);
80 DECLARE_PROPERTY("highlightedItemColor", GetPropertyHighlightedItemColor, SetPropertyHighlightedItemColor);
81 DECLARE_PROPERTY("normalItemTextColor", GetPropertyNormalItemTextColor, SetPropertyNormalItemTextColor);
82 DECLARE_PROPERTY("pressedItemTextColor", GetPropertyPressedItemTextColor, SetPropertyPressedItemTextColor);
83 DECLARE_PROPERTY("highlightedItemTextColor", GetPropertyHighlightedItemTextColor, SetPropertyHighlightedItemTextColor);
84 DECLARE_PROPERTY("maxVisibleItemsCount", GetPropertyMaxVisibleItemsCount, SetPropertyMaxVisibleItemsCount);
87 result SetPropertyMaxVisibleItemsCount(const Variant& count);
88 Variant GetPropertyMaxVisibleItemsCount(void) const;
90 result SetPropertyColor(const Variant& color);
91 Variant GetPropertyColor(void) const;
93 result SetPropertyNormalItemColor(const Variant& color);
94 Variant GetPropertyNormalItemColor(void) const;
96 result SetPropertyPressedItemColor(const Variant& color);
97 Variant GetPropertyPressedItemColor(void) const;
99 result SetPropertyHighlightedItemColor(const Variant & color);
100 Variant GetPropertyHighlightedItemColor(void) const;
102 result SetPropertyNormalItemTextColor(const Variant& color);
103 Variant GetPropertyNormalItemTextColor(void) const;
105 result SetPropertyPressedItemTextColor(const Variant& color);
106 Variant GetPropertyPressedItemTextColor(void) const;
108 result SetPropertyHighlightedItemTextColor(const Variant & color);
109 Variant GetPropertyHighlightedItemTextColor(void) const;
113 virtual ~_OptionMenu(void);
114 static _OptionMenu* CreateOptionMenuN(void);
117 result Install(void);
118 result Initialize(void);
119 result AddItem(const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
120 result InsertItemAt(int mainIndex, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
121 result SetItemAt(int mainIndex, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
122 int GetItemIndexFromActionId(int actionId) const;
123 result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId);
124 result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
125 result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
126 result RemoveSubItemAt(int mainIndex, int subIndex);
127 int GetSubItemCount(int mainIndex) const;
128 int GetSubItemIndexFromActionId(int actionId) const;
129 int GetSubItemActionIdAt(int mainIndex, int subIndex) const;
130 result ShowSubMenu(int mainIndex, _OptionMenuItem& item);
131 bool IsSubMenuShown(void) const;
132 result DestroySubMenu(void);
133 result InsertItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap,
134 const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
135 result SetItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap,
136 const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
137 result RemoveItemAt(int index);
138 void RemoveAllItems(void);
139 int GetItemCount(void) const;
140 result SetShowItemCount(int count);
141 int GetMaximumVisibleItemsCount(void) const;
142 int GetItemIndexAt(int actionId) const;
143 int GetItemActionIdAt(int index) const;
144 result SetWindowRect(const Tizen::Graphics::FloatRectangle& rect);
145 Tizen::Graphics::FloatRectangle GetWindowRect(void) const;
146 result SetBodyRect(const Tizen::Graphics::FloatRectangle& rect);
147 Tizen::Graphics::FloatRectangle GetBodyRect(void) const;
148 result SetItemRect(const Tizen::Graphics::FloatRectangle& rect);
149 Tizen::Graphics::FloatRectangle GetItemRect(void) const;
150 result SetTextColor(enum OptionMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
151 Tizen::Graphics::Color GetTextColor(enum OptionMenuCoreItemStatus status) const;
152 result SetColor(const Tizen::Graphics::Color& color);
153 Tizen::Graphics::Color GetColor(void) const;
154 result SetMaxVisibleItemsCount(int maxItemsCount);
155 result SetItemColor(enum OptionMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
156 Tizen::Graphics::Color GetItemColor(enum OptionMenuCoreItemStatus status) const;
157 result AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
158 result RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
159 result FireActionEvent(int actionId);
160 Tizen::Ui::Controls::_ActionEvent* GetActionEvent(void) const;
161 const Tizen::Graphics::Bitmap* GetBackgroundNormalBitmap(void) const;
162 const Tizen::Graphics::Bitmap* GetBackgroundEffectBitmap(void) const;
163 _ControlOrientation GetLayout(void) const;
164 _ControlRotation GetRotation(void) const;
166 virtual result OnAttachedToMainTree(void);
167 virtual result OnDetachingFromMainTree(void);
168 virtual void OnFrameActivated(const Tizen::Ui::Controls::_Frame& source);
169 virtual void OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source);
170 virtual void OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source);
171 virtual void OnFrameRestored(const Tizen::Ui::Controls::_Frame& source);
172 virtual void OnDraw(void);
174 virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
175 virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
176 virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
178 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
179 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
180 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
181 virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
183 virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
185 virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
186 virtual void OnFontInfoRequested(unsigned long& style, float& size);
188 virtual void OnChangeLayout(_ControlRotation rotation);
189 virtual void OnOwnerChanged(_Control* pOldOwner);
190 void OnActivated(void);
191 void OnDeactivated(void);
193 virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
194 virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
195 virtual bool OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
196 virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
197 virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
198 virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
199 virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
200 virtual bool OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
201 virtual bool OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
203 Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(const int mainIndex) const;
204 void AddAccessibilityElement(const _AccessibilityElement& element);
206 _OptionMenuItemInfo GetItemFromPosition(const Tizen::Graphics::FloatPoint& position) const;
207 _OptionMenuItemInfo FindItem(int index) const;
208 result SetTopDrawnItemIndex(int index);
210 _ScrollPanel* GetScrollPanel(void);
212 virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
213 virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
214 virtual bool OnFocusGained(const _Control& source);
215 virtual bool OnFocusLost(const _Control& source);
216 virtual void OnDrawFocus(void);
217 virtual void OnFocusModeStateChanged(void);
220 result SetPresenter(const _OptionMenuPresenter& OptionMenuPresenter);
223 result LoadBitmap(void);
224 result LoadColorReplacedBitmap(const Tizen::Graphics::Color& color);
225 void SetAllAccessibilityElement(void);
226 void RemoveAllAccessibilityElement(void);
228 _OptionMenu(const _OptionMenu& rhs);
229 _OptionMenu& operator =(const _OptionMenu& rhs);
232 _OptionMenuPresenter* __pOptionMenuPresenter;
234 bool __isAttachedToMainTree;
235 bool __isMaxVisibleCountSet;
237 int __currentFocusedIndex;
239 // attribute for position fo the window
240 Tizen::Graphics::FloatRectangle __windowRect; // OptionMenu window in the whole screen area
241 Tizen::Graphics::FloatRectangle __bodyRect; // body area relative to window
242 Tizen::Graphics::FloatRectangle __itemRect; // item area relative to window
244 // attribute for event
245 _ActionEvent* __pActionEvent;
247 // attribute for drawing
248 Tizen::Graphics::Bitmap* __pBackgroundNormalBitmap;
249 Tizen::Graphics::Bitmap* __pBackgroundEffectBitmap;
250 enum _ControlOrientation __layout;
251 enum _ControlRotation __rotation;
253 Tizen::Graphics::Color __backgroundColor;
254 Tizen::Graphics::Color __textColor[OPTION_MENU_ITEM_STATUS_COUNT];
255 Tizen::Graphics::Color __itemColor[OPTION_MENU_ITEM_STATUS_COUNT];
257 Tizen::Base::Collection::ArrayListT<int> __actionId;
258 Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
260 _ScrollPanel* __pScrollPanel;
261 _ContextMenu* __pSubMenu;
262 Tizen::Ui::Controls::_Frame* __pCurrentFrame;
267 }}} // Tizen::Ui: Control
269 #endif //_FUI_CTRL_INTERNAL_OPTION_MENU_H_