2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://floralicense.org/license/
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_SearchBarPresenter.cpp
20 * @brief This is the implementation file for the _SearchBarPresenter class.
23 #include <FBaseSysLog.h>
24 #include <FBaseErrorDefine.h>
25 #include <FGrp_BitmapImpl.h>
26 #include "FUi_ResourceManager.h"
27 #include "FUiAnim_VisualElement.h"
28 #include "FUiCtrl_Edit.h"
29 #include "FUiCtrl_Form.h"
30 #include "FUiCtrl_SearchBar.h"
31 #include "FUiCtrl_SearchBarModel.h"
32 #include "FUiCtrl_SearchBarPresenter.h"
33 #include "FUiCtrl_Toolbar.h"
34 #include "FUi_CoordinateSystemUtils.h"
36 using namespace Tizen::Graphics;
37 using namespace Tizen::Ui::Animations;
38 using namespace Tizen::Base;
39 using namespace Tizen::Ui;
41 namespace Tizen { namespace Ui { namespace Controls {
43 _SearchBarPresenter::_SearchBarPresenter(void)
45 , __pSearchBarModel(null)
46 , __pCancelButton(null)
49 , __searchFieldBounds(FloatRectangle())
50 , __pIconElement(null)
51 , __pReplacedSearchFieldNormalBitmap(null)
52 , __pReplacedSearchFieldDisabledBitmap(null)
53 , __pSearchFieldEffectBitmap(null)
57 _SearchBarPresenter::~_SearchBarPresenter(void)
59 delete __pSearchBarModel;
60 __pSearchBarModel = null;
64 __pIconElement->Destroy();
65 __pIconElement = null;
68 if (__pReplacedSearchFieldNormalBitmap)
70 delete __pReplacedSearchFieldNormalBitmap;
71 __pReplacedSearchFieldNormalBitmap = null;
74 if (__pReplacedSearchFieldDisabledBitmap)
76 delete __pReplacedSearchFieldDisabledBitmap;
77 __pReplacedSearchFieldDisabledBitmap = null;
80 if (__pSearchFieldEffectBitmap)
82 delete __pSearchFieldEffectBitmap;
83 __pSearchFieldEffectBitmap = null;
88 _SearchBarPresenter::Construct(const _SearchBar& searchBar)
91 _VisualElement* pSearchBarElement = null;
93 __pSearchBar = const_cast <_SearchBar*>(&searchBar);
94 SysTryReturn(NID_UI_CTRL, __pSearchBar, E_SYSTEM, E_SYSTEM,
95 "[E_SYSTEM] A system error has occurred. The searchbar instance is null.");
97 __pCancelButton = __pSearchBar->GetSearchBarButton();
98 SysTryReturn(NID_UI_CTRL, __pCancelButton, E_SYSTEM, E_SYSTEM,
99 "[E_SYSTEM] A system error has occurred. The cancel button instance is null.");
101 __pEdit = __pSearchBar->GetSearchField();
102 SysTryReturn(NID_UI_CTRL, __pEdit, E_SYSTEM, E_SYSTEM,
103 "[E_SYSTEM] A system error has occurred. The edit instance is null.");
105 __pContainer = __pSearchBar->GetSearchBarContainer();
106 SysTryReturn(NID_UI_CTRL, __pContainer, E_SYSTEM, E_SYSTEM,
107 " [E_SYSTEM] A system error has occurred. Failed to get the content.");
109 r = LoadSearchFieldIcon();
110 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
112 _VisualElement* pEditElement = __pEdit->GetVisualElement();
113 SysTryReturn(NID_UI_CTRL, pEditElement, E_SYSTEM, E_SYSTEM,
114 "[E_SYSTEM] A system error has occurred. Failed to get edit visual element.");
116 __pIconElement = new (std::nothrow) _VisualElement();
117 SysTryCatch(NID_UI_CTRL, __pIconElement, , E_OUT_OF_MEMORY,
118 "[E_OUT_OF_MEMORY] Memory allocation failed.");
120 r = __pIconElement->Construct();
121 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
123 __pIconElement->SetShowState(true);
125 r = __pIconElement->SetSurfaceOpaque(false);
126 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
128 __pIconElement->SetImplicitAnimationEnabled(false);
130 r = pEditElement->AttachChild(*__pIconElement);
131 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
133 pSearchBarElement = __pSearchBar->GetVisualElement();
134 SysTryCatch(NID_UI_CTRL, pSearchBarElement, , E_SYSTEM,
135 "[E_SYSTEM] A system error has occurred. Failed to get searchbar's visual element.");
142 __pIconElement->Destroy();
143 __pIconElement = null;
150 _SearchBarPresenter::LoadSearchFieldIcon()
152 result r = E_SUCCESS;
153 Color searchFieldIconColor;
154 Bitmap* pSearchFieldBitmap;
157 r = GET_BITMAP_CONFIG_N(SEARCHBAR::ICON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSearchFieldBitmap);
158 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "Propagating.");
160 r = GET_BITMAP_CONFIG_N(SEARCHBAR::ICON_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pSearchFieldEffectBitmap);
161 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r,"[%s] Propagating.", GetErrorMessage(r));
163 GET_COLOR_CONFIG(SEARCHBAR::ICON_BG_NORMAL, searchFieldIconColor);
165 __pReplacedSearchFieldNormalBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pSearchFieldBitmap, Color::GetColor(COLOR_ID_MAGENTA), searchFieldIconColor);
166 SysTryCatch(NID_UI_CTRL, __pReplacedSearchFieldNormalBitmap != null, r = GetLastResult(), GetLastResult(),"[%s] Propagating.",
167 GetErrorMessage(GetLastResult()));
169 delete pSearchFieldBitmap;
170 pSearchFieldBitmap = null;
172 r = GET_BITMAP_CONFIG_N(SEARCHBAR::ICON_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSearchFieldBitmap);
173 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r,"[%s] Propagating.", GetErrorMessage(r));
175 GET_COLOR_CONFIG(SEARCHBAR::ICON_BG_DISABLED, searchFieldIconColor);
177 __pReplacedSearchFieldDisabledBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pSearchFieldBitmap, Color::GetColor(COLOR_ID_MAGENTA), searchFieldIconColor);
178 SysTryCatch(NID_UI_CTRL, __pReplacedSearchFieldDisabledBitmap != null, r = GetLastResult(), GetLastResult(),"[%s] Propagating.",
179 GetErrorMessage(GetLastResult()));
181 delete pSearchFieldBitmap;
182 pSearchFieldBitmap = null;
187 delete pSearchFieldBitmap;
188 pSearchFieldBitmap = null;
190 delete __pSearchFieldEffectBitmap;
191 __pSearchFieldEffectBitmap = null;
193 delete __pReplacedSearchFieldNormalBitmap;
194 __pReplacedSearchFieldNormalBitmap = null;
200 _SearchBarPresenter::Install(void)
202 result r = E_SUCCESS;
204 _SearchBarModel* pModel = new (std::nothrow) _SearchBarModel;
205 SysTryReturn(NID_UI_CTRL, pModel, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
207 r = pModel->Construct();
208 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM,
209 "[E_SYSTEM] A system error has occurred. The searchbar model construction failed.");
211 __pSearchBarModel = pModel;
221 _SearchBarPresenter::UpdateContentArea(bool invalidate)
223 SearchBarMode mode = __pSearchBarModel->GetMode();
224 SysTryReturn(NID_UI_CTRL, mode == SEARCH_BAR_MODE_INPUT, E_INVALID_OPERATION, E_INVALID_OPERATION,
225 "[E_INVALID_OPERATION] The searchbar mode cannot be updated.");
227 __pSearchBar->Invalidate(invalidate);
233 _SearchBarPresenter::SetContentAreaVisible(bool visible)
235 return __pSearchBarModel->SetContentAreaVisible(visible);
239 _SearchBarPresenter::IsContentAreaVisible(void) const
241 return __pSearchBarModel->IsContentAreaVisible();
245 _SearchBarPresenter::GetMode(void) const
247 return __pSearchBarModel->GetMode();
251 _SearchBarPresenter::IsModeLocked(void) const
253 return __pSearchBarModel->IsModeLocked();
257 _SearchBarPresenter::SetMode(SearchBarMode mode)
259 SysTryReturn(NID_UI_CTRL, IsModeLocked() == false, E_INVALID_OPERATION, E_INVALID_OPERATION,
260 "[E_INVALID_OPERATION] The searchbar mode is locked.");
262 if (GetMode() == mode)
267 __pSearchBarModel->SetMode(mode);
269 result r = ChangeMode(mode);
270 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM,
271 "[E_SYSTEM] A system error has occurred. Failed to change the mode of searchbar.");
277 _SearchBarPresenter::SetModeLocked(bool modeLocked)
279 return __pSearchBarModel->SetModeLocked(modeLocked);
283 _SearchBarPresenter::Draw(void)
285 result r = E_SUCCESS;
287 Color bgColor = __pSearchBar->GetColor();
289 FloatRectangle bounds(0.0f, 0.0f, __pSearchBar->GetBoundsF().width, __pSearchBar->GetBoundsF().height);
291 Bitmap* pBackgroundBitmap = __pSearchBar->GetBackgroundBitmap();
293 if (pBackgroundBitmap)
295 Canvas* pCanvas = __pSearchBar->GetCanvasN();
297 SysTryReturn(NID_UI_CTRL, (pCanvas != null), r, r, "[%s] Propagating.", GetErrorMessage(r));
299 pCanvas->SetBackgroundColor(bgColor);
302 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pBackgroundBitmap))
304 pCanvas->DrawNinePatchedBitmap(bounds, *pBackgroundBitmap);
308 pCanvas->DrawBitmap(bounds, *pBackgroundBitmap, FloatRectangle(0.0f, 0.0f, pBackgroundBitmap->GetWidthF(), pBackgroundBitmap->GetHeightF()));
315 __pSearchBar->SetBackgroundColor(bgColor);
319 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
325 _SearchBarPresenter::SetCancelButtonVisible(bool visible)
327 if ((__pSearchBar->IsUsableCancelButton() == false) && visible)
332 if (__pCancelButton == null)
337 __pCancelButton->SetVisibleState(visible);
343 _SearchBarPresenter::SetContainerVisible(bool visible)
345 if (__pContainer == null)
350 __pContainer->SetVisibleState(visible);
357 _SearchBarPresenter::DrawIcon(void)
359 SysTryReturn(NID_UI_CTRL, __pEdit, E_SYSTEM, E_SYSTEM,
360 "[E_SYSTEM] A system error has occurred. Failed to get edit instance.");
361 SysTryReturn(NID_UI_CTRL, __pIconElement, E_SYSTEM, E_SYSTEM,
362 "[E_SYSTEM] A system error has occurred. Failed to get edit visual element.");
364 result r = E_SUCCESS;
366 Canvas* pIconCanvas = null;
367 FloatRectangle iconBounds;
369 bool isCustomBitmap = false;
371 isCustomBitmap = IS_CUSTOM_BITMAP(SEARCHBAR::ICON_NORMAL);
373 float iconMarginH = 0.0f;
374 float iconWidth = 0.0f;
375 float iconHeight = 0.0f;
376 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
378 GET_SHAPE_CONFIG(SEARCHBAR::ICON_HORIZONTAL_MARGIN, orientation, iconMarginH);
379 GET_SHAPE_CONFIG(SEARCHBAR::ICON_WIDTH, orientation, iconWidth);
380 GET_SHAPE_CONFIG(SEARCHBAR::ICON_HEIGHT, orientation, iconHeight);
382 iconBounds.x = iconMarginH;
383 iconBounds.y = (__pEdit->GetBoundsF().height - iconHeight) / 2.0f;
384 iconBounds.width = iconWidth;
385 iconBounds.height = iconHeight;
387 __pIconElement->SetBounds(FloatRectangle(iconBounds.x, iconBounds.y, iconBounds.width, iconBounds.height));
389 pIconCanvas = __pIconElement->GetCanvasN(FloatRectangle(0.0f, 0.0f, iconBounds.width, iconBounds.height));
390 SysTryReturnResult(NID_UI_CTRL, pIconCanvas != null, GetLastResult(), "Propagating.");
392 pIconCanvas->SetBackgroundColor(Color(0));
393 pIconCanvas->Clear();
394 if (__pSearchBar->IsEnabled())
396 if (__pReplacedSearchFieldNormalBitmap != null)
398 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pReplacedSearchFieldNormalBitmap))
400 pIconCanvas->DrawNinePatchedBitmap(FloatRectangle(0, 0, iconBounds.width, iconBounds.height), *__pReplacedSearchFieldNormalBitmap);
404 pIconCanvas->DrawBitmap(FloatRectangle(0, 0, iconBounds.width, iconBounds.height), *__pReplacedSearchFieldNormalBitmap);
410 if (__pReplacedSearchFieldDisabledBitmap != null)
412 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pReplacedSearchFieldDisabledBitmap))
414 pIconCanvas->DrawNinePatchedBitmap(FloatRectangle(0, 0, iconBounds.width, iconBounds.height), *__pReplacedSearchFieldDisabledBitmap);
418 pIconCanvas->DrawBitmap(FloatRectangle(0, 0, iconBounds.width, iconBounds.height), *__pReplacedSearchFieldDisabledBitmap);
423 if (!isCustomBitmap && __pSearchFieldEffectBitmap != null)
425 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pSearchFieldEffectBitmap))
427 pIconCanvas->DrawNinePatchedBitmap(FloatRectangle(0, 0, iconBounds.width, iconBounds.height), *__pSearchFieldEffectBitmap);
431 pIconCanvas->DrawBitmap(FloatRectangle(0, 0, iconBounds.width, iconBounds.height), *__pSearchFieldEffectBitmap);
443 _SearchBarPresenter::ChangeMode(SearchBarMode mode)
445 result r = E_SUCCESS;
447 if (mode == SEARCH_BAR_MODE_NORMAL)
449 InitializeViewModeLayout();
450 SetCancelButtonVisible(false);
451 SetContainerVisible(false);
455 __pEdit->ClearText();
456 __pEdit->SetCursorDisabled(true);
457 __pEdit->SetBounds(__searchFieldBounds);
458 __pEdit->HideKeypad();
461 r = __pSearchBar->SendSearchBarEvent(_SEARCH_BAR_EVENT_MODE_CHANGE);
462 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM,
463 "[E_SYSTEM] A system error has occurred. Failed to fire the searchbar event.");
467 r = __pSearchBar->SendSearchBarEvent(_SEARCH_BAR_EVENT_MODE_CHANGE);
468 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM,
469 "[E_SYSTEM] A system error has occurred. Failed to fire the searchbar event.");
471 InitializeInputModeLayout();
472 SetCancelButtonVisible(true);
473 __pSearchBar->SetContentDimming();
477 __pEdit->SetCursorDisabled(false);
479 float buttonWidth = 0.0f;
480 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
481 GET_SHAPE_CONFIG(SEARCHBAR::BUTTON_WIDTH, orientation, buttonWidth);
483 float cancelButtonWidth = 0.0f;
484 cancelButtonWidth = __pCancelButton->GetTextExtentSizeF() + __pCancelButton->GetRightTouchMarginF() + __pCancelButton->GetLeftTouchMarginF() + __pCancelButton->GetRightMarginF() + __pCancelButton->GetLeftMarginF();
486 if (cancelButtonWidth <= buttonWidth)
488 __pEdit->SetBounds(__searchFieldBounds);
490 __pEdit->ShowKeypad();
492 __pSearchBar->SetContentsArea();
494 if (IsContentAreaVisible())
496 SetContainerVisible(true);
499 __pSearchBar->Invalidate();
506 _SearchBarPresenter::InitializeInputModeLayout(void)
508 InitializeViewModeLayout();
510 if (__pSearchBar->IsUsableCancelButton() == false)
515 float horizontalMargin = 0.0f;
516 float buttonRightMargin = 0.0f;
517 float buttonLeftMargin = 0.0f;
518 float buttonWidth = 0.0f;
519 float searchFieldMinWidth = 0.0f;
521 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
523 GET_SHAPE_CONFIG(SEARCHBAR::HORIZONTAL_MARGIN, orientation, horizontalMargin);
524 GET_SHAPE_CONFIG(SEARCHBAR::BUTTON_LEFT_MARGIN, orientation, buttonLeftMargin);
525 GET_SHAPE_CONFIG(SEARCHBAR::BUTTON_RIGHT_MARGIN, orientation, buttonRightMargin);
526 GET_SHAPE_CONFIG(SEARCHBAR::SEARCH_FIELD_MIN_WIDTH, orientation, searchFieldMinWidth);
527 GET_SHAPE_CONFIG(SEARCHBAR::BUTTON_WIDTH, orientation, buttonWidth);
529 float buttonResizableSearchBarWidth = (horizontalMargin + searchFieldMinWidth +
530 buttonWidth + buttonLeftMargin + buttonRightMargin);
532 if (__pSearchBar->GetBoundsF().width < buttonResizableSearchBarWidth)
534 __searchFieldBounds.width = searchFieldMinWidth;
539 __searchFieldBounds.width = __pSearchBar->GetBoundsF().width - (buttonRightMargin +
540 buttonWidth + buttonLeftMargin + horizontalMargin);
543 __searchFieldBounds.width = (__pSearchBar->GetBoundsF().width > searchFieldMinWidth) ? __searchFieldBounds.width : searchFieldMinWidth;
545 float cancelButtonWidth = 0.0f;
546 cancelButtonWidth = __pCancelButton->GetTextExtentSizeF() + __pCancelButton->GetRightTouchMarginF() + __pCancelButton->GetLeftTouchMarginF() + __pCancelButton->GetRightMarginF() + __pCancelButton->GetLeftMarginF();
548 if (cancelButtonWidth > buttonWidth)
550 __pSearchBar->RecalculateButtonBounds();
557 _SearchBarPresenter::InitializeViewModeLayout(void)
559 float horizontalMargin = 0.0f;
560 float verticalMargin = 0.0f;
561 float searchBarMinWidthModeNormal = 0.0f;
562 float searchBarMinHeight = 0.0f;
563 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
565 GET_SHAPE_CONFIG(SEARCHBAR::HORIZONTAL_MARGIN, orientation, horizontalMargin);
566 GET_SHAPE_CONFIG(SEARCHBAR::VERTICAL_MARGIN, orientation, verticalMargin);
567 GET_SHAPE_CONFIG(SEARCHBAR::SEARCH_FIELD_MIN_WIDTH_NORMAL_MODE, orientation, searchBarMinWidthModeNormal);
568 GET_SHAPE_CONFIG(SEARCHBAR::MIN_HEIGHT, orientation, searchBarMinHeight);
570 float searchFieldMinHeight = searchBarMinHeight - (verticalMargin * 2.0f);
572 __searchFieldBounds.x = horizontalMargin;
573 if (__pSearchBar->GetBoundsF().height < searchBarMinHeight)
575 verticalMargin = (__pSearchBar->GetBoundsF().height - searchFieldMinHeight)/2.0f;
576 if (verticalMargin < 0.0f)
578 verticalMargin = 0.0f;
581 __searchFieldBounds.y = verticalMargin;
582 __searchFieldBounds.width = __pSearchBar->GetBoundsF().width - (horizontalMargin * 2.0f);
583 __searchFieldBounds.height = __pSearchBar->GetBoundsF().height - (verticalMargin * 2.0f);
585 __searchFieldBounds.width = (__searchFieldBounds.width > searchBarMinWidthModeNormal) ? __searchFieldBounds.width : searchBarMinWidthModeNormal;
586 __searchFieldBounds.height = (__searchFieldBounds.height > searchFieldMinHeight) ? __searchFieldBounds.height : searchFieldMinHeight;
592 _SearchBarPresenter::OnBoundsChanged(void)
594 _Control* pClippedGroupControl = __pSearchBar->GetClippedGroupControl();
596 if (pClippedGroupControl != null)
598 pClippedGroupControl->SetBounds(FloatRectangle(FloatPoint(0.0f, 0.0f), __pSearchBar->GetSizeF()));
601 if (GetMode() == SEARCH_BAR_MODE_NORMAL)
603 InitializeViewModeLayout();
607 InitializeInputModeLayout();
610 result r = E_SUCCESS;
611 float cancelButtonWidth = 0.0f;
613 if (__pCancelButton != null)
615 r = __pSearchBar->ResizeCancelButton();
616 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.",GetErrorMessage(r));
618 cancelButtonWidth = __pCancelButton->GetTextExtentSizeF() + __pCancelButton->GetRightTouchMarginF() + __pCancelButton->GetLeftTouchMarginF() + __pCancelButton->GetRightMarginF() + __pCancelButton->GetLeftMarginF();
621 r = __pEdit->SetBounds(__searchFieldBounds);
622 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.",GetErrorMessage(r));
624 if (__pSearchBar->IsUsableCancelButton() && GetMode() == SEARCH_BAR_MODE_INPUT)
626 float buttonWidth = 0.0f;
627 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
628 GET_SHAPE_CONFIG(SEARCHBAR::BUTTON_WIDTH, orientation, buttonWidth);
630 if (cancelButtonWidth > buttonWidth)
632 __pSearchBar->RecalculateButtonBounds();
636 __pSearchBar->SetContentsArea();
637 __pSearchBar->Invalidate(true);
643 _SearchBarPresenter::SetHeaderVisibleState(bool visible)
646 _Control* pControlCore = __pEdit->GetParent();
650 if (pControlCore == null)
652 SysLog(NID_UI_CTRL,"[E_SYSTEM] The parent form is null.");
657 pForm = dynamic_cast<_Form*>(pControlCore);
663 pControlCore = pControlCore->GetParent();
666 _Toolbar* pHeader = pForm->GetHeader();
672 pHeader->SetVisibleState(visible);
677 }}} // Tizen::Ui::Controls