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.
19 * @file FUiCtrl_OptionMenu.h
20 * @brief This is the header file for the _OptionMenu class.
23 #ifndef _FUI_CTRL_INTERNAL_OPTION_MENU_H_
24 #define _FUI_CTRL_INTERNAL_OPTION_MENU_H_
26 #include <FBaseColLinkedListT.h>
28 #include "FUi_Window.h"
29 #include "FUiCtrl_IActionEventListener.h"
30 #include "FUiCtrl_OptionMenuItem.h"
32 namespace Tizen { namespace Ui {
33 class _AccessibilityElement;
36 namespace Tizen { namespace Ui { namespace Controls
41 class _OptionMenuPresenter;
43 class _OSP_EXPORT_ _OptionMenu
44 : public Tizen::Ui::_Window
45 , public _IActionEventListener
46 , virtual public Tizen::Base::Runtime::IEventListener
47 , virtual public _IUiEventListener
48 , virtual public _IUiEventPreviewer
51 result AddActionEventListener(const _IActionEventListener& listener);
53 result RemoveActionEventListener(const _IActionEventListener& listener);
55 result FireActionEvent(int actionId);
57 result AddItem(const Tizen::Base::String& text, int actionId);
59 result InsertItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
61 result SetItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
63 result RemoveItemAt(int mainIndex);
65 int GetItemCount(void) const;
67 int GetItemIndexFromActionId(int actionId) const;
69 int GetItemActionIdAt(int mainIndex) const;
71 result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId);
73 result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
75 result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
77 result RemoveSubItemAt(int mainIndex, int subIndex);
79 int GetSubItemCount(int mainIndex) const;
81 int GetSubItemIndexFromActionId(int actionId) const;
83 int GetSubItemActionIdAt(int mainIndex, int subIndex) const;
85 bool IsSubMenuShown(void) const;
87 result ShowSubMenu(int mainIndex, _OptionMenuItem& item);
89 result DestroySubMenu(void);
91 Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(int mainIndex);
95 virtual void OnDraw(void);
97 virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
99 virtual void OnBoundsChanged(void);
101 virtual result OnAttachingToMainTree(const Tizen::Ui::_Control* pParent);
103 virtual result OnAttachedToMainTree(void);
105 virtual result OnDetachingFromMainTree(void);
107 virtual void OnVisibleStateChanged(void);
110 virtual void OnActivated(void);
112 virtual void OnDeactivated(void);
114 // _ITouchEventListener
115 virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
117 virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
119 virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
121 virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
123 // _IActionEventListener
124 virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
126 bool OnFocusGained(const _Control& source);
128 bool OnFocusLost(const _Control& source);
130 void OnDrawFocus(void);
132 bool OnKeyPressed(const _Control &source, const _KeyInfo &keyInfo);
134 virtual ~_OptionMenu(void);
136 static _OptionMenu* CreateOptionMenuN(void);
138 virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
139 virtual void OnFontInfoRequested(unsigned long& style, float& size);
144 _OptionMenu(const _OptionMenu&);
146 _OptionMenu& operator =(const _OptionMenu&);
148 void SetBoundsAllAccessibilityElement(void);
150 void RemoveAllAccessibilityElement(void);
153 _OptionMenuPresenter* __pOptionMenuPresenter;
155 _ActionEvent* __pActionEvent;
157 _ContextMenu* __pSubMenu;
161 Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
163 int __currentFocusedIndex;
168 }}} // Tizen::Ui::Controls
170 #endif // _FUI_CTRL_INTERNAL_OPTION_MENU_H_