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.
18 * @file FUiControl.cpp
19 * @brief This is the implementation file for the Control class.
22 #include <FUiControl.h>
23 #include <FUiContainer.h>
24 #include <FUiTouchGestureDetector.h>
25 #include <FBaseSysLog.h>
26 #include <FApp_AppInfo.h>
27 #include "FUi_ControlImpl.h"
28 #include "FUi_ContainerImpl.h"
29 #include "FUi_ErrorMessages.h"
30 #include "FUiAnimVisualElement.h"
31 #include "FUiAnimVisualElementSurface.h"
32 #include "FUiAnim_VisualElementSurfaceImpl.h"
36 #include "FUiAnim_EflNode.h"
37 #include "FUiAnim_EflLayer.h"
38 #include "FUiAnim_VisualElementImpl.h"
39 #include "FUiAnim_DisplayContextImpl.h"
42 using namespace Tizen::Base;
43 using namespace Tizen::Base::Collection;
44 using namespace Tizen::Graphics;
45 using namespace Tizen::Ui::Animations;
47 extern "C" _OSP_EXPORT_ void*
48 STO_GetNativeHandle(void* pControl)
50 Handle nativeHandle = 0;
51 Tizen::Ui::Control* pControlPointer = (Tizen::Ui::Control*)pControl;
55 Tizen::Ui::_ControlImpl* pControlImpl = Tizen::Ui::_ControlImpl::GetInstance(*pControlPointer);
59 VisualElement *pVisualElement = pControlImpl->GetVisualElement();
63 VisualElementSurface* pSurface = pVisualElement->GetSurfaceN();
67 _VisualElementSurfaceImpl* pSurfaceImpl = _VisualElementSurfaceImpl::GetInstance(*pSurface);
69 nativeHandle = pSurfaceImpl->GetNativeHandle();
77 return (void*)nativeHandle;
80 extern "C" _OSP_EXPORT_ void
81 STO_NativeHandleSetShowState(void* pNative, bool show)
84 evas_object_show((Evas_Object*)pNative);
86 evas_object_hide((Evas_Object*)pNative);
89 extern "C" _OSP_EXPORT_ void*
90 STO_GetVisualElement(void* pControl)
92 Tizen::Ui::Control* pControlPointer = (Tizen::Ui::Control*)pControl;
93 Tizen::Ui::_ControlImpl* pControlImpl = Tizen::Ui::_ControlImpl::GetInstance(*pControlPointer);
95 return (void *)pControlImpl->GetVisualElement();
98 extern "C" _OSP_EXPORT_
99 void STO_NativeHandleDataSet(void* pEvasObject, void* pData, int width, int height)
101 evas_object_image_size_set((Evas_Object*)pEvasObject, width, height);
102 evas_object_image_data_set((Evas_Object*)pEvasObject, pData);
107 extern "C" _OSP_EXPORT_ void
108 STO_SetVisualElementNativeObject(void* pVisualElement, void* pNativeObject)
110 VisualElement* pVE = (VisualElement* )pVisualElement;
111 Evas_Object* pEO = (Evas_Object*)pNativeObject;
113 _VisualElementImpl* pVEImpl = _VisualElementImpl::GetInstance(*pVE);
115 _EflNode* pNode = (_EflNode*)pVEImpl->GetNativeNode();
116 pNode->AddNativeSmartObject(*pVE, pEO);
121 evas_object_image_size_get(pEO, &imageWidth, &imageHeight);
122 evas_object_image_data_update_add(pEO, 0, 0, imageWidth, imageHeight);
125 extern "C" _OSP_EXPORT_
126 void* STO_CreateNativeImageObject(void* pDisplayContext, int width, int height)
134 _DisplayContextImpl* pDispImpl = _DisplayContextImpl::GetInstance(*(DisplayContext*)pDisplayContext);
136 if(!pDispImpl->GetNativeLayer())
140 Evas* pEvas = ((_EflLayer*)pDispImpl->GetNativeLayer())->GetEvas();
147 Evas_Object* pImage = evas_object_image_filled_add(pEvas);
148 evas_object_resize(pImage, width, height);
149 evas_object_move(pImage, 0, 0);
150 // evas_object_show(pImage);
156 extern "C" _OSP_EXPORT_ void
157 STO_Destroy(void* pVisualElement, void* pEvasObject)
159 VisualElement* pVE = (VisualElement* )pVisualElement;
161 _VisualElementImpl* pVEImpl = _VisualElementImpl::GetInstance(*pVE);
163 _EflNode* pNode = (_EflNode*)pVEImpl->GetNativeNode();
164 pNode->AddNativeSmartObject(*pVE, null);
166 evas_object_del((Evas_Object*)pEvasObject);
170 namespace Tizen { namespace Ui {
172 Control::Control(void)
173 : _pControlImpl(null)
177 Control::~Control(void)
183 Control::Dispose(void)
185 delete _pControlImpl;
186 _pControlImpl = null;
190 Control::Construct(void)
192 SysAssertf(_pControlImpl == null, "Already constructed. Calling Construct() twice or more on a same instance is not allowed for this class.");
194 _ControlImpl* pImpl = _ControlImpl::CreateControlImplN(*this);
195 result r = GetLastResult();
196 SysTryReturn(NID_UI, pImpl, r, r, "[%s] Propagating.", GetErrorMessage(r));
198 _pControlImpl = pImpl;
206 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
207 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
209 result r = pControlImpl->Draw(true);
210 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
216 Control::Draw(bool recursive)
218 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
219 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
221 result r = pControlImpl->Draw(recursive);
222 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
228 Control::Invalidate(bool recursive)
230 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
231 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
233 pControlImpl->Invalidate(recursive);
234 result r = GetLastResult();
235 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
239 Control::InvalidateBounds(const Tizen::Graphics::Rectangle& bounds)
241 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
242 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
244 pControlImpl->Invalidate(bounds);
245 result r = GetLastResult();
246 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
250 Control::GetCanvasN(void) const
252 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
253 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
255 Canvas* pCanvas = pControlImpl->GetCanvasN();
256 result r = GetLastResult();
257 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
267 Control::GetCanvasN(int x, int y, int w, int h) const
269 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
270 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
272 Canvas* pCanvas = pControlImpl->GetCanvasN(Rectangle(x, y, w, h));
273 result r = GetLastResult();
274 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
284 Control::GetCanvasN(const Rectangle& bounds) const
286 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
287 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
289 Canvas* pCanvas = pControlImpl->GetCanvasN(bounds);
290 result r = GetLastResult();
291 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
301 Control::SetEnabled(bool enable)
304 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
306 if (Tizen::App::_AppInfo::GetApiVersion() == _API_VERSION_2_0 && Tizen::App::_AppInfo::IsOspCompat())
309 pControlImpl, E_UNSUPPORTED_OPERATION,
310 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] This control is not constructed.");
314 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
317 pControlImpl->SetEnableState(enable);
318 result r = GetLastResult();
319 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
327 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
328 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
330 result r = pControlImpl->Show();
331 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
337 Control::GetBounds(int& x, int& y, int& w, int& h) const
339 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
340 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
342 Rectangle bounds = pControlImpl->GetBounds();
343 result r = GetLastResult();
344 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
353 Control::GetBounds(void) const
355 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
357 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
358 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
360 Rectangle bounds = pControlImpl->GetBounds();
361 result r = GetLastResult();
362 SysTryReturn(NID_UI, r == E_SUCCESS, errorBounds, r, "[%s] Propagating.", GetErrorMessage(r));
368 Control::GetSize(void) const
370 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
371 const Dimension errorSize(errorBounds.width, errorBounds.height);
373 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
374 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
376 Dimension size = pControlImpl->GetSize();
377 result r = GetLastResult();
378 SysTryReturn(NID_UI, r == E_SUCCESS, errorSize, r, "[%s] Propagating.", GetErrorMessage(r));
384 Control::GetSize(int& w, int& h) const
386 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
387 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
389 Dimension size = pControlImpl->GetSize();
390 result r = GetLastResult();
391 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
398 Control::GetPosition(void) const
400 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
401 const Point errorPosition(errorBounds.x, errorBounds.y);
403 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
404 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
406 Point position = pControlImpl->GetPosition();
407 result r = GetLastResult();
408 SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
414 Control::GetPosition(int& x, int& y) const
416 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
417 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
419 Point position = pControlImpl->GetPosition();
420 result r = GetLastResult();
421 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
428 Control::GetX(void) const
430 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
431 const int errorX = errorBounds.x;
433 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
434 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
436 int x = pControlImpl->GetPosition().x;
437 result r = GetLastResult();
438 SysTryReturn(NID_UI, r == E_SUCCESS, errorX, r, "[%s] Propagating.", GetErrorMessage(r));
444 Control::GetY(void) const
446 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
447 const int errorY = errorBounds.y;
449 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
450 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
452 int y = pControlImpl->GetPosition().y;
453 result r = GetLastResult();
454 SysTryReturn(NID_UI, r == E_SUCCESS, errorY, r, "[%s] Propagating.", GetErrorMessage(r));
460 Control::GetWidth(void) const
462 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
463 const int errorWidth = errorBounds.width;
465 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
466 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
468 int width = pControlImpl->GetSize().width;
469 result r = GetLastResult();
470 SysTryReturn(NID_UI, r == E_SUCCESS, errorWidth, r, "[%s] Propagating.", GetErrorMessage(r));
476 Control::GetHeight(void) const
478 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
479 const int errorHeight = errorBounds.height;
481 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
482 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
484 int height = pControlImpl->GetSize().height;
485 result r = GetLastResult();
486 SysTryReturn(NID_UI, r == E_SUCCESS, errorHeight, r, "[%s] Propagating.", GetErrorMessage(r));
492 Control::GetParent(void) const
494 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
495 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
497 _ContainerImpl* pParentImpl = pControlImpl->GetParent();
498 result r = GetLastResult();
499 SysTryReturn(NID_UI, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
501 return pParentImpl ? &pParentImpl->GetPublic() : null;
505 Control::GetFont(void) const
507 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
508 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
510 return pControlImpl->GetFont();
514 Control::SetBounds(int x, int y, int w, int h)
516 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
517 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
519 result r = pControlImpl->SetBounds(Rectangle(x, y, w, h));
520 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
526 Control::SetBounds(const Rectangle& bounds)
528 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
529 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
531 result r = pControlImpl->SetBounds(bounds);
532 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
538 Control::SetSize(int w, int h)
540 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
541 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
543 result r = pControlImpl->SetSize(Dimension(w, h));
544 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
550 Control::SetSize(const Dimension& size)
552 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
553 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
555 result r = pControlImpl->SetSize(size);
556 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
562 Control::SetPosition(int x, int y)
564 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
565 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
567 result r = pControlImpl->SetPosition(Point(x, y));
568 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
574 Control::SetPosition(const Point& position)
576 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
577 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
579 result r = pControlImpl->SetPosition(position);
580 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
586 Control::SetFont(const String& fontName)
588 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
589 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
591 result r = pControlImpl->SetFont(fontName);
592 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
597 Control::IsEnabled(void) const
599 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
600 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
602 return pControlImpl->IsEnabled();
606 Control::IsVisible(void) const
608 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
609 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
611 return pControlImpl->IsVisible();
617 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
618 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
620 pControlImpl->SetFocused();
621 result r = GetLastResult();
622 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
628 Control::SetShowState(bool state)
630 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
631 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
633 result r = pControlImpl->SetVisibleState(state);
634 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
639 Tizen::Ui::Animations::VisualElement*
640 Control::GetVisualElement(void) const
642 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
643 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
645 return pControlImpl->GetVisualElement();
646 //return pControlImpl->GetCustomVisualElement();
650 Control::Contains(int x, int y) const
652 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
653 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
655 return pControlImpl->Contains(Point(x, y));
659 Control::Contains(const Point& point) const
661 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
662 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
664 return pControlImpl->Contains(point);
668 Control::HasFocus(void) const
670 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
671 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
673 return pControlImpl->IsFocused();
677 Control::GetShowState(void) const
679 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
680 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
682 return pControlImpl->GetVisibleState();
686 Control::GetName(void) const
688 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
689 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
691 return pControlImpl->GetName();
695 Control::SetName(const String& name)
697 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
698 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
700 pControlImpl->SetName(name);
704 Control::AddFocusEventListener(IFocusEventListener& listener)
706 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
707 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
709 result r = pControlImpl->AddFocusEventListener(listener);
710 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
714 Control::RemoveFocusEventListener(IFocusEventListener& listener)
716 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
717 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
719 result r = pControlImpl->RemoveFocusEventListener(listener);
720 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
724 Control::AddKeyEventListener(IKeyEventListener& listener)
726 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
727 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
729 result r = pControlImpl->AddKeyEventListener(listener);
730 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
734 Control::RemoveKeyEventListener(IKeyEventListener& listener)
736 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
737 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
739 result r = pControlImpl->RemoveKeyEventListener(listener);
740 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
744 Control::AddTouchEventListener(ITouchEventListener& listener)
746 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
747 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
749 result r = pControlImpl->AddTouchEventListener(listener);
750 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
754 Control::RemoveTouchEventListener(ITouchEventListener& listener)
756 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
757 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
759 result r = pControlImpl->RemoveTouchEventListener(listener);
760 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
764 Control::AddDragDropEventListener(IDragDropEventListener& listener)
766 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
767 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
769 result r = pControlImpl->AddDragDropEventListener(listener);
770 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
774 Control::RemoveDragDropEventListener(IDragDropEventListener& listener)
776 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
777 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
779 result r = pControlImpl->RemoveDragDropEventListener(listener);
780 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
784 Control::AddTouchModeChangedEventListener(ITouchModeChangedEventListener& listener)
786 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
787 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
789 result r = pControlImpl->AddTouchModeChangedEventListener(listener);
790 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
794 Control::RemoveTouchModeChangedEventListener(ITouchModeChangedEventListener& listener)
796 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
797 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
799 result r = pControlImpl->RemoveTouchModeChangedEventListener(listener);
800 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
804 Control::SetDragEnabled(bool enabled)
806 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
807 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
809 pControlImpl->SetDragEnabled(enabled);
813 Control::SetDropEnabled(bool enabled)
815 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
816 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
818 pControlImpl->SetDropEnabled(enabled);
822 Control::RequestRedraw(bool show) const
824 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
825 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
827 pControlImpl->RequestRedraw(show);
828 result r = GetLastResult();
829 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
833 Control::OnInitializing(void)
835 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
836 SysTryReturn(NID_UI, pControlImpl, E_FAILURE, E_FAILURE, "[E_FAILURE] This callback returns failure.");
842 Control::OnTerminating(void)
844 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
845 SysTryReturn(NID_UI, pControlImpl, E_FAILURE, E_FAILURE, "[E_FAILURE] This callback returns failure.");
851 Control::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
856 Control::SendUserEvent(RequestId requestId, const IList* pArgs) const
858 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
859 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
861 pControlImpl->SendUserEvent(requestId, pArgs);
862 result r = GetLastResult();
863 SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
867 Control::SetFocusable(bool focusable)
869 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
870 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
872 result r = pControlImpl->SetFocusable(focusable);
873 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
879 Control::IsFocusable(void) const
881 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
882 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
884 return pControlImpl->IsFocusable();
888 Control::IsInTouchMode(void) const
890 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
891 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
893 return pControlImpl->IsInTouchMode();
898 Control::SetCompositeMode(Tizen::Ui::CompositeMode compositeMode)
900 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
901 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
903 result r = pControlImpl->SetCompositeMode(compositeMode);
904 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
910 Control::GetCompositeMode(void) const
912 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
913 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
915 return pControlImpl->GetCompositeMode();
919 Control::SetChromaKeyColor(Color chromaKeyColor)
921 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
922 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
924 result r = pControlImpl->SetChromaKeyColor(chromaKeyColor);
925 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
931 Control::GetChromaKeyColor(void) const
933 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
934 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
936 return pControlImpl->GetChromaKeyColor();
940 Control::ConsumeInputEvent(void)
942 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
943 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
945 pControlImpl->ConsumeInputEvent();
946 result r = GetLastResult();
947 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
953 Control::GetDefaultkeyEventListener(void) const
955 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
956 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
958 return pControlImpl->GetDefaultKeyEventListener();
962 Control::SetDefaultKeyEventListener(IKeyEventListener* pDefaultListener)
964 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
965 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
967 pControlImpl->SetDefaultKeyEventListener(pDefaultListener);
968 result r = GetLastResult();
969 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
975 Control::GetDefaultTouchEventListener(void) const
977 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
978 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
980 return pControlImpl->GetDefaultTouchEventListener();
984 Control::SetDefaultTouchEventListener(ITouchEventListener* pDefaultListener)
986 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
987 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
989 pControlImpl->SetDefaultTouchEventListener(pDefaultListener);
990 result r = GetLastResult();
991 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
997 Control::IsMovable(void) const
999 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1000 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1002 return pControlImpl->IsMovable();
1006 Control::IsResizable(void) const
1008 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1009 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1011 return pControlImpl->IsResizable();
1015 Control::SetMinimumSize(const Dimension& minSize)
1017 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1018 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1020 result r = pControlImpl->SetMinimumSize(minSize);
1021 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1027 Control::SetMaximumSize(const Dimension& maxSize)
1029 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1030 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1032 result r = pControlImpl->SetMaximumSize(maxSize);
1033 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1039 Control::ConvertToControlPosition(const Point& screenPosition) const
1041 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
1042 const Point errorPosition(errorBounds.x, errorBounds.y);
1044 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1045 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1047 Point point = pControlImpl->ConvertToControlPosition(screenPosition);
1048 result r = GetLastResult();
1049 SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
1055 Control::ConvertToScreenPosition(const Point& controlPosition) const
1057 const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
1058 const Point errorPosition(errorBounds.x, errorBounds.y);
1060 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1061 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1063 Point point = pControlImpl->ConvertToScreenPosition(controlPosition);
1064 result r = GetLastResult();
1065 SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
1071 Control::GetMinimumSize(void) const
1073 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1074 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1076 return pControlImpl->GetMinimumSize();
1080 Control::GetMaximumSize(void) const
1082 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1083 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1085 return pControlImpl->GetMaximumSize();
1089 Control::GetControlAnimator(void) const
1091 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1092 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1094 return pControlImpl->GetControlAnimator();
1098 Control::AddGestureDetector(const TouchGestureDetector& gestureDetector)
1100 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1101 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1103 result r = pControlImpl->AddGestureDetector(gestureDetector);
1104 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1110 Control::RemoveGestureDetector(const TouchGestureDetector& gestureDetector)
1112 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1113 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1115 result r = pControlImpl->RemoveGestureDetector(gestureDetector);
1116 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1122 Control::GetCapturedBitmapN(void) const
1124 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1125 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1127 return pControlImpl->GetCapturedBitmapN();
1131 Control::GetInvalidatedBounds(void) const
1133 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1134 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1136 return pControlImpl->GetInvalidatedBounds();
1140 Control::SetMultipointTouchEnabled(bool enable)
1142 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1145 pControlImpl->SetMultiTouchEnabled(enable);
1150 Control::IsMultipointTouchEnabled(void) const
1152 const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1155 return pControlImpl->IsMultiTouchEnabled();
1161 const AccessibilityContainer*
1162 Control::GetAccessibilityContainer(void) const
1164 _ControlImpl* pControlImpl = const_cast<_ControlImpl*>(_ControlImpl::GetInstance(*this));
1165 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1167 return pControlImpl->GetAccessibilityContainer();
1169 AccessibilityContainer*
1170 Control::GetAccessibilityContainer(void)
1172 _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1173 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1175 return pControlImpl->GetAccessibilityContainer();