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 <FUiAnimIVisualElementAnimationStatusEventListener.h>
29 #include "FUi_Window.h"
30 #include "FUiCtrl_OptionMenuPresenter.h"
31 #include "FUiCtrl_ActionEvent.h"
32 #include "FUiCtrl_IActionEventListener.h"
33 #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
75 , public Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
77 DECLARE_CLASS_BEGIN(_OptionMenu, _Control);
78 DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
79 DECLARE_PROPERTY("normalItemColor", GetPropertyNormalItemColor, SetPropertyNormalItemColor);
80 DECLARE_PROPERTY("pressedItemColor", GetPropertyPressedItemColor, SetPropertyPressedItemColor);
81 DECLARE_PROPERTY("highlightedItemColor", GetPropertyHighlightedItemColor, SetPropertyHighlightedItemColor);
82 DECLARE_PROPERTY("normalItemTextColor", GetPropertyNormalItemTextColor, SetPropertyNormalItemTextColor);
83 DECLARE_PROPERTY("pressedItemTextColor", GetPropertyPressedItemTextColor, SetPropertyPressedItemTextColor);
84 DECLARE_PROPERTY("highlightedItemTextColor", GetPropertyHighlightedItemTextColor, SetPropertyHighlightedItemTextColor);
85 DECLARE_PROPERTY("maxVisibleItemsCount", GetPropertyMaxVisibleItemsCount, SetPropertyMaxVisibleItemsCount);
88 result SetPropertyMaxVisibleItemsCount(const Variant& count);
89 Variant GetPropertyMaxVisibleItemsCount(void) const;
91 result SetPropertyColor(const Variant& color);
92 Variant GetPropertyColor(void) const;
94 result SetPropertyNormalItemColor(const Variant& color);
95 Variant GetPropertyNormalItemColor(void) const;
97 result SetPropertyPressedItemColor(const Variant& color);
98 Variant GetPropertyPressedItemColor(void) const;
100 result SetPropertyHighlightedItemColor(const Variant & color);
101 Variant GetPropertyHighlightedItemColor(void) const;
103 result SetPropertyNormalItemTextColor(const Variant& color);
104 Variant GetPropertyNormalItemTextColor(void) const;
106 result SetPropertyPressedItemTextColor(const Variant& color);
107 Variant GetPropertyPressedItemTextColor(void) const;
109 result SetPropertyHighlightedItemTextColor(const Variant & color);
110 Variant GetPropertyHighlightedItemTextColor(void) const;
114 virtual ~_OptionMenu(void);
115 static _OptionMenu* CreateOptionMenuN(void);
118 void OnVisualElementAnimationFinished(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, bool completedNormally);
119 void OnVisualElementAnimationRepeated(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, long currentRepeatCount){};
120 void OnVisualElementAnimationStarted(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target){};
121 result Install(void);
122 result Initialize(void);
123 result AddItem(const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
124 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);
125 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);
126 int GetItemIndexFromActionId(int actionId) const;
127 result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId);
128 result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
129 result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
130 result RemoveSubItemAt(int mainIndex, int subIndex);
131 int GetSubItemCount(int mainIndex) const;
132 int GetSubItemIndexFromActionId(int actionId) const;
133 int GetSubItemActionIdAt(int mainIndex, int subIndex) const;
134 result ShowSubMenu(int mainIndex, _OptionMenuItem& item);
135 bool IsSubMenuShown(void) const;
136 result DestroySubMenu(void);
137 result InsertItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap,
138 const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
139 result SetItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap,
140 const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
141 result RemoveItemAt(int index);
142 void RemoveAllItems(void);
143 int GetItemCount(void) const;
144 result SetShowItemCount(int count);
145 int GetMaximumVisibleItemsCount(void) const;
146 int GetItemIndexAt(int actionId) const;
147 int GetItemActionIdAt(int index) const;
148 result SetWindowRect(const Tizen::Graphics::FloatRectangle& rect);
149 Tizen::Graphics::FloatRectangle GetWindowRect(void) const;
150 result SetBodyRect(const Tizen::Graphics::FloatRectangle& rect);
151 Tizen::Graphics::FloatRectangle GetBodyRect(void) const;
152 result SetItemRect(const Tizen::Graphics::FloatRectangle& rect);
153 Tizen::Graphics::FloatRectangle GetItemRect(void) const;
154 result SetTextColor(enum OptionMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
155 Tizen::Graphics::Color GetTextColor(enum OptionMenuCoreItemStatus status) const;
156 result SetColor(const Tizen::Graphics::Color& color);
157 Tizen::Graphics::Color GetColor(void) const;
158 result SetMaxVisibleItemsCount(int maxItemsCount);
159 result SetItemColor(enum OptionMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
160 Tizen::Graphics::Color GetItemColor(enum OptionMenuCoreItemStatus status) const;
161 result AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
162 result RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
163 result FireActionEvent(int actionId);
164 Tizen::Ui::Controls::_ActionEvent* GetActionEvent(void) const;
165 const Tizen::Graphics::Bitmap* GetBackgroundNormalBitmap(void) const;
166 const Tizen::Graphics::Bitmap* GetBackgroundEffectBitmap(void) const;
167 _ControlOrientation GetLayout(void) const;
168 _ControlRotation GetRotation(void) const;
170 virtual result OnAttachedToMainTree(void);
171 virtual result OnDetachingFromMainTree(void);
172 virtual void OnFrameActivated(const Tizen::Ui::Controls::_Frame& source);
173 virtual void OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source);
174 virtual void OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source);
175 virtual void OnFrameRestored(const Tizen::Ui::Controls::_Frame& source);
176 virtual void OnDraw(void);
178 virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
179 virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
180 virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
181 void CloseAnimation(int actionID);
182 void OpenAnimation();
184 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
185 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
186 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
187 virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
189 virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
191 virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
192 virtual void OnFontInfoRequested(unsigned long& style, float& size);
194 virtual void OnChangeLayout(_ControlRotation rotation);
195 virtual void OnOwnerChanged(_Control* pOldOwner);
196 void OnActivated(void);
197 void OnDeactivated(void);
199 virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
200 virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
201 virtual bool OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
202 virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
203 virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
204 virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
205 virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
206 virtual bool OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
207 virtual bool OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
209 Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(const int mainIndex) const;
210 void AddAccessibilityElement(const _AccessibilityElement& element);
212 _OptionMenuItemInfo GetItemFromPosition(const Tizen::Graphics::FloatPoint& position) const;
213 _OptionMenuItemInfo FindItem(int index) const;
214 result SetTopDrawnItemIndex(int index);
216 _ScrollPanel* GetScrollPanel(void);
218 virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
219 virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
220 virtual bool OnFocusGained(const _Control& source);
221 virtual bool OnFocusLost(const _Control& source);
222 virtual void OnDrawFocus(void);
223 virtual void OnFocusModeStateChanged(void);
226 result SetPresenter(const _OptionMenuPresenter& OptionMenuPresenter);
229 result LoadBitmap(void);
230 result LoadColorReplacedBitmap(const Tizen::Graphics::Color& color);
231 void SetAllAccessibilityElement(void);
232 void RemoveAllAccessibilityElement(void);
234 _OptionMenu(const _OptionMenu& rhs);
235 _OptionMenu& operator =(const _OptionMenu& rhs);
238 _OptionMenuPresenter* __pOptionMenuPresenter;
240 bool __isAttachedToMainTree;
241 bool __isMaxVisibleCountSet;
243 int __currentFocusedIndex;
244 int __selectedActionID;
246 static const int ANIMATION_DURATION = 333;
248 Tizen::Ui::Animations::IVisualElementAnimationTimingFunction* __pBoundsTimingFunction;
249 Tizen::Ui::Animations::IVisualElementAnimationTimingFunction* __pOpacityTimingFunction;
251 // attribute for position fo the window
252 Tizen::Graphics::FloatRectangle __windowRect; // OptionMenu window in the whole screen area
253 Tizen::Graphics::FloatRectangle __bodyRect; // body area relative to window
254 Tizen::Graphics::FloatRectangle __itemRect; // item area relative to window
256 // attribute for event
257 _ActionEvent* __pActionEvent;
259 // attribute for drawing
260 Tizen::Graphics::Bitmap* __pBackgroundNormalBitmap;
261 Tizen::Graphics::Bitmap* __pBackgroundEffectBitmap;
262 enum _ControlOrientation __layout;
263 enum _ControlRotation __rotation;
265 Tizen::Graphics::Color __backgroundColor;
266 Tizen::Graphics::Color __textColor[OPTION_MENU_ITEM_STATUS_COUNT];
267 Tizen::Graphics::Color __itemColor[OPTION_MENU_ITEM_STATUS_COUNT];
269 Tizen::Base::Collection::ArrayListT<int> __actionId;
270 Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
272 _ScrollPanel* __pScrollPanel;
273 _ContextMenu* __pSubMenu;
274 Tizen::Ui::Controls::_Frame* __pCurrentFrame;
279 }}} // Tizen::Ui: Control
281 #endif //_FUI_CTRL_INTERNAL_OPTION_MENU_H_