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.
17 #include <sys/utsname.h>
19 #include <FAppUiApp.h>
20 #include <FAppIAppFrame.h>
21 #include <FBaseRtTimer.h>
22 #include <FLclLocale.h>
23 #include <FUiAnimVisualElement.h>
24 #include <FUiCtrlFrame.h>
25 #include <FUiCtrlForm.h>
26 #include <FGrpCanvas.h>
27 #include <FGrpColor.h>
28 #include <FGrpFloatDimension.h>
29 #include <FGrpEnrichedText.h>
30 #include <FGrpBitmap.h>
31 #include <FBase_StringConverter.h>
32 #include <FGrp_BitmapImpl.h>
33 #include "FUi_AccessibilityGesture.h"
34 #include "FUi_AccessibilitySystemSettingLoader.h"
35 #include "FUi_AccessibilityTtsPlayer.h"
36 #include "FUi_AccessibilityManager.h"
37 #include "FUi_AccessibilityElement.h"
38 #include "FUi_AccessibilityContainer.h"
39 #include "FUi_IAccessibilityListener.h"
40 #include "FUi_ControlManager.h"
41 #include "FUi_TouchManager.h"
42 #include "FUi_UiEventManager.h"
43 #include "FUiAnim_VisualElementImpl.h"
44 #include "FUiCtrl_FrameImpl.h"
45 #include "FUiCtrl_ScrollPanel.h"
46 #include "FUiCtrl_IconListView.h"
47 #include "FUi_ResourceManager.h"
49 using namespace Tizen::App;
50 using namespace Tizen::Base;
51 using namespace Tizen::Base::Collection;
52 using namespace Tizen::Base::Runtime;
53 using namespace Tizen::Graphics;
54 using namespace Tizen::Ui::Animations;
55 using namespace Tizen::Ui::Controls;
60 : public ITimerEventListener
66 timer.Construct(*this);
68 virtual ~GuidePopupTimer(void) {}
69 void SetElement(VisualElement* pElement)
71 if (__pElement != null)
75 __pElement = pElement;
83 virtual void OnTimerExpired(Timer& timer)
87 __pElement->SetShowState(false);
91 VisualElement* __pElement;
95 class AutoReadingTimer
96 : public ITimerEventListener
99 AutoReadingTimer(Tizen::Ui::_AccessibilityManager* pManager)
100 : __pAccessibilityManager(pManager)
101 , __mode(Tizen::Ui::_ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM)
105 timer.Construct(*this);
107 virtual ~AutoReadingTimer(void) {}
108 void Start(Tizen::Ui::_AccessibilityAutoReadingMode mode)
110 SysLog(NID_UI, "AccessibilityManager::AutoReadingTimer is requested mode : %d", mode);
116 SysLog(NID_UI, "AccessibilityManager::AutoReadingTimer is started mode : %d", mode);
125 virtual void OnTimerExpired(Timer& timer)
127 SysLog(NID_UI, "mode %d", __mode);
128 if (__pAccessibilityManager->GetTtsStatus() != Tizen::Ui::ACCESSIBILITY_SCREEN_READER_STATUS_READY
129 && __pAccessibilityManager->GetTtsStatus() != Tizen::Ui::ACCESSIBILITY_SCREEN_READER_STATUS_PLAYING)
133 SysLog(NID_UI, "AccessibilityManager::AutoReadingTimer is started again because tts is not initialized.");
137 __pAccessibilityManager->ReadElement(__mode);
139 Tizen::Ui::_AccessibilityManager* __pAccessibilityManager;
141 Tizen::Ui::_AccessibilityAutoReadingMode __mode;
145 GuidePopupTimer* pGuidePopupTimer;
146 AutoReadingTimer* pAutoReadingTimer;
148 namespace Tizen { namespace Ui {
151 class _AccessibilityItemComparer
152 : public Tizen::Base::Collection::IComparerT <T>
155 _AccessibilityItemComparer(void)
158 virtual ~_AccessibilityItemComparer(void)
161 virtual result Compare(const T& obj1, const T& obj2, int& cmp) const
163 Tizen::Graphics::Rectangle rect1= obj1->GetAbsoluteBounds();
164 Tizen::Graphics::Rectangle rect2= obj2->GetAbsoluteBounds();
166 if (rect1.y > rect2.y)
171 else if (rect1.y < rect2.y)
178 if (rect1.x > rect2.x)
183 else if (rect1.x < rect2.x)
195 }; //class _AccessibilityComparer
198 class _ElementComparer
199 : public Tizen::Base::Collection::IComparerT <T>
202 _ElementComparer(void)
205 virtual ~_ElementComparer(void)
208 virtual result Compare(const T& obj1, const T& obj2, int& cmp) const
210 if (obj1->GetParent()->GetPriority() > obj2->GetParent()->GetPriority())
215 else if (obj1->GetParent()->GetPriority() < obj2->GetParent()->GetPriority())
222 Tizen::Graphics::FloatRectangle rect1= obj1->GetAbsoluteBounds();
223 Tizen::Graphics::FloatRectangle rect2= obj2->GetAbsoluteBounds();
225 if (rect1.y > rect2.y)
230 else if (rect1.y < rect2.y)
237 if (rect1.x > rect2.x)
242 else if (rect1.x < rect2.x)
257 static _AccessibilityManager* pAccManager = null;
258 bool _AccessibilityManager::__screenReaderIsEnabled = false;
259 _AccessibilityManager::_AccessibilityManager(void)
260 : __pAccGesture(null)
262 , __pSettingLoader(null)
263 , __pTargetContainer(null)
264 , __pTargetElement(null)
265 , __pTitleElement(null)
271 , __pPanningControl(null)
275 _AccessibilityManager::~_AccessibilityManager(void)
277 delete __pAccGesture;
278 __pAccGesture = null;
281 delete __pSettingLoader;
282 __pSettingLoader = null;
283 delete pGuidePopupTimer;
284 pGuidePopupTimer = null;
285 delete pAutoReadingTimer;
286 pAutoReadingTimer = null;
289 _AccessibilityManager*
290 _AccessibilityManager::GetInstance(void)
296 _AccessibilityManager::CreateInstance(void)
298 static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;
300 if (pAccManager == null)
302 pthread_once(&onceBlock, InitializeInstance);
307 _AccessibilityManager::InitializeInstance(void)
309 pAccManager = new (std::nothrow) _AccessibilityManager;
312 _AccessibilityManager::ReleaseInstance(void)
318 _AccessibilityManager::Initialize(void)
320 __pAccGesture = new (std::nothrow) _AccessibilityGesture(*this);
321 SysTryReturn(NID_UI, __pAccGesture, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
322 __pTtsPlayer = new (std::nothrow) _AccessibilityTtsPlayer(*this);
323 SysTryCatch(NID_UI, __pTtsPlayer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
324 __pTtsPlayer->Construct();
325 __pSettingLoader = new (std::nothrow) _AccessibilitySystemSettingLoader(*this);
326 SysTryCatch(NID_UI, __pSettingLoader, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
328 if (IsScreenReaderActivated())
330 __pTtsPlayer->SetLocale(__pSettingLoader->GetLocale());
331 __pTtsPlayer->Activate();
333 pGuidePopupTimer = new (std::nothrow) GuidePopupTimer;
334 SysTryCatch(NID_UI, pGuidePopupTimer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
335 pAutoReadingTimer = new (std::nothrow) AutoReadingTimer(this);
336 SysTryCatch(NID_UI, pAutoReadingTimer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
340 delete __pAccGesture;
341 __pAccGesture = null;
344 delete __pSettingLoader;
345 __pSettingLoader = null;
346 delete pGuidePopupTimer;
347 pGuidePopupTimer = null;
348 delete pAutoReadingTimer;
349 pAutoReadingTimer = null;
351 AccessibilityScreenReaderStatus
352 _AccessibilityManager::GetTtsStatus(void)
356 return __pTtsPlayer->GetStatus();
358 return ACCESSIBILITY_SCREEN_READER_STATUS_ERROR;
361 _AccessibilityManager::ReadContent(const Tizen::Base::String& content)
366 __pTtsPlayer->ReadGrammar(content);
371 _AccessibilityManager::ReadElement(_AccessibilityAutoReadingMode mode)
374 int count = __candidateList.GetCount();
379 _AccessibilityElement* pElement = null;
382 if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM)
384 r = __candidateList.GetAt(0, pElement);
386 else if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM_OF_CONTENTS)
388 for (int i = 0 ; i < count ; i++)
390 r = __candidateList.GetAt(i, pElement);
391 if (r == E_SUCCESS && pElement)
393 if (pElement->GetParent()->GetPriority() < ACCESSIBILITY_PRIORITY_TOP)
400 else //_ACCESSIBILITY_AUTO_READING_MODE_CURRENT_FOCUS
402 if (IsContainerValid(__pTargetContainer))
404 pElement = __pTargetElement;
408 if (r != E_SUCCESS || pElement == null)
410 SysLog(NID_UI, "cause 1");
413 if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM && __pTitleElement == pElement && !(__pTitleElement->IsUpdated()))
415 SysLog(NID_UI, "cause 2");
418 __pTitleElement = pElement;
419 pElement->GetParent()->SetCurrentFocusedElement(pElement);
420 DrawFocusUi(*pElement);
421 __pTargetContainer = pElement->GetParent();
422 __pTargetElement = pElement;
423 __targetControlHandle = __pTargetContainer->GetOwner().GetHandle();
424 ReadElement(*pElement);
428 _AccessibilityManager::ReadElement(const _AccessibilityElement& element)
432 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
435 for (int i = 0;i<pList->GetCount();i++)
437 _IAccessibilityListener* pListener = null;
438 if (pList->GetAt(i, pListener) == E_SUCCESS)
440 pListener->OnAccessibilityReadingElement(*__pTargetContainer, element);
447 __pTtsPlayer->ReadGrammar(element.GetReadingContents());
452 _AccessibilityManager::ReadingStop(void)
457 _AccessibilityManager::ReadingPause(void)
462 _AccessibilityManager::ReadingResume(void)
468 _AccessibilityManager::OnStartReading(const Tizen::Base::String& grammar)
472 _AccessibilityManager::HidePopup(void)
476 __pReadingVe->Destroy();
479 pGuidePopupTimer->Stop();
482 _AccessibilityManager::ShowPopup(const String& content)
484 if (content.IsEmpty())
490 if (String("i686_emulated") != sysInfo.machine)
494 Canvas* pCanvas = null;
495 Bitmap* pBgBitmap = null;
496 EnrichedText* pEnrichedTitleText = null;
497 EnrichedText* pText = null;
498 Frame* pFrame = null;
500 if (__pReadingVe == null)
502 pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
506 int accesibilityVisualElementLevel = 3000;
507 result r = E_SUCCESS;
508 VisualElement* pRootVe = _ControlManager::GetInstance()->GetTopVisibleWindow()->GetVisualElement();
510 __pReadingVe = new (std::nothrow) VisualElement();
511 SysTryCatch(NID_UI, __pReadingVe, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
513 r = __pReadingVe->Construct();
514 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
515 __pReadingVe->SetName("Accessibility reading popup");
516 _VisualElementImpl::GetInstance(*__pReadingVe)->SetZOrderGroup(accesibilityVisualElementLevel);
517 pRootVe->AttachChild(*__pReadingVe);
522 result r = E_SUCCESS;
524 float titleFontSize = 0;
525 float textFontSize = 0;
526 float popupWidth = 0;
528 float bottomMargin = 0;
529 float sideMargin = 0;
530 float titleHeight = 0;
531 float textTopMargin = 0;
532 float textHeight = 0;
534 Color titleTextColor;
535 Color pointTextColor;
537 TextElement* pElement = null;
539 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, titleFontSize);
540 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
541 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, textFontSize);
542 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
543 r = GET_SHAPE_CONFIG(ACCESSIBILITY::POPUP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, popupWidth);
544 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
545 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, topMargin);
546 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
547 r = GET_SHAPE_CONFIG(ACCESSIBILITY::BOTTON_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, bottomMargin);
548 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
549 r = GET_SHAPE_CONFIG(ACCESSIBILITY::SIDE_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, sideMargin);
550 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
551 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, titleHeight);
552 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
553 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, textTopMargin);
554 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
555 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_HEGIHT, _CONTROL_ORIENTATION_PORTRAIT, textHeight);
556 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
557 r = GET_COLOR_CONFIG(ACCESSIBILITY::TITLE_TEXT, titleTextColor);
558 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
559 r = GET_COLOR_CONFIG(ACCESSIBILITY::POINT_TEXT, pointTextColor);
560 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
561 r = GET_COLOR_CONFIG(ACCESSIBILITY::TEXT, textColor);
562 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
563 r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::POPUP_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pBgBitmap);
564 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
567 r = titleFont.Construct(FONT_STYLE_PLAIN, titleFontSize);
568 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
570 r = textFont.Construct(FONT_STYLE_PLAIN, textFontSize);
571 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
573 pEnrichedTitleText = new (std::nothrow) EnrichedText;
574 SysTryCatch(NID_UI, pEnrichedTitleText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
575 pEnrichedTitleText->Construct(FloatDimension(popupWidth-sideMargin*2, titleHeight));
577 pText = new (std::nothrow) EnrichedText;
578 SysTryCatch(NID_UI, pText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
579 pText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
581 pElement = new (std::nothrow) TextElement;
582 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
583 r = pElement->Construct(L"Screen reading...");
589 pElement->SetTextColor(titleTextColor);
590 pElement->SetFont(titleFont);
591 r = pEnrichedTitleText->Add(*pElement);
592 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
593 pEnrichedTitleText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
594 pEnrichedTitleText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
595 pEnrichedTitleText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
596 pEnrichedTitleText->SetTextAbbreviationEnabled(true);
598 pElement = new (std::nothrow) TextElement;
599 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
600 r = pElement->Construct(content);
606 pElement->SetTextColor(textColor);
607 pElement->SetFont(textFont);
608 r = pText->Add(*pElement);
609 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
610 pText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
611 pText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
612 pText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
613 pText->SetTextAbbreviationEnabled(true);
617 float popupHeight = topMargin + bottomMargin + titleHeight + textTopMargin + textHeight;
619 FloatDimension screen = Tizen::Ui::_ControlManager::GetInstance()->GetScreenSizeF();
620 __pReadingVe->SetBounds(FloatRectangle(x, y, popupWidth, popupHeight));
621 pCanvas = __pReadingVe->GetCanvasN();
622 SysTryCatch(NID_UI, pCanvas != null, , E_SYSTEM, "System error for accessibility popup");
623 pCanvas->DrawNinePatchedBitmap(FloatRectangle(0, 0, popupWidth, popupHeight), *pBgBitmap);
624 float drawingTextY = topMargin;
625 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedTitleText);
626 drawingTextY += textTopMargin + titleHeight;
627 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pText);
628 __pReadingVe->SetShowState(true);
629 __pReadingVe->SetFlushNeeded();
630 pGuidePopupTimer->SetElement(__pReadingVe);
638 if (pEnrichedTitleText)
640 pEnrichedTitleText->RemoveAll(true);
641 delete pEnrichedTitleText;
645 pText->RemoveAll(true);
653 _AccessibilityManager::ShowPopup()
655 if (__pTargetElement == null)
661 Frame* pFrame = null;
662 Canvas* pCanvas = null;
663 Bitmap* pBgBitmap = null;
664 EnrichedText* pEnrichedTitleText = null;
665 EnrichedText* pEnrichedNameText = null;
666 EnrichedText* pEnrichedLableText = null;
667 EnrichedText* pEnrichedTraitText = null;
668 EnrichedText* pEnrichedStatusText = null;
669 EnrichedText* pEnrichedHintText = null;
670 EnrichedText* pEnrichedValueText = null;
671 EnrichedText* pEnrichedBoundsText = null;
672 EnrichedText* pEnrichedAbsBoundsText = null;
673 TextElement* pElement = null;
674 FloatDimension screen;
676 if (String("i686_emulated") != sysInfo.machine)
681 if (__pReadingVe == null)
683 pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
687 int accesibilityVisualElementLevel = 3000;
688 result r = E_SUCCESS;
689 VisualElement* pRootVe = _ControlManager::GetInstance()->GetTopVisibleWindow()->GetVisualElement();
691 __pReadingVe = new (std::nothrow) VisualElement();
692 SysTryCatch(NID_UI, __pReadingVe, , E_SYSTEM, "[E_SYSTEM] System error");
694 r = __pReadingVe->Construct();
695 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
696 __pReadingVe->SetName("Accessibility reading popup");
697 _VisualElementImpl::GetInstance(*__pReadingVe)->SetZOrderGroup(accesibilityVisualElementLevel);
698 pRootVe->AttachChild(*__pReadingVe);
702 screen = _ControlManager::GetInstance()->GetScreenSizeF();
705 result r = E_SUCCESS;
707 float titleFontSize = 0;
708 float textFontSize = 0;
709 float popupWidth = 0;
711 float bottomMargin = 0;
712 float sideMargin = 0;
713 float titleHeight = 0;
714 float textTopMargin = 0;
715 float textHeight = 0;
717 Color titleTextColor;
718 Color pointTextColor;
721 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, titleFontSize);
722 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
723 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, textFontSize);
724 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
725 r = GET_SHAPE_CONFIG(ACCESSIBILITY::POPUP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, popupWidth);
726 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
727 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, topMargin);
728 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
729 r = GET_SHAPE_CONFIG(ACCESSIBILITY::BOTTON_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, bottomMargin);
730 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
731 r = GET_SHAPE_CONFIG(ACCESSIBILITY::SIDE_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, sideMargin);
732 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
733 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, titleHeight);
734 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
735 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, textTopMargin);
736 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
737 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_HEGIHT, _CONTROL_ORIENTATION_PORTRAIT, textHeight);
738 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
739 r = GET_COLOR_CONFIG(ACCESSIBILITY::TITLE_TEXT, titleTextColor);
740 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
741 r = GET_COLOR_CONFIG(ACCESSIBILITY::POINT_TEXT, pointTextColor);
742 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
743 r = GET_COLOR_CONFIG(ACCESSIBILITY::TEXT, textColor);
744 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
745 r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::POPUP_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pBgBitmap);
746 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
749 r = titleFont.Construct(FONT_STYLE_PLAIN, titleFontSize);
750 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
753 r = textFont.Construct(FONT_STYLE_PLAIN, textFontSize);
754 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
756 pEnrichedTitleText = new (std::nothrow) EnrichedText;
757 SysTryCatch(NID_UI, pEnrichedTitleText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
758 pEnrichedTitleText->Construct(FloatDimension(popupWidth-sideMargin*2, titleHeight));
760 pEnrichedNameText = new (std::nothrow) EnrichedText;
761 SysTryCatch(NID_UI, pEnrichedNameText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
762 pEnrichedNameText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
764 pEnrichedLableText = new (std::nothrow) EnrichedText;
765 SysTryCatch(NID_UI, pEnrichedLableText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
766 pEnrichedLableText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
768 pEnrichedTraitText = new (std::nothrow) EnrichedText;
769 SysTryCatch(NID_UI, pEnrichedTraitText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
770 pEnrichedTraitText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
772 pEnrichedStatusText = new (std::nothrow) EnrichedText;
773 SysTryCatch(NID_UI, pEnrichedStatusText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
774 pEnrichedStatusText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
776 pEnrichedHintText = new (std::nothrow) EnrichedText;
777 SysTryCatch(NID_UI, pEnrichedHintText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
778 pEnrichedHintText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
780 pEnrichedValueText = new (std::nothrow) EnrichedText;
781 SysTryCatch(NID_UI, pEnrichedValueText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
782 pEnrichedValueText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
784 pEnrichedBoundsText = new (std::nothrow) EnrichedText;
785 SysTryCatch(NID_UI, pEnrichedBoundsText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
786 pEnrichedBoundsText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
788 pEnrichedAbsBoundsText = new (std::nothrow) EnrichedText;
789 SysTryCatch(NID_UI, pEnrichedAbsBoundsText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
790 pEnrichedAbsBoundsText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
792 pElement = new (std::nothrow) TextElement;
793 r = pElement->Construct(L"Screen reading...");
794 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
795 pElement->SetTextColor(titleTextColor);
796 pElement->SetFont(titleFont);
797 r = pEnrichedTitleText->Add(*pElement);
799 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
800 pEnrichedTitleText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
801 pEnrichedTitleText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
802 pEnrichedTitleText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
803 pEnrichedTitleText->SetTextAbbreviationEnabled(true);
805 pElement = new (std::nothrow) TextElement;
806 r = pElement->Construct(L"Name: ");
807 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
809 pElement->SetTextColor(pointTextColor);
810 pElement->SetFont(textFont);
811 r = pEnrichedNameText->Add(*pElement);
812 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
814 if (!(__pTargetElement->GetName().IsEmpty()))
816 pElement = new (std::nothrow) TextElement;
817 r = pElement->Construct(__pTargetElement->GetName());
818 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
820 pElement->SetTextColor(textColor);
821 pElement->SetFont(textFont);
822 r = pEnrichedNameText->Add(*pElement);
823 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
824 SysLog(NID_UI, " Name :::::: %s", _StringConverter::CopyToCharArrayN(__pTargetElement->GetName()));
826 pEnrichedNameText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
827 pEnrichedNameText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
828 pEnrichedNameText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
829 pEnrichedNameText->SetTextAbbreviationEnabled(true);
831 pElement = new (std::nothrow) TextElement;
832 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
833 r = pElement->Construct(L"Label: ");
834 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
836 pElement->SetTextColor(pointTextColor);
837 pElement->SetFont(textFont);
838 r = pEnrichedLableText->Add(*pElement);
839 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
841 if (!(__pTargetElement->GetLabel().IsEmpty()))
843 pElement = new (std::nothrow) TextElement;
844 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
845 r = pElement->Construct(__pTargetElement->GetLabel());
846 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
848 pElement->SetTextColor(textColor);
849 pElement->SetFont(textFont);
850 r = pEnrichedLableText->Add(*pElement);
851 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
852 SysLog(NID_UI, " Label :::::: %s", _StringConverter::CopyToCharArrayN(__pTargetElement->GetLabel()));
854 pEnrichedLableText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
855 pEnrichedLableText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
856 pEnrichedLableText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
857 pEnrichedLableText->SetTextAbbreviationEnabled(true);
859 pElement = new (std::nothrow) TextElement;
860 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
861 r = pElement->Construct(L"Trait: ");
862 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
864 pElement->SetTextColor(pointTextColor);
865 pElement->SetFont(textFont);
866 r = pEnrichedTraitText->Add(*pElement);
867 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
868 if (!(__pTargetElement->GetTraitString().IsEmpty()))
870 pElement = new (std::nothrow) TextElement;
871 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
872 r = pElement->Construct(__pTargetElement->GetTraitString());
873 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
875 pElement->SetTextColor(textColor);
876 pElement->SetFont(textFont);
877 r = pEnrichedTraitText->Add(*pElement);
878 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
880 pEnrichedTraitText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
881 pEnrichedTraitText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
882 pEnrichedTraitText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
883 pEnrichedTraitText->SetTextAbbreviationEnabled(true);
885 pElement = new (std::nothrow) TextElement;
886 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
887 r = pElement->Construct(L"Status: ");
888 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
890 pElement->SetTextColor(pointTextColor);
891 pElement->SetFont(textFont);
892 r = pEnrichedStatusText->Add(*pElement);
893 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
894 if (!(__pTargetElement->GetStatus().IsEmpty()))
896 pElement = new (std::nothrow) TextElement;
897 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
898 r = pElement->Construct(__pTargetElement->GetStatus());
899 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
901 pElement->SetTextColor(textColor);
902 pElement->SetFont(textFont);
903 r = pEnrichedStatusText->Add(*pElement);
904 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
906 pEnrichedStatusText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
907 pEnrichedStatusText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
908 pEnrichedStatusText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
909 pEnrichedStatusText->SetTextAbbreviationEnabled(true);
911 pElement = new (std::nothrow) TextElement;
912 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
913 r = pElement->Construct(L"Hint: ");
914 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
916 pElement->SetTextColor(pointTextColor);
917 pElement->SetFont(textFont);
918 r = pEnrichedHintText->Add(*pElement);
919 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
920 if (!(__pTargetElement->GetHint().IsEmpty()))
922 pElement = new (std::nothrow) TextElement;
923 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
924 r = pElement->Construct(__pTargetElement->GetHint());
925 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
927 pElement->SetTextColor(textColor);
928 pElement->SetFont(textFont);
929 r = pEnrichedHintText->Add(*pElement);
930 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
932 pEnrichedHintText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
933 pEnrichedHintText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
934 pEnrichedHintText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
935 pEnrichedHintText->SetTextAbbreviationEnabled(true);
937 pElement = new (std::nothrow) TextElement;
938 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
939 r = pElement->Construct(L"Value: ");
940 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
942 pElement->SetTextColor(pointTextColor);
943 pElement->SetFont(textFont);
944 r = pEnrichedValueText->Add(*pElement);
945 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
946 if (!(__pTargetElement->GetValue().IsEmpty()))
948 pElement = new (std::nothrow) TextElement;
949 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
950 r = pElement->Construct(__pTargetElement->GetValue());
951 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
953 pElement->SetTextColor(textColor);
954 pElement->SetFont(textFont);
955 r = pEnrichedValueText->Add(*pElement);
956 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
958 pEnrichedValueText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
959 pEnrichedValueText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
960 pEnrichedValueText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
961 pEnrichedValueText->SetTextAbbreviationEnabled(true);
963 pElement = new (std::nothrow) TextElement;
964 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
965 r = pElement->Construct(L"Bound: ");
966 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
968 pElement->SetTextColor(pointTextColor);
969 pElement->SetFont(textFont);
970 r = pEnrichedBoundsText->Add(*pElement);
971 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
973 pElement = new (std::nothrow) TextElement;
974 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
975 FloatRectangle rect = __pTargetElement->GetBounds();
977 rectString.Format(40, L"x:%f, y:%f, w:%f, h:%f", rect.x, rect.y, rect.width, rect.height);
978 r = pElement->Construct(rectString);
979 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
981 pElement->SetTextColor(textColor);
982 pElement->SetFont(textFont);
983 r = pEnrichedBoundsText->Add(*pElement);
984 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
985 pEnrichedBoundsText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
986 pEnrichedBoundsText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
987 pEnrichedBoundsText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
988 pEnrichedBoundsText->SetTextAbbreviationEnabled(true);
990 pElement = new (std::nothrow) TextElement;
991 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
992 r = pElement->Construct(L"AbsBound: ");
993 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
995 pElement->SetTextColor(pointTextColor);
996 pElement->SetFont(textFont);
997 r = pEnrichedAbsBoundsText->Add(*pElement);
998 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1000 pElement = new (std::nothrow) TextElement;
1001 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
1002 rect = __pTargetElement->GetAbsoluteBounds();
1004 rectString.Format(40, L"x:%f, y:%f, w:%f, h:%f", rect.x, rect.y, rect.width, rect.height);
1005 r = pElement->Construct(rectString);
1006 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1008 pElement->SetTextColor(textColor);
1009 pElement->SetFont(textFont);
1010 r = pEnrichedAbsBoundsText->Add(*pElement);
1011 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1012 pEnrichedAbsBoundsText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
1013 pEnrichedAbsBoundsText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
1014 pEnrichedAbsBoundsText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
1015 pEnrichedAbsBoundsText->SetTextAbbreviationEnabled(true);
1019 float popupHeight = topMargin + bottomMargin + titleHeight + textTopMargin + textHeight * 8;
1020 Frame* pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
1021 Form* pForm = pFrame->GetCurrentForm();
1022 FloatDimension screen = Tizen::Ui::_ControlManager::GetInstance()->GetScreenSizeF();
1024 if (pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT
1025 || pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE)
1027 x = (screen.width-popupWidth) / 2;
1028 if (rect.y < screen.height/2)
1030 y = (screen.height/2 - popupHeight) /2 + screen.height/2;
1034 y = (screen.height/2 - popupHeight) /2;
1039 y = (screen.width-popupHeight) / 2;
1040 if (rect.x < screen.height/2)
1042 x = (screen.height/2 - popupWidth) /2 + screen.height/2;
1046 x = (screen.height/2 - popupWidth) /2;
1050 __pReadingVe->SetBounds(FloatRectangle(x, y, popupWidth, popupHeight));
1051 pCanvas = __pReadingVe->GetCanvasN();
1052 SysTryCatch(NID_UI, pCanvas != null, , E_SYSTEM, "System error for accessibility popup");
1053 pCanvas->DrawNinePatchedBitmap(FloatRectangle(0, 0, popupWidth, popupHeight), *pBgBitmap);
1054 float drawingTextY = topMargin;
1055 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedTitleText);
1056 drawingTextY += textTopMargin + titleHeight;
1057 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedNameText);
1058 drawingTextY += textHeight;
1059 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedLableText);
1060 drawingTextY += textHeight;
1061 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedTraitText);
1062 drawingTextY += textHeight;
1063 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedStatusText);
1064 drawingTextY += textHeight;
1065 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedHintText);
1066 drawingTextY += textHeight;
1067 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedValueText);
1068 drawingTextY += textHeight;
1069 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedBoundsText);
1070 drawingTextY += textHeight;
1071 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedAbsBoundsText);
1072 __pReadingVe->SetShowState(true);
1073 __pReadingVe->SetFlushNeeded();
1074 pGuidePopupTimer->SetElement(__pReadingVe);
1083 if (pEnrichedTitleText)
1085 pEnrichedTitleText->RemoveAll(true);
1086 delete pEnrichedTitleText;
1088 if (pEnrichedNameText)
1090 pEnrichedNameText->RemoveAll(true);
1091 delete pEnrichedNameText;
1093 if (pEnrichedLableText)
1095 pEnrichedLableText->RemoveAll(true);
1096 delete pEnrichedLableText;
1098 if (pEnrichedTraitText)
1100 pEnrichedTraitText->RemoveAll(true);
1101 delete pEnrichedTraitText;
1103 if (pEnrichedStatusText)
1105 pEnrichedStatusText->RemoveAll(true);
1106 delete pEnrichedStatusText;
1108 if (pEnrichedHintText)
1110 pEnrichedHintText->RemoveAll(true);
1111 delete pEnrichedHintText;
1113 if (pEnrichedValueText)
1115 pEnrichedValueText->RemoveAll(true);
1116 delete pEnrichedValueText;
1118 if (pEnrichedBoundsText)
1120 pEnrichedBoundsText->RemoveAll(true);
1121 delete pEnrichedBoundsText;
1123 if (pEnrichedAbsBoundsText)
1125 pEnrichedAbsBoundsText->RemoveAll(true);
1126 delete pEnrichedAbsBoundsText;
1133 _AccessibilityManager::OnFinishReading(const Tizen::Base::String& grammar)
1137 __pReadingVe->SetShowState(false);
1139 if (!IsContainerValid(__pTargetContainer))
1143 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
1146 for (int i = 0;i<pList->GetCount();i++)
1148 _IAccessibilityListener* pListener = null;
1149 if (pList->GetAt(i, pListener) == E_SUCCESS)
1151 if (__pTargetElement)
1153 pListener->OnAccessibilityReadedElement(*__pTargetContainer, *__pTargetElement);
1164 _AccessibilityManager::GetCurrentGrammar(void)
1169 _AccessibilityManager::AddContainer(const _AccessibilityContainer& container)
1171 __containerList.Add(&const_cast<_AccessibilityContainer&>(container));
1172 SetGestureMode(MODE_TAP);
1176 _AccessibilityManager::RemoveContainer(const _AccessibilityContainer& container)
1178 __containerList.Remove(&const_cast<_AccessibilityContainer&>(container));
1179 SetGestureMode(MODE_TAP);
1180 if (__pTargetContainer == &container)
1182 __pTargetContainer = null;
1183 __pTargetElement = null;
1189 _AccessibilityManager::MakeList(void)
1193 DownVisitor(_Control& control, LinkedListT<_Control*>& list)
1195 LinkedListT<_Control*> _list;
1196 int count = control.GetChildCount();
1197 _Control* pControl = null;
1198 for (int i = 0; i < count ; i++)
1200 pControl = control.GetChild(i);
1203 _list.Add(pControl);
1206 _AccessibilityItemComparer<_Control*> comparer;
1207 _list.Sort(comparer);
1209 list.IndexOf(&control, index);
1210 list.InsertItemsFrom(_list,index+1);
1211 for (int i = 0; i < count ; i++)
1213 pControl = control.GetChild(i);
1214 DownVisitor(*pControl, list);
1218 if (GetGestureMode() == MODE_FOCUS_MOVE)
1222 result r = E_SUCCESS;
1224 _Control* pControl = null;
1225 _AccessibilityContainer* pContainer = null;
1226 _TouchManager* pTouchManager = _TouchManager::GetInstance();
1227 LinkedListT<_Control*> controlList;
1228 LinkedListT<_AccessibilityElement*> elementPositionList;
1229 LinkedListT<_AccessibilityElement*> elementPositionByControlList;
1230 __candidateList.RemoveAll();
1234 pControl = pTouchManager->GetCapturedControl();
1237 controlList.Add(pControl);
1241 if (pControl == null)
1243 pControl = static_cast<_Control*>(_ControlManager::GetInstance()->GetWindow(_ControlManager::GetInstance()->GetWindowCount() - 1));
1244 controlList.Add(pControl);
1246 DownVisitor(*pControl, controlList);
1247 _AccessibilityItemComparer<_Control*> controlComparer;
1248 //controlList.Sort(controlComparer);
1249 for (int i = 0; i < controlList.GetCount() ; i++)
1251 if (controlList.GetAt(i, pControl) == E_SUCCESS)
1253 pContainer = pControl->GetAccessibilityContainer();
1254 if (pContainer == null)
1258 if (IsContainerValid(pContainer))
1260 pContainer->SortElements();
1261 pContainer->GetElements(elementPositionList);
1262 pContainer->GetElements(elementPositionByControlList);
1267 _ElementComparer<_AccessibilityElement*> comparer;
1268 elementPositionList.Sort(comparer);
1269 count = elementPositionList.GetCount();
1271 _AccessibilityElement* pPositionListElement = null;
1272 _AccessibilityElement* pPositionByControlListElement = null;
1273 while (!done && index < count && index < count)
1276 r = elementPositionList.GetAt(index, pPositionListElement);
1283 r = elementPositionByControlList.GetAt(index, pPositionByControlListElement);
1290 if (pPositionListElement == pPositionByControlListElement)
1292 __candidateList.Add(pPositionByControlListElement);
1297 if (pPositionListElement->GetParent()->GetPriority() > pPositionByControlListElement->GetParent()->GetPriority())
1299 elementPositionByControlList.Remove(pPositionListElement);
1300 elementPositionByControlList.InsertAt(pPositionListElement, index);
1301 __candidateList.Add(pPositionListElement);
1305 else if (pPositionListElement->GetParent()->GetPriority() < pPositionByControlListElement->GetParent()->GetPriority())
1307 elementPositionList.Remove(pPositionByControlListElement);
1308 elementPositionList.InsertAt(pPositionByControlListElement, index);
1309 __candidateList.Add(pPositionByControlListElement);
1314 if (pPositionListElement->GetAbsoluteBounds().y > pPositionByControlListElement->GetAbsoluteBounds().y)
1316 elementPositionList.Remove(pPositionByControlListElement);
1317 elementPositionList.InsertAt(pPositionByControlListElement, index);
1318 __candidateList.Add(pPositionByControlListElement);
1322 else if (pPositionListElement->GetAbsoluteBounds().y < pPositionByControlListElement->GetAbsoluteBounds().y)
1324 pControl = &(pPositionByControlListElement->GetParent()->GetOwner());
1327 rect = pControl->GetAbsoluteBounds();
1334 if(pControl->GetParent())
1336 pControl = pControl->GetParent();
1346 controlList.RemoveAll();
1347 controlList.Add(pControl);
1348 DownVisitor(*pControl, controlList);
1349 int _count = controlList.GetCount();
1350 LinkedListT<_AccessibilityElement*> _elementPositionList;
1351 for (int i = 0; i < _count ; i++)
1353 if (controlList.GetAt(i, pControl) == E_SUCCESS)
1355 pContainer = pControl->GetAccessibilityContainer();
1356 if (pContainer == null)
1360 if (IsContainerValid(pContainer))
1362 pContainer->GetElements(_elementPositionList);
1366 _elementPositionList.Sort(comparer);
1367 _count = _elementPositionList.GetCount();
1368 _AccessibilityElement* pElement = null;
1369 for (int i = 0 ; i < _count ; i++)
1371 r = _elementPositionList.GetAt(i, pElement);
1376 if (__candidateList.Contains(pElement))
1380 __candidateList.Add(pElement);
1381 elementPositionByControlList.Remove(pElement);
1382 elementPositionByControlList.InsertAt(pElement, index);
1383 elementPositionList.Remove(pElement);
1384 elementPositionList.InsertAt(pElement, index);
1391 elementPositionList.Remove(pPositionByControlListElement);
1392 elementPositionList.InsertAt(pPositionByControlListElement, index);
1393 __candidateList.Add(pPositionByControlListElement);
1399 count = __candidateList.GetCount();
1400 SysLog(NID_UI, "Accessibility element candidate count : %d", count);
1406 _AccessibilityElement* pElement = null;
1407 int fastScrollIndex = -1;
1408 int listItemStartIndex = -1;
1409 int listItemEndIndex = -1;
1410 for (int i = 0 ; i < count ; i++)
1412 r = __candidateList.GetAt(i, pElement);
1417 if (pElement->GetName() == "HeaderTitleText")
1419 __candidateList.Remove(pElement);
1420 __candidateList.InsertAt(pElement, 0);
1422 if (pElement->GetName() == L"ListViewItemText" ||pElement->GetName() == L"TableViewItem")
1424 listItemEndIndex = i;
1426 if (listItemStartIndex == -1 && (pElement->GetName() == L"ListViewItemText" ||pElement->GetName() == L"TableViewItem"))
1428 listItemStartIndex = i;
1430 if (fastScrollIndex == -1 && pElement->GetName() == L"FastScroll")
1432 fastScrollIndex = i;
1436 if (listItemStartIndex != -1 && fastScrollIndex != -1)
1438 if (fastScrollIndex > listItemStartIndex)
1440 result r = __candidateList.GetAt(fastScrollIndex, pElement);
1443 __candidateList.Remove(pElement);
1444 __candidateList.InsertAt(pElement, listItemStartIndex);
1452 _AccessibilityManager::MakeList(_AccessibilityContainer* pContainer)
1454 if (pContainer->GetOwner().IsVisible() && pContainer->IsActivated())
1456 pContainer->GetElements(__candidateList);
1458 _Control* pControl = &(pContainer->GetOwner());
1459 int count = pControl->GetChildCount();
1460 for (int i = 0 ; i<count;i++)
1462 _Control* pChildControl = pControl->GetChild(i);
1465 MakeList(pChildControl->GetAccessibilityContainer());
1471 _AccessibilityManager::MoveFocus(_AccessibilityFocusDirection direction)
1473 if (direction == _ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS
1474 || direction == _ACCESSIBILITY_FOCUS_DIRECTION_NEXT)
1483 int count = __candidateList.GetCount();
1488 result r = E_SUCCESS;
1490 _AccessibilityElement* pElement = null;
1491 _AccessibilityContainer* pContainer = null;
1492 bool focusManaged = false;
1493 if (IsContainerValid(__pTargetContainer))
1495 r = __candidateList.IndexOf(__pTargetElement, 0, index);
1499 __pTargetElement = null;
1500 __pTargetContainer = null;
1504 if ((__pTargetContainer->MoveFocus(direction)))
1506 pElement = __pTargetContainer->GetCurrentFocusedElement();
1507 focusManaged = true;
1516 if (index > count - 1)
1520 __candidateList.GetAt(index, pElement);
1521 if (pElement->GetParent()->IsFocusManaged())
1523 if ((pElement->GetParent()->MoveFocus(direction)))
1525 focusManaged = true;
1533 SysTryReturn(NID_UI, __candidateList.GetAt(0, pElement) == E_SUCCESS, false, E_SUCCESS, "[E_SUCCESS] Candidates are not exist.");
1537 pContainer = pElement->GetParent();
1538 IListT<_IAccessibilityListener*>* pListenerList = pContainer->GetListenerListN();
1541 int listenerCount = pListenerList->GetCount();
1542 if (listenerCount > 0)
1544 for (int i = 0;i<listenerCount;i++)
1546 _IAccessibilityListener* pListener = null;
1547 if (pListenerList->GetAt(i, pListener) == E_SUCCESS)
1549 if (pListener->OnAccessibilityItemRefreshed(*pContainer, *pElement, direction) == true)
1551 return MoveFocus(direction);
1556 delete pListenerList;
1557 pListenerList = null;
1559 pContainer->SetCurrentFocusedElement(pElement);
1561 if (__pTargetContainer)
1563 __pTargetContainer->SetCurrentFocusedElement(null);
1565 pListenerList = __pTargetContainer->GetListenerListN();
1568 int listenerCount = pListenerList->GetCount();
1569 if (listenerCount > 0)
1571 for (int i = 0;i<listenerCount;i++)
1573 _IAccessibilityListener* pListener = null;
1574 if (pListenerList->GetAt(i, pListener) == E_SUCCESS)
1576 pListener->OnAccessibilityFocusOut(*__pTargetContainer, *__pTargetElement);
1580 delete pListenerList;
1581 pListenerList = null;
1587 __pTargetElement = pElement;
1588 __pTargetContainer = pContainer;
1589 __targetControlHandle = pContainer->GetOwner().GetHandle();
1595 DrawFocusUi(*pElement);
1596 __pTargetElement = pElement;
1597 __pTargetContainer = pContainer;
1598 __targetControlHandle = pContainer->GetOwner().GetHandle();
1599 pListenerList = __pTargetContainer->GetListenerListN();
1602 int listenerCount = pListenerList->GetCount();
1603 if (listenerCount > 0)
1605 for (int i = 0;i<listenerCount;i++)
1607 _IAccessibilityListener* pListener = null;
1608 if (pListenerList->GetAt(i, pListener) == E_SUCCESS)
1610 pListener->OnAccessibilityFocusIn(*__pTargetContainer, *__pTargetElement);
1611 if (direction == _ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS)
1613 pListener->OnAccessibilityFocusMovedPrevious(*__pTargetContainer, *__pTargetElement);
1615 else if (direction == _ACCESSIBILITY_FOCUS_DIRECTION_NEXT)
1617 pListener->OnAccessibilityFocusMovedNext(*__pTargetContainer, *__pTargetElement);
1623 delete pListenerList;
1624 pListenerList = null;
1626 ReadElement(*pElement);
1633 _AccessibilityManager::RequestToDrawFocusUi()
1635 if (__pTargetContainer)
1638 DrawFocusUi(*__pTargetElement);
1643 _AccessibilityManager::RequestAutoReading(_AccessibilityAutoReadingMode mode)
1645 pAutoReadingTimer->Start(mode);
1649 _AccessibilityManager::SetTtsMode(_AccessibilityTtsMode mode)
1653 //__pTtsPlayer->SetMode(mode);
1658 _AccessibilityManager::SetGlobalFocusedElement(_AccessibilityElement& element)
1660 _AccessibilityElement* pElement = &element;
1661 if (!IsContainerValid(pElement->GetParent()))
1665 __pTargetContainer = pElement->GetParent();
1666 __pTargetElement = pElement;
1667 RequestAutoReading(_ACCESSIBILITY_AUTO_READING_MODE_CURRENT_FOCUS);
1671 _AccessibilityManager::EraseFocusUi(void)
1675 __pFocusVe->Destroy();
1680 _AccessibilityManager::DrawFocusUi(const _AccessibilityElement& element)
1682 FloatRectangle rectangle = element.GetBounds();
1683 Canvas* pCanvas = null;
1685 _AccessibilityContainer* pContainer = element.GetParent();
1687 if (__focusedControlHandle.IsValid())
1691 __pFocusVe->Destroy();
1696 result r = E_SUCCESS;
1697 _Control* pControl = &const_cast<_Control&>(pContainer->GetOwner());
1698 _VisualElement* pControlVe = pControl->GetVisualElement();
1700 __pFocusVe = new (std::nothrow) VisualElement();
1701 SysTryCatch(NID_UI, __pFocusVe != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
1702 r = __pFocusVe->Construct();
1703 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
1705 __pFocusVe->SetName("Accessibility focus ui");
1706 __pFocusVe->SetImplicitAnimationEnabled(false);
1707 __focusedControlHandle = pControl->GetHandle();
1708 pControlVe->AttachChild(*__pFocusVe);
1712 __pFocusVe->SetBounds(FloatRectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height));
1713 pCanvas = __pFocusVe->GetCanvasN();
1714 SysTryCatch(NID_UI, pCanvas, , E_SYSTEM, "[E_SYSTEM] System error");
1715 pCanvas->SetBackgroundColor(0x00000000);
1717 Bitmap* pBitmap = null;
1718 result r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::FOCUS, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap);
1721 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pBitmap))
1723 r = pCanvas->DrawNinePatchedBitmap(Rectangle(0, 0, rectangle.width, rectangle.height), *pBitmap);
1724 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
1728 r = pCanvas->DrawBitmap(Rectangle(0, 0, rectangle.width, rectangle.height), *pBitmap);
1729 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
1733 __pFocusVe->SetShowState(true);
1742 __pFocusVe->Destroy();
1748 _AccessibilityManager::ProcessGesture(_AccessibilityGestureType type, const FloatPoint& point, const _TouchGestureDetector* pDetector)
1752 case _ACCESSIBILITY_GESTURE_TYPE_FLICK_UP:
1753 case _ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT:
1754 if (MoveFocus(_ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS))
1756 SetGestureMode(MODE_FOCUS_MOVE);
1759 case _ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN:
1760 case _ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT:
1761 if (MoveFocus(_ACCESSIBILITY_FOCUS_DIRECTION_NEXT))
1763 SetGestureMode(MODE_FOCUS_MOVE);
1766 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_ONE_TAP:
1768 if (GetGestureMode() == MODE_FOCUS_MOVE)
1770 SetGestureMode(MODE_TAP);
1771 __candidateList.RemoveAll();
1773 Point pt((int)point.x, (int)point.y);
1774 _Control* pControl = _ControlManager::GetInstance()->GetTopmostTouchedControl(pt);
1775 if (pControl == null)
1779 _AccessibilityContainer* pAccContainer = pControl->GetAccessibilityContainer();
1780 while(!(pAccContainer->IsActivated()))
1782 _Control* _pControl = pAccContainer->GetOwner().GetParent();
1783 if (_pControl == null)
1787 pAccContainer = _pControl->GetAccessibilityContainer();
1788 if (pAccContainer == null)
1793 _AccessibilityElement* pElement = pAccContainer->Hit(pt);
1794 if (pElement == null)
1799 if (__pTargetElement == pElement)
1803 AccessibilityScreenReaderStatus status = __pTtsPlayer->GetStatus();
1804 if (status == ACCESSIBILITY_SCREEN_READER_STATUS_PLAYING)
1811 if (!(pAccContainer->MoveFocus(pt)))
1815 LinkedListT<_IAccessibilityListener*>* pList = null;
1816 if (IsContainerValid(__pTargetContainer))
1818 __pTargetContainer->ResetFocus();
1819 __pTargetContainer->GetOwner().Invalidate();
1820 pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
1823 int count = pList->GetCount();
1824 for (int i = 0;i<count;i++)
1826 _IAccessibilityListener* pListener = null;
1827 if (pList->GetAt(i, pListener) == E_SUCCESS)
1829 pListener->OnAccessibilityFocusOut(*__pTargetContainer, *__pTargetElement);
1836 if (pAccContainer->IsFocusManaged())
1838 __pTargetContainer = pAccContainer;
1839 __targetControlHandle = pAccContainer->GetOwner().GetHandle();
1840 __pTargetElement = pElement;
1844 DrawFocusUi(*pElement);
1845 __pTargetContainer = pAccContainer;
1846 __targetControlHandle = pAccContainer->GetOwner().GetHandle();
1847 __pTargetElement = pElement;
1848 pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
1851 int count = pList->GetCount();
1852 for (int i = 0;i<count;i++)
1854 _IAccessibilityListener* pListener = null;
1855 if (pList->GetAt(i, pListener) == E_SUCCESS)
1857 pListener->OnAccessibilityFocusIn(*__pTargetContainer, *__pTargetElement);
1862 ReadElement(*pElement);
1866 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_DOUBLE_TAP:
1868 if (GetGestureMode() == MODE_FOCUS_MOVE)
1870 SetGestureMode(MODE_TAP);
1871 __candidateList.RemoveAll();
1873 if (__pTargetElement == null)
1877 _TouchManager* pTouchMgr = _TouchManager::GetInstance();
1878 _Control* _pControl = null;
1879 if (pTouchMgr == null)
1883 if (IsContainerValid(__pTargetContainer))
1885 _pControl = &(__pTargetContainer->GetOwner());
1891 if (_pControl == null)
1895 if (_pControl->GetEnableState() == false)
1897 ReadContent(L"Unavailable");
1901 if (__pTargetElement->GetSupportOperatingGesture())
1903 FloatRectangle rect = __pTargetElement->GetAbsoluteBounds();
1904 Point _point((int)(rect.x + rect.width/2), (int)(rect.y + rect.height/2));
1905 _UiTouchEvent pressedEvent(_pControl->GetHandle(), _TouchInfo(0, _TOUCH_PRESSED, _point, false, 0));
1906 _UiTouchEvent releasedEvent(_pControl->GetHandle(), _TouchInfo(0, _TOUCH_RELEASED, _point, false, 0));
1907 pressedEvent.SetAccessibilityEvent(true);
1908 releasedEvent.SetAccessibilityEvent(true);
1910 unsigned int pointId = 0;
1911 pointId = pTouchMgr->GeneratePointId(0);
1912 SysLog(NID_UI, "Accessibility manager generated touch pressed event. id: %d", pointId);
1913 _UiEventManager::GetInstance()->SendEvent(pressedEvent);
1914 pointId = pTouchMgr->GetPointId(0);
1915 SysLog(NID_UI, "Accessibility manager generated touch released event. id: %d", pointId);
1916 _UiEventManager::GetInstance()->SendEvent(releasedEvent);
1917 if (!IsContainerValid(__pTargetContainer))
1922 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
1925 int count = pList->GetCount();
1926 SysLog(NID_UI, "Accessibility manager called listeners. count : %d", count);
1927 for (int i = 0;i<count;i++)
1929 _IAccessibilityListener* pListener = null;
1930 if (pList->GetAt(i, pListener) == E_SUCCESS)
1932 pListener->OnAccessibilityActionPerformed(*__pTargetContainer, *__pTargetElement);
1941 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_LONGPRESS:
1942 SetGestureMode(MODE_TAP);
1944 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_PANNING_STARTED:
1945 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_PANNING_CHANGED:
1946 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_PANNING_FINISHED:
1947 SetGestureMode(MODE_TAP);
1949 case _ACCESSIBILITY_GESTURE_TYPE_VALUE_INCREASED:
1951 if (!IsContainerValid(__pTargetContainer))
1956 _Control* pControl = &(__pTargetContainer->GetOwner());
1957 if (pControl->GetEnableState() == false)
1959 ReadContent(L"Unavailable");
1963 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
1966 int count = pList->GetCount();
1967 for (int i = 0;i<count;i++)
1969 _IAccessibilityListener* pListener = null;
1970 if (pList->GetAt(i, pListener) == E_SUCCESS)
1972 pListener->OnAccessibilityValueIncreased(*__pTargetContainer, *__pTargetElement);
1979 case _ACCESSIBILITY_GESTURE_TYPE_VALUE_DECREASED:
1981 if (!IsContainerValid(__pTargetContainer))
1986 _Control* pControl = &(__pTargetContainer->GetOwner());
1987 if (pControl->GetEnableState() == false)
1989 ReadContent(L"Unavailable");
1993 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
1996 int count = pList->GetCount();
1997 for (int i = 0;i<count;i++)
1999 _IAccessibilityListener* pListener = null;
2000 if (pList->GetAt(i, pListener) == E_SUCCESS)
2002 pListener->OnAccessibilityValueDecreased(*__pTargetContainer, *__pTargetElement);
2009 case _ACCESSIBILITY_GESTURE_TYPE_TWO_FINGER_PANNING_STARTED:
2011 Point pt((int)point.x, (int)point.y);
2012 _Control* pControl = _ControlManager::GetInstance()->GetTopmostTouchedControl(pt);
2013 if (pControl == null)
2018 _UiTouchEvent pressedEvent(pControl->GetHandle(), _TouchInfo(0, _TOUCH_PRESSED, pt, false, 0));
2019 pressedEvent.SetAccessibilityEvent(true);
2020 _UiEventManager::GetInstance()->SendEvent(pressedEvent);
2021 __pPanningControl = pControl;
2022 SetGestureMode(MODE_PANNING);
2025 case _ACCESSIBILITY_GESTURE_TYPE_TWO_FINGER_PANNING_CHANGED:
2027 if (__pPanningControl == null || GetGestureMode() != MODE_PANNING)
2031 Point pt((int)point.x, (int)point.y);
2032 _UiTouchEvent movedEvent(__pPanningControl->GetHandle(), _TouchInfo(0, _TOUCH_MOVED, pt, false, 0));
2033 movedEvent.SetAccessibilityEvent(true);
2034 _UiEventManager::GetInstance()->SendEvent(movedEvent);
2037 case _ACCESSIBILITY_GESTURE_TYPE_TWO_FINGER_PANNING_FINISHED:
2039 if (__pPanningControl == null || GetGestureMode() != MODE_PANNING)
2043 Point pt((int)point.x, (int)point.y);
2044 _UiTouchEvent releasedEvent(__pPanningControl->GetHandle(), _TouchInfo(0, _TOUCH_RELEASED, pt, false, 0));
2045 releasedEvent.SetAccessibilityEvent(true);
2046 _UiEventManager::GetInstance()->SendEvent(releasedEvent);
2047 __pPanningControl = null;
2048 SetGestureMode(MODE_TAP);
2052 SetGestureMode(MODE_TAP);
2058 Tizen::Base::_HandleT<_AccessibilityContainer>
2059 _AccessibilityManager::Register(_AccessibilityContainer* pObject)
2061 if (pObject == null)
2063 return Tizen::Base::_HandleT<_AccessibilityContainer>();
2066 return __objectManager.Register(*pObject);
2069 _AccessibilityManager::Unregister(Tizen::Base::_HandleT <_AccessibilityContainer> handle)
2071 __objectManager.Unregister(handle);
2076 _AccessibilityManager::OnChangedLocale(void)
2078 if (__pTtsPlayer && __pSettingLoader)
2080 __pTtsPlayer->SetLocale(__pSettingLoader->GetLocale());
2085 _AccessibilityManager::OnAccessibilityScreenReaderIsActivated(bool set)
2087 if (__screenReaderIsEnabled == set)
2093 __screenReaderIsEnabled = set;
2094 if (__screenReaderIsEnabled)
2098 __pTtsPlayer->SetLocale(__pSettingLoader->GetLocale());
2099 __pTtsPlayer->Activate();
2104 __pTtsPlayer->Deactivate();
2109 _AccessibilityManager::IsAccessibilityActivated(void)
2111 return __pSettingLoader->IsAccessibilityActivated();
2114 _AccessibilityManager::IsScreenReaderActivated(void)
2116 __screenReaderIsEnabled = __pSettingLoader->IsScreenReaderActivated();
2117 return __screenReaderIsEnabled;
2120 _AccessibilityManager::GetLargeFontSize(void)
2122 return __pSettingLoader->GetLargeFontSize();
2126 _AccessibilityManager::IsActivated()
2128 return __screenReaderIsEnabled;
2132 _AccessibilityManager::IsContainerValid(_AccessibilityContainer* pContainer)
2134 if (pContainer == null)
2138 if (!(pContainer->IsActivated()))
2142 if (!(pContainer->GetHandle().IsValid()))
2146 if (!(pContainer->GetOwner().GetHandle().IsValid()))
2150 if (!(pContainer->GetOwner().IsVisible()))
2154 if (!IsVisible(pContainer))
2161 _AccessibilityManager::IsTargetContainerValid(void)
2164 if (__pTargetContainer && __targetControlHandle.IsValid() && __pTargetContainer->GetOwner().IsVisible() && __pTargetContainer->GetOwner().GetRootWindow() && IsVisible(__pTargetContainer))
2171 _AccessibilityManager::IsVisible(_AccessibilityElement* pElement)
2173 return IsVisible(pElement->GetParent());
2176 _AccessibilityManager::IsVisible(_AccessibilityContainer* pContainer)
2178 _ControlManager* pControlManager = _ControlManager::GetInstance();
2179 int count = pControlManager->GetWindowCount();
2184 _Window* pTopWindow = pControlManager->GetWindow(count - 1);
2185 if (pTopWindow != pContainer->GetOwner().GetRootWindow())
2192 _AccessibilityManager::SetGestureMode(GestureMode mode)
2196 _AccessibilityManager::GestureMode
2197 _AccessibilityManager::GetGestureMode(void)