Tizen 2.1 base
[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 Flora License, Version 1.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://floralicense.org/license/
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  * @file                FUiCtrl_OptionMenu.h
19  * @brief               This is the header file for the _OptionMenu class.
20  */
21
22 #ifndef _FUI_CTRL_INTERNAL_OPTION_MENU_H_
23 #define _FUI_CTRL_INTERNAL_OPTION_MENU_H_
24
25 #include <FBaseColLinkedListT.h>
26
27 #include "FUi_Window.h"
28 #include "FUiCtrl_IActionEventListener.h"
29 #include "FUiCtrl_OptionMenuItem.h"
30
31 namespace Tizen { namespace Ui {
32 class _AccessibilityElement;
33 }} // Tizen::Ui
34
35 namespace Tizen { namespace Ui { namespace Controls
36 {
37
38 class _ActionEvent;
39 class _ContextMenu;
40 class _OptionMenuPresenter;
41
42 class _OSP_EXPORT_ _OptionMenu
43         : public Tizen::Ui::_Window
44         , public _IActionEventListener
45         , virtual public Tizen::Base::Runtime::IEventListener
46         , virtual public _IUiEventListener
47         , virtual public _IUiEventPreviewer
48 {
49 public:
50         result AddActionEventListener(const _IActionEventListener& listener);
51
52         result RemoveActionEventListener(const _IActionEventListener& listener);
53
54         result FireActionEvent(int actionId);
55
56         result AddItem(const Tizen::Base::String& text, int actionId);
57
58         result InsertItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
59
60         result SetItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
61
62         result RemoveItemAt(int mainIndex);
63
64         int GetItemCount(void) const;
65
66         int GetItemIndexFromActionId(int actionId) const;
67
68         int GetItemActionIdAt(int mainIndex) const;
69
70         result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId);
71
72         result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
73
74         result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
75
76         result RemoveSubItemAt(int mainIndex, int subIndex);
77
78         int GetSubItemCount(int mainIndex) const;
79
80         int GetSubItemIndexFromActionId(int actionId) const;
81
82         int GetSubItemActionIdAt(int mainIndex, int subIndex) const;
83
84         bool IsSubMenuShown(void) const;
85
86         result ShowSubMenu(int mainIndex, _OptionMenuItem& item);
87
88         result DestroySubMenu(void);
89
90         Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(int mainIndex);
91
92 public:
93 // _IControlDelegator
94         virtual void OnDraw(void);
95
96         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
97
98         virtual void OnBoundsChanged(void);
99
100         virtual result OnAttachingToMainTree(const Tizen::Ui::_Control* pParent);
101
102         virtual result OnAttachedToMainTree(void);
103
104         virtual result OnDetachingFromMainTree(void);
105
106         virtual void OnVisibleStateChanged(void);
107
108 // _IWindowDelegator
109         virtual void OnActivated(void);
110
111         virtual void OnDeactivated(void);
112
113 // _ITouchEventListener
114         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
115
116         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
117
118         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
119
120         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
121
122 // _IActionEventListener
123         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
124
125         virtual ~_OptionMenu(void);
126
127         static _OptionMenu* CreateOptionMenuN(void);
128
129         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
130         virtual void OnFontInfoRequested(unsigned long& style, int& size);
131
132 private:
133         _OptionMenu(void);
134
135         _OptionMenu(const _OptionMenu&);
136
137         _OptionMenu& operator =(const _OptionMenu&);
138
139         void SetBoundsAllAccessibilityElement(void);
140
141         void RemoveAllAccessibilityElement(void);
142
143 private:
144         _OptionMenuPresenter* __pOptionMenuPresenter;
145
146         _ActionEvent* __pActionEvent;
147
148         _ContextMenu* __pSubMenu;
149
150         int __subMenuIndex;
151
152         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
153 }; // _OptionMenu
154
155 }}} // Tizen::Ui::Controls
156
157 #endif  // _FUI_CTRL_INTERNAL_OPTION_MENU_H_