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"
33 #include "FUiCtrl_ScrollPanel.h"
35 namespace Tizen { namespace Ui {
36 class _AccessibilityElement;
39 namespace Tizen { namespace Ui { namespace Controls
42 const int OPTION_MENU_ITEM_STATUS_COUNT = 3;
44 enum OptionMenuCoreItemStatus
46 OPTION_MENU_CORE_ITEM_STATUS_NORMAL = 0, /**< The normal state */
47 OPTION_MENU_CORE_ITEM_STATUS_PRESSED, /**< The pressed state */
48 OPTION_MENU_CORE_ITEM_STATUS_HIGHLIGHTED /**< The highlighted state */
51 struct _OptionMenuItemInfo;
62 class _OptionMenuPresenter;
64 class _OptionMenuItem;
66 class _OSP_EXPORT_ _OptionMenu
68 , public _IActionEventListener
69 , virtual public Tizen::Base::Runtime::IEventListener
70 , virtual public _IUiEventListener
71 , virtual public _IUiEventPreviewer
72 , public _IAccessibilityListener
74 DECLARE_CLASS_BEGIN(_OptionMenu, _Control);
75 DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
76 DECLARE_PROPERTY("normalItemColor", GetPropertyNormalItemColor, SetPropertyNormalItemColor);
77 DECLARE_PROPERTY("pressedItemColor", GetPropertyPressedItemColor, SetPropertyPressedItemColor);
78 DECLARE_PROPERTY("highlightedItemColor", GetPropertyHighlightedItemColor, SetPropertyHighlightedItemColor);
79 DECLARE_PROPERTY("normalItemTextColor", GetPropertyNormalItemTextColor, SetPropertyNormalItemTextColor);
80 DECLARE_PROPERTY("pressedItemTextColor", GetPropertyPressedItemTextColor, SetPropertyPressedItemTextColor);
81 DECLARE_PROPERTY("highlightedItemTextColor", GetPropertyHighlightedItemTextColor, SetPropertyHighlightedItemTextColor);
82 DECLARE_PROPERTY("maxVisibleItemsCount", GetPropertyMaxVisibleItemsCount, SetPropertyMaxVisibleItemsCount);
85 result SetPropertyMaxVisibleItemsCount(const Variant& count);
86 Variant GetPropertyMaxVisibleItemsCount(void) const;
88 result SetPropertyColor(const Variant& color);
89 Variant GetPropertyColor(void) const;
91 result SetPropertyNormalItemColor(const Variant& color);
92 Variant GetPropertyNormalItemColor(void) const;
94 result SetPropertyPressedItemColor(const Variant& color);
95 Variant GetPropertyPressedItemColor(void) const;
97 result SetPropertyHighlightedItemColor(const Variant & color);
98 Variant GetPropertyHighlightedItemColor(void) const;
100 result SetPropertyNormalItemTextColor(const Variant& color);
101 Variant GetPropertyNormalItemTextColor(void) const;
103 result SetPropertyPressedItemTextColor(const Variant& color);
104 Variant GetPropertyPressedItemTextColor(void) const;
106 result SetPropertyHighlightedItemTextColor(const Variant & color);
107 Variant GetPropertyHighlightedItemTextColor(void) const;
111 virtual ~_OptionMenu(void);
112 static _OptionMenu* CreateOptionMenuN(void);
115 result Install(void);
116 result Initialize(void);
117 result AddItem(const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
118 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);
119 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);
120 int GetItemIndexFromActionId(int actionId) const;
121 result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId);
122 result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
123 result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
124 result RemoveSubItemAt(int mainIndex, int subIndex);
125 int GetSubItemCount(int mainIndex) const;
126 int GetSubItemIndexFromActionId(int actionId) const;
127 int GetSubItemActionIdAt(int mainIndex, int subIndex) const;
128 result ShowSubMenu(int mainIndex, _OptionMenuItem& item);
129 bool IsSubMenuShown(void) const;
130 result DestroySubMenu(void);
131 result InsertItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap,
132 const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
133 result SetItem(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 RemoveItemAt(int index);
136 void RemoveAllItems(void);
137 int GetItemCount(void) const;
138 result SetShowItemCount(int count);
139 int GetMaximumVisibleItemsCount(void) const;
140 int GetItemIndexAt(int actionId) const;
141 int GetItemActionIdAt(int index) const;
142 result SetWindowRect(const Tizen::Graphics::FloatRectangle& rect);
143 Tizen::Graphics::FloatRectangle GetWindowRect(void) const;
144 result SetBodyRect(const Tizen::Graphics::FloatRectangle& rect);
145 Tizen::Graphics::FloatRectangle GetBodyRect(void) const;
146 result SetItemRect(const Tizen::Graphics::FloatRectangle& rect);
147 Tizen::Graphics::FloatRectangle GetItemRect(void) const;
148 result SetTextColor(enum OptionMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
149 Tizen::Graphics::Color GetTextColor(enum OptionMenuCoreItemStatus status) const;
150 result SetColor(const Tizen::Graphics::Color& color);
151 Tizen::Graphics::Color GetColor(void) const;
152 result SetMaxVisibleItemsCount(int maxItemsCount);
153 result SetItemColor(enum OptionMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
154 Tizen::Graphics::Color GetItemColor(enum OptionMenuCoreItemStatus status) const;
155 result AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
156 result RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
157 result FireActionEvent(int actionId);
158 Tizen::Ui::Controls::_ActionEvent* GetActionEvent(void) const;
159 const Tizen::Graphics::Bitmap* GetBackgroundNormalBitmap(void) const;
160 const Tizen::Graphics::Bitmap* GetBackgroundEffectBitmap(void) const;
161 _ControlOrientation GetLayout(void) const;
163 virtual result OnAttachedToMainTree(void);
164 virtual result OnDetachingFromMainTree(void);
165 virtual void OnDraw(void);
167 virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
168 virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
169 virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
171 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
172 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
173 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
174 virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
176 virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
178 virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
179 virtual void OnFontInfoRequested(unsigned long& style, float& size);
181 virtual void OnChangeLayout(_ControlRotation rotation);
182 virtual void OnOwnerChanged(_Control* pOldOwner);
183 virtual void OnNativeWindowActivated(void);
184 void OnActivated(void);
185 void OnDeactivated(void);
187 virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
188 virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
189 virtual bool OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
190 virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
191 virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
192 virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
193 virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
194 virtual bool OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
195 virtual bool OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
197 Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(const int mainIndex) const;
198 void AddAccessibilityElement(const _AccessibilityElement& element);
200 _OptionMenuItemInfo GetItemFromPosition(const Tizen::Graphics::FloatPoint& position) const;
201 _OptionMenuItemInfo FindItem(int index) const;
202 result SetTopDrawnItemIndex(int index);
204 _ScrollPanel* GetScrollPanel(void);
206 virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
207 virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
208 virtual bool OnFocusGained(const _Control& source);
209 virtual bool OnFocusLost(const _Control& source);
210 virtual void OnDrawFocus(void);
211 virtual void OnFocusModeStateChanged(void);
214 result SetPresenter(const _OptionMenuPresenter& OptionMenuPresenter);
217 result LoadBitmap(void);
218 result LoadColorReplacedBitmap(const Tizen::Graphics::Color& color);
219 void SetAllAccessibilityElement(void);
220 void RemoveAllAccessibilityElement(void);
222 _OptionMenu(const _OptionMenu& rhs);
223 _OptionMenu& operator =(const _OptionMenu& rhs);
226 _OptionMenuPresenter* __pOptionMenuPresenter;
228 bool __isAttachedToMainTree;
229 bool __isMaxVisibleCountSet;
231 int __currentFocusedIndex;
233 // attribute for position fo the window
234 Tizen::Graphics::FloatRectangle __windowRect; // OptionMenu window in the whole screen area
235 Tizen::Graphics::FloatRectangle __bodyRect; // body area relative to window
236 Tizen::Graphics::FloatRectangle __itemRect; // item area relative to window
238 // attribute for event
239 _ActionEvent* __pActionEvent;
241 // attribute for drawing
242 Tizen::Graphics::Bitmap* __pBackgroundNormalBitmap;
243 Tizen::Graphics::Bitmap* __pBackgroundEffectBitmap;
244 enum _ControlOrientation __layout;
246 Tizen::Graphics::Color __backgroundColor;
247 Tizen::Graphics::Color __textColor[OPTION_MENU_ITEM_STATUS_COUNT];
248 Tizen::Graphics::Color __itemColor[OPTION_MENU_ITEM_STATUS_COUNT];
250 Tizen::Base::Collection::ArrayListT<int> __actionId;
251 Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
253 _ScrollPanel* __pScrollPanel;
254 _ContextMenu* __pSubMenu;
259 }}} // Tizen::Ui: Control
261 #endif //_FUI_CTRL_INTERNAL_OPTION_MENU_H_