Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / controls / FUiCtrlOptionMenu.cpp
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                FUiCtrlOptionMenu.cpp
19  * @brief               This is the implementation file for the OptionMenu class.
20  */
21
22 #include <FUiCtrlOptionMenu.h>
23 #include <FBaseSysLog.h>
24
25 #include "FUiCtrl_OptionMenuImpl.h"
26
27 using namespace Tizen::Base;
28
29 namespace Tizen { namespace Ui { namespace Controls
30 {
31
32 OptionMenu::OptionMenu(void)
33 {
34 }
35
36 OptionMenu::~OptionMenu(void)
37 {
38 }
39
40 result
41 OptionMenu::Construct(void)
42 {
43         ClearLastResult();
44         SysAssertf((_OptionMenuImpl::GetInstance(*this) == null),
45                                 "Already constructed. Calling Construct() twice or more on a same instance is not allowed for this class.");
46
47         // Create _OptionMenuImpl
48         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::CreateOptionMenuImplN(*this);
49         result r = GetLastResult();
50         SysTryReturn(NID_UI_CTRL, pOptionMenuImpl != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
51
52         // Set _OptionMenuImpl
53         _pControlImpl = pOptionMenuImpl;
54
55         return E_SUCCESS;
56 }
57
58 void
59 OptionMenu::AddActionEventListener(IActionEventListener& listener)
60 {
61         ClearLastResult();
62
63         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
64         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
65
66         result r = pOptionMenuImpl->AddActionEventListener(listener);
67         SysTryReturnVoidResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
68 }
69
70 void
71 OptionMenu::RemoveActionEventListener(IActionEventListener& listener)
72 {
73         ClearLastResult();
74
75         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
76         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
77
78         result r = pOptionMenuImpl->RemoveActionEventListener(listener);
79         SysTryReturnVoidResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
80 }
81
82 result
83 OptionMenu::AddItem(const String& text, int actionId)
84 {
85         ClearLastResult();
86
87         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
88         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
89
90         result r = pOptionMenuImpl->AddItem(text, actionId);
91         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
92
93         return r;
94 }
95
96 result
97 OptionMenu::InsertItemAt(int mainIndex, const String& text, int actionId)
98 {
99         ClearLastResult();
100
101         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
102         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
103
104         result r = pOptionMenuImpl->InsertItemAt(mainIndex, text, actionId);
105         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
106
107         return r;
108 }
109
110 result
111 OptionMenu::SetItemAt(int mainIndex, const String& text, int actionId)
112 {
113         ClearLastResult();
114
115         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
116         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
117
118         result r = pOptionMenuImpl->SetItemAt(mainIndex, text, actionId);
119         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
120
121         return r;
122 }
123
124 result
125 OptionMenu::RemoveItemAt(int mainIndex)
126 {
127         ClearLastResult();
128
129         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
130         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
131
132         result r = pOptionMenuImpl->RemoveItemAt(mainIndex);
133         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
134
135         return r;
136 }
137
138 int
139 OptionMenu::GetItemCount(void) const
140 {
141         ClearLastResult();
142
143         const _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
144         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
145
146         int count = pOptionMenuImpl->GetItemCount();
147         result r = GetLastResult();
148         SysTryReturn(NID_UI_CTRL, (count >= 0), -1, r, "[%s] Propagating.", GetErrorMessage(r));
149
150         return count;
151 }
152
153 int
154 OptionMenu::GetItemIndexFromActionId(int actionId) const
155 {
156         ClearLastResult();
157
158         const _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
159         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
160
161         int index = pOptionMenuImpl->GetItemIndexFromActionId(actionId);
162         result r = GetLastResult();
163         SysTryReturn(NID_UI_CTRL, (index >= 0), -1, r, "[%s] Propagating.", GetErrorMessage(r));
164
165         return index;
166 }
167
168 int
169 OptionMenu::GetItemActionIdAt(int mainIndex) const
170 {
171         ClearLastResult();
172
173         const _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
174         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
175
176         int actionId = pOptionMenuImpl->GetItemActionIdAt(mainIndex);
177         result r = GetLastResult();
178         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), -1, r, "[%s] Propagating.", GetErrorMessage(r));
179
180         return actionId;
181 }
182
183 result
184 OptionMenu::AddSubItem(int mainIndex, const String& text, int actionId)
185 {
186         ClearLastResult();
187
188         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
189         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
190
191         result r = pOptionMenuImpl->AddSubItem(mainIndex, text, actionId);
192         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
193
194         return r;
195 }
196
197 result
198 OptionMenu::InsertSubItemAt(int mainIndex, int subIndex, const String& text, int actionId)
199 {
200         ClearLastResult();
201
202         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
203         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
204
205         result r = pOptionMenuImpl->InsertSubItemAt(mainIndex, subIndex, text, actionId);
206         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
207
208         return r;
209 }
210
211 result
212 OptionMenu::SetSubItemAt(int mainIndex, int subIndex, const String& text, int actionId)
213 {
214         ClearLastResult();
215
216         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
217         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
218
219         result r = pOptionMenuImpl->SetSubItemAt(mainIndex, subIndex, text, actionId);
220         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
221
222         return r;
223 }
224
225 result
226 OptionMenu::RemoveSubItemAt(int mainIndex, int subIndex)
227 {
228         ClearLastResult();
229
230         _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
231         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
232
233         result r = pOptionMenuImpl->RemoveSubItemAt(mainIndex, subIndex);
234         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
235
236         return r;
237 }
238
239 int
240 OptionMenu::GetSubItemCount(int mainIndex) const
241 {
242         ClearLastResult();
243
244         const _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
245         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
246
247         int count = pOptionMenuImpl->GetSubItemCount(mainIndex);
248         result r = GetLastResult();
249         SysTryReturn(NID_UI_CTRL, (count >= 0), -1, r, "[%s] Propagating.", GetErrorMessage(r));
250
251         return count;
252 }
253
254 int
255 OptionMenu::GetSubItemIndexFromActionId(int actionId) const
256 {
257         ClearLastResult();
258
259         const _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
260         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
261
262         int index = pOptionMenuImpl->GetSubItemIndexFromActionId(actionId);
263         result r = GetLastResult();
264         SysTryReturn(NID_UI_CTRL, (index >= 0), -1, r, "[%s] Propagating.", GetErrorMessage(r));
265
266         return index;
267 }
268
269 int
270 OptionMenu::GetSubItemActionIdAt(int mainIndex, int subIndex) const
271 {
272         ClearLastResult();
273
274         const _OptionMenuImpl* pOptionMenuImpl = _OptionMenuImpl::GetInstance(*this);
275         SysAssertf((pOptionMenuImpl != null), "Not yet constructed. Construct() should be called before use.");
276
277         int actionId = pOptionMenuImpl->GetSubItemActionIdAt(mainIndex, subIndex);
278         result r = GetLastResult();
279         SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), -1, r, "[%s] Propagating.", GetErrorMessage(r));
280
281         return actionId;
282 }
283
284 }}} //Tizen::Ui::Controls