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_OptionMenuImpl.cpp
20 * @brief This is the implementation file for the _OptionMenuImpl class.
23 #include <FBaseSysLog.h>
24 #include <FBaseResult.h>
26 #include "FUi_ResourceManager.h"
27 #include "FUiCtrl_OptionMenuImpl.h"
28 #include "FUiCtrl_PublicActionEvent.h"
30 using namespace Tizen::Base;
31 using namespace Tizen::Base::Runtime;
32 using namespace Tizen::Ui;
33 using namespace Tizen::Graphics;
35 namespace Tizen { namespace Ui { namespace Controls
39 _OptionMenuImpl::GetInstance(OptionMenu& optionMenu)
41 return static_cast<_OptionMenuImpl*>(optionMenu._pControlImpl);
44 const _OptionMenuImpl*
45 _OptionMenuImpl::GetInstance(const OptionMenu& optionMenu)
47 return static_cast<const _OptionMenuImpl*>(optionMenu._pControlImpl);
50 _OptionMenuImpl::_OptionMenuImpl(OptionMenu* pPublic, _OptionMenu* pCore)
51 : _WindowImpl(pPublic, pCore)
52 , __pPublicActionEvent(null)
57 _OptionMenuImpl::CreateOptionMenuImplN(OptionMenu& control)
61 _OptionMenu* pCore = _OptionMenu::CreateOptionMenuN();
62 result r = GetLastResult();
63 SysTryReturn(NID_UI_CTRL, (pCore != null), null, r, "[%s] Propagating.", GetErrorMessage(r));
66 GET_SHAPE_CONFIG(OPTIONMENU::ITEM_MAX_COUNT, _CONTROL_ORIENTATION_PORTRAIT, itemMaxCount);
67 pCore->SetShowItemCount(itemMaxCount);
69 _OptionMenuImpl* pImpl = new (std::nothrow) _OptionMenuImpl(&control, pCore);
70 r = CheckConstruction(pCore, pImpl);
71 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), null, r, "[%s] Propagating.", GetErrorMessage(r));
73 pImpl->__pPublicActionEvent = _PublicActionEvent::CreateInstanceN(control);
75 SysTryCatch(NID_UI_CTRL, (pImpl->__pPublicActionEvent != null), , r,
76 "[%s] Propagating.", GetErrorMessage(r));
78 r = pCore->AddActionEventListener(*pImpl);
79 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
88 _OptionMenuImpl::~_OptionMenuImpl(void)
90 if (__pPublicActionEvent != null)
92 delete __pPublicActionEvent;
93 __pPublicActionEvent = null;
98 _OptionMenuImpl::AddActionEventListener(IActionEventListener& listener)
102 return __pPublicActionEvent->AddListener(listener);
106 _OptionMenuImpl::RemoveActionEventListener(IActionEventListener& listener)
110 return __pPublicActionEvent->RemoveListener(listener);
114 _OptionMenuImpl::AddItem(const String& text, int actionId, const Bitmap* pNormalBitmap,
115 const Bitmap* pPressedBitmap, const Bitmap* pHighlightedBitmap)
119 return GetCore().AddItem(text, actionId, pNormalBitmap, pPressedBitmap, pHighlightedBitmap);
123 _OptionMenuImpl::InsertItemAt(int mainIndex, const String& text, int actionId, const Bitmap* normalBitmap,
124 const Bitmap* pPressedBitmap, const Bitmap *pHighlightedBitmap)
127 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0 && mainIndex <= GetItemCount()), E_INVALID_ARG, E_INVALID_ARG,
128 "[E_INVALID_ARG] The specified main index (%d) is invalid.", mainIndex);
130 return GetCore().InsertItemAt(mainIndex, text, actionId, normalBitmap, pPressedBitmap, pHighlightedBitmap);
134 _OptionMenuImpl::SetItemAt(int mainIndex, const String& text, int actionId, const Bitmap* normalBitmap,
135 const Bitmap* pPressedBitmap, const Bitmap *pHighlightedBitmap)
138 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0 && mainIndex < GetItemCount()), E_INVALID_ARG, E_INVALID_ARG,
139 "[E_INVALID_ARG] The specified main index (%d) is invalid.", mainIndex);
141 return GetCore().SetItemAt(mainIndex, text, actionId, normalBitmap, pPressedBitmap, pHighlightedBitmap);
145 _OptionMenuImpl::RemoveItemAt(int mainIndex)
148 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0 && mainIndex < GetItemCount()), E_INVALID_ARG, E_INVALID_ARG,
149 "[E_INVALID_ARG] The specified main index (%d) is invalid.", mainIndex);
151 return GetCore().RemoveItemAt(mainIndex);
155 _OptionMenuImpl::RemoveAllItems(void)
159 GetCore().RemoveAllItems();
165 _OptionMenuImpl::GetItemCount(void) const
169 return GetCore().GetItemCount();
173 _OptionMenuImpl::GetItemIndexFromActionId(int actionId) const
177 return GetCore().GetItemIndexAt(actionId);
181 _OptionMenuImpl::GetItemActionIdAt(int mainIndex) const
184 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0 && mainIndex < GetItemCount()), E_INVALID_ARG, E_INVALID_ARG,
185 "[E_INVALID_ARG] The specified main index (%d) is invalid.", mainIndex);
187 return GetCore().GetItemActionIdAt(mainIndex);
191 _OptionMenuImpl::AddSubItem(int mainIndex, const String& text, int actionId)
194 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
195 "[E_INVALID_ARG] The specified main index (%d) is negative.", mainIndex);
197 return GetCore().AddSubItem(mainIndex, text, actionId);
201 _OptionMenuImpl::InsertSubItemAt(int mainIndex, int subIndex, const String& text, int actionId)
204 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
205 "[E_INVALID_ARG] The specified main index (%d) is negative.", mainIndex);
206 SysTryReturn(NID_UI_CTRL, (subIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
207 "[E_INVALID_ARG] The specified sub index (%d) is negative.", subIndex);
209 return GetCore().InsertSubItemAt(mainIndex, subIndex, text, actionId);
213 _OptionMenuImpl::SetSubItemAt(int mainIndex, int subIndex, const String& text, int actionId)
216 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
217 "[E_INVALID_ARG] The specified main index (%d) is negative.", mainIndex);
218 SysTryReturn(NID_UI_CTRL, (subIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
219 "[E_INVALID_ARG] The specified sub index (%d) is negative.", subIndex);
221 return GetCore().SetSubItemAt(mainIndex, subIndex, text, actionId);
225 _OptionMenuImpl::RemoveSubItemAt(int mainIndex, int subIndex)
228 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
229 "[E_INVALID_ARG] The specified main index (%d) is negative.", mainIndex);
230 SysTryReturn(NID_UI_CTRL, (subIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
231 "[E_INVALID_ARG] The specified sub index (%d) is negative.", subIndex);
233 return GetCore().RemoveSubItemAt(mainIndex, subIndex);
237 _OptionMenuImpl::GetSubItemCount(int mainIndex) const
240 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
241 "[E_INVALID_ARG] The specified main index (%d) is negative.", mainIndex);
243 return GetCore().GetSubItemCount(mainIndex);
247 _OptionMenuImpl::GetSubItemIndexFromActionId(int actionId) const
251 return GetCore().GetSubItemIndexFromActionId(actionId);
255 _OptionMenuImpl::GetSubItemActionIdAt(int mainIndex, int subIndex) const
258 SysTryReturn(NID_UI_CTRL, (mainIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
259 "[E_INVALID_ARG] The specified main index (%d) is negative.", mainIndex);
260 SysTryReturn(NID_UI_CTRL, (subIndex >= 0), E_INVALID_ARG, E_INVALID_ARG,
261 "[E_INVALID_ARG] The specified sub index (%d) is negative.", subIndex);
263 return GetCore().GetSubItemActionIdAt(mainIndex, subIndex);
267 _OptionMenuImpl::SetItemTextColor(OptionMenuItemStatus status, const Color& color)
271 result r = E_SUCCESS;
275 case OPTION_MENU_ITEM_STATUS_NORMAL:
276 r = GetCore().SetTextColor(OPTION_MENU_CORE_ITEM_STATUS_NORMAL, color);
279 case OPTION_MENU_ITEM_STATUS_PRESSED:
280 r = GetCore().SetTextColor(OPTION_MENU_CORE_ITEM_STATUS_PRESSED, color);
283 case OPTION_MENU_ITEM_STATUS_HIGHLIGHTED:
284 r = GetCore().SetTextColor(OPTION_MENU_CORE_ITEM_STATUS_HIGHLIGHTED, color);
288 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "Invalid argument at OptionMenuItemStatus.");
297 _OptionMenuImpl::GetItemTextColor(OptionMenuItemStatus status) const
301 Tizen::Graphics::Color color(0, 0, 0, 0);
305 case OPTION_MENU_ITEM_STATUS_NORMAL:
306 color = GetCore().GetTextColor(OPTION_MENU_CORE_ITEM_STATUS_NORMAL);
309 case OPTION_MENU_ITEM_STATUS_PRESSED:
310 color = GetCore().GetTextColor(OPTION_MENU_CORE_ITEM_STATUS_PRESSED);
313 case OPTION_MENU_ITEM_STATUS_HIGHLIGHTED:
314 color = GetCore().GetTextColor(OPTION_MENU_CORE_ITEM_STATUS_HIGHLIGHTED);
318 SysLogException(NID_UI_CTRL, E_SYSTEM, "Invalid argument at OptionMenuItemStatus.");
326 _OptionMenuImpl::SetItemColor(OptionMenuItemStatus status, const Color& color)
330 result r = E_SUCCESS;
334 //The item color for OPTION_MENU_ITEM_STATUS_NORMAL is not supported.
335 //case OPTION_MENU_ITEM_STATUS_NORMAL:
337 case OPTION_MENU_ITEM_STATUS_PRESSED:
338 r = GetCore().SetItemColor(OPTION_MENU_CORE_ITEM_STATUS_PRESSED, color);
341 case OPTION_MENU_ITEM_STATUS_HIGHLIGHTED:
342 r = GetCore().SetItemColor(OPTION_MENU_CORE_ITEM_STATUS_HIGHLIGHTED, color);
346 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "Invalid argument at OptionMenuItemStatus.");
355 _OptionMenuImpl::GetItemColor(OptionMenuItemStatus status) const
359 Tizen::Graphics::Color color(0, 0, 0, 0);
363 case OPTION_MENU_ITEM_STATUS_NORMAL:
364 color = GetCore().GetItemColor(OPTION_MENU_CORE_ITEM_STATUS_NORMAL);
367 case OPTION_MENU_ITEM_STATUS_PRESSED:
368 color = GetCore().GetItemColor(OPTION_MENU_CORE_ITEM_STATUS_PRESSED);
371 case OPTION_MENU_ITEM_STATUS_HIGHLIGHTED:
372 color = GetCore().GetItemColor(OPTION_MENU_CORE_ITEM_STATUS_HIGHLIGHTED);
376 SysLogException(NID_UI_CTRL, E_SYSTEM, "Invalid argument at OptionMenuItemStatus.");
384 _OptionMenuImpl::SetColor(const Color& color)
388 return GetCore().SetColor(color);
392 _OptionMenuImpl::GetColor(void) const
396 return GetCore().GetColor();
400 _OptionMenuImpl::SetMaxVisibleItemsCount(int maxItemsCount)
404 return GetCore().SetMaxVisibleItemsCount(maxItemsCount);
408 _OptionMenuImpl::GetMaxVisibleItemsCount(void) const
411 return GetCore().GetPropertyMaxVisibleItemsCount().ToInt();
415 _OptionMenuImpl::OnAttachedToMainTree(void)
417 SysTryReturn(NID_UI_CTRL, (GetCore().GetItemCount() > 0), E_INVALID_OPERATION, E_INVALID_OPERATION,
418 "[E_INVALID_OPERATION] There is no item to show.");
420 return _WindowImpl::OnAttachedToMainTree();;
424 _OptionMenuImpl::GetPublicClassName(void) const
426 return "Tizen::Ui::Controls::OptionMenu";
430 _OptionMenuImpl::GetPublic(void) const
432 return static_cast <const OptionMenu&>(_ControlImpl::GetPublic());
436 _OptionMenuImpl::GetPublic(void)
438 return static_cast <OptionMenu&>(_ControlImpl::GetPublic());
442 _OptionMenuImpl::GetCore(void) const
444 return static_cast <const _OptionMenu&>(_ControlImpl::GetCore());
448 _OptionMenuImpl::GetCore(void)
450 return static_cast <_OptionMenu&>(_ControlImpl::GetCore());
454 _OptionMenuImpl::OnActionPerformed(const _Control& source, int actionId)
456 if (__pPublicActionEvent != null)
458 IEventArg* pEventArg = _PublicActionEvent::CreateActionEventArgN(actionId);
459 if (pEventArg == null)
464 __pPublicActionEvent->Fire(*pEventArg);
468 }}} // Tizen::Ui::Controls