Merge "rollback makecurrent behavior" into tizen_2.1
[platform/framework/native/uifw.git] / src / ui / inc / FUiCtrl_OptionMenu.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
10 //
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.
16 //
17
18 /**
19  * @file                FUiCtrl_OptionMenu.h
20  * @brief               This is the header file for the _OptionMenu class.
21  */
22
23 #ifndef _FUI_CTRL_INTERNAL_OPTION_MENU_H_
24 #define _FUI_CTRL_INTERNAL_OPTION_MENU_H_
25
26 #include <FBaseColLinkedListT.h>
27
28 #include "FUi_Window.h"
29 #include "FUiCtrl_IActionEventListener.h"
30 #include "FUiCtrl_OptionMenuItem.h"
31
32 namespace Tizen { namespace Ui {
33 class _AccessibilityElement;
34 }} // Tizen::Ui
35
36 namespace Tizen { namespace Ui { namespace Controls
37 {
38
39 class _ActionEvent;
40 class _ContextMenu;
41 class _OptionMenuPresenter;
42
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
49 {
50 public:
51         result AddActionEventListener(const _IActionEventListener& listener);
52
53         result RemoveActionEventListener(const _IActionEventListener& listener);
54
55         result FireActionEvent(int actionId);
56
57         result AddItem(const Tizen::Base::String& text, int actionId);
58
59         result InsertItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
60
61         result SetItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
62
63         result RemoveItemAt(int mainIndex);
64
65         int GetItemCount(void) const;
66
67         int GetItemIndexFromActionId(int actionId) const;
68
69         int GetItemActionIdAt(int mainIndex) const;
70
71         result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId);
72
73         result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
74
75         result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
76
77         result RemoveSubItemAt(int mainIndex, int subIndex);
78
79         int GetSubItemCount(int mainIndex) const;
80
81         int GetSubItemIndexFromActionId(int actionId) const;
82
83         int GetSubItemActionIdAt(int mainIndex, int subIndex) const;
84
85         bool IsSubMenuShown(void) const;
86
87         result ShowSubMenu(int mainIndex, _OptionMenuItem& item);
88
89         result DestroySubMenu(void);
90
91         Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(int mainIndex);
92
93 public:
94 // _IControlDelegator
95         virtual void OnDraw(void);
96
97         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
98
99         virtual void OnBoundsChanged(void);
100
101         virtual result OnAttachingToMainTree(const Tizen::Ui::_Control* pParent);
102
103         virtual result OnAttachedToMainTree(void);
104
105         virtual result OnDetachingFromMainTree(void);
106
107         virtual void OnVisibleStateChanged(void);
108
109 // _IWindowDelegator
110         virtual void OnActivated(void);
111
112         virtual void OnDeactivated(void);
113
114 // _ITouchEventListener
115         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
116
117         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
118
119         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
120
121         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
122
123 // _IActionEventListener
124         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
125
126         bool OnFocusGained(const _Control& source);
127
128         bool OnFocusLost(const _Control& source);
129
130         void OnDrawFocus(void);
131
132         bool OnKeyPressed(const _Control &source, const _KeyInfo &keyInfo);
133
134         virtual ~_OptionMenu(void);
135
136         static _OptionMenu* CreateOptionMenuN(void);
137
138         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
139         virtual void OnFontInfoRequested(unsigned long& style, float& size);
140
141 private:
142         _OptionMenu(void);
143
144         _OptionMenu(const _OptionMenu&);
145
146         _OptionMenu& operator =(const _OptionMenu&);
147
148         void SetBoundsAllAccessibilityElement(void);
149
150         void RemoveAllAccessibilityElement(void);
151
152 private:
153         _OptionMenuPresenter* __pOptionMenuPresenter;
154
155         _ActionEvent* __pActionEvent;
156
157         _ContextMenu* __pSubMenu;
158
159         int __subMenuIndex;
160
161         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
162
163         int __currentFocusedIndex;
164
165         bool __isFocused;
166 }; // _OptionMenu
167
168 }}} // Tizen::Ui::Controls
169
170 #endif  // _FUI_CTRL_INTERNAL_OPTION_MENU_H_