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 <FUiAnimVisualElement.h>
23 #include <FUiCtrlFrame.h>
24 #include <FUiCtrlForm.h>
25 #include <FGrpCanvas.h>
26 #include <FGrpColor.h>
27 #include <FGrpFloatDimension.h>
28 #include <FGrpEnrichedText.h>
29 #include <FGrpBitmap.h>
30 #include <FBase_StringConverter.h>
31 #include <FGrp_BitmapImpl.h>
32 #include "FUi_AccessibilityGesture.h"
33 #include "FUi_AccessibilitySystemSettingLoader.h"
34 #include "FUi_AccessibilityTtsPlayer.h"
35 #include "FUi_AccessibilityManager.h"
36 #include "FUi_AccessibilityElement.h"
37 #include "FUi_AccessibilityContainer.h"
38 #include "FUi_IAccessibilityListener.h"
39 #include "FUi_ControlManager.h"
40 #include "FUi_TouchManager.h"
41 #include "FUi_UiEventManager.h"
42 #include "FUiAnim_VisualElementImpl.h"
43 #include "FUiCtrl_FrameImpl.h"
44 #include "FUiCtrl_ScrollPanel.h"
45 #include "FUiCtrl_IconListView.h"
46 #include "FUi_ResourceManager.h"
48 using namespace Tizen::App;
49 using namespace Tizen::Base;
50 using namespace Tizen::Base::Collection;
51 using namespace Tizen::Base::Runtime;
52 using namespace Tizen::Graphics;
53 using namespace Tizen::Ui::Animations;
54 using namespace Tizen::Ui::Controls;
59 : public ITimerEventListener
65 timer.Construct(*this);
67 virtual ~GuidePopupTimer(void) {}
68 void SetElement(VisualElement* pElement)
70 if (__pElement != null)
74 __pElement = pElement;
82 virtual void OnTimerExpired(Timer& timer)
86 __pElement->SetShowState(false);
90 VisualElement* __pElement;
94 class AutoReadingTimer
95 : public ITimerEventListener
98 AutoReadingTimer(Tizen::Ui::_AccessibilityManager* pManager)
99 : __pAccessibilityManager(pManager)
100 , __mode(Tizen::Ui::_ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM)
104 timer.Construct(*this);
106 virtual ~AutoReadingTimer(void) {}
107 void Start(Tizen::Ui::_AccessibilityAutoReadingMode mode)
109 SysLog(NID_UI, "AccessibilityManager::AutoReadingTimer is requested mode : %d", mode);
115 SysLog(NID_UI, "AccessibilityManager::AutoReadingTimer is started mode : %d", mode);
124 virtual void OnTimerExpired(Timer& timer)
126 SysLog(NID_UI, "mode %d", __mode);
127 if (__pAccessibilityManager->GetTtsStatus() != Tizen::Ui::ACCESSIBILITY_SCREEN_READER_STATUS_READY
128 && __pAccessibilityManager->GetTtsStatus() != Tizen::Ui::ACCESSIBILITY_SCREEN_READER_STATUS_PLAYING)
133 SysLog(NID_UI, "AccessibilityManager::AutoReadingTimer is started again because tts is not initialized.");
136 __pAccessibilityManager->ReadElement(__mode);
138 Tizen::Ui::_AccessibilityManager* __pAccessibilityManager;
140 Tizen::Ui::_AccessibilityAutoReadingMode __mode;
144 GuidePopupTimer* pGuidePopupTimer;
145 AutoReadingTimer* pAutoReadingTimer;
147 namespace Tizen { namespace Ui {
150 class _AccessibilityItemComparer
151 : public Tizen::Base::Collection::IComparerT <T>
154 _AccessibilityItemComparer(void)
157 virtual ~_AccessibilityItemComparer(void)
160 virtual result Compare(const T& obj1, const T& obj2, int& cmp) const
162 Tizen::Graphics::Rectangle rect1= obj1->GetAbsoluteBounds();
163 Tizen::Graphics::Rectangle rect2= obj2->GetAbsoluteBounds();
165 if (rect1.y > rect2.y)
170 else if (rect1.y < rect2.y)
177 if (rect1.x > rect2.x)
182 else if (rect1.x < rect2.x)
194 }; //class _AccessibilityComparer
197 class _ElementComparer
198 : public Tizen::Base::Collection::IComparerT <T>
201 _ElementComparer(void)
204 virtual ~_ElementComparer(void)
207 virtual result Compare(const T& obj1, const T& obj2, int& cmp) const
209 if (obj1->GetParent()->GetPriority() > obj2->GetParent()->GetPriority())
214 else if (obj1->GetParent()->GetPriority() < obj2->GetParent()->GetPriority())
221 Tizen::Graphics::FloatRectangle rect1= obj1->GetAbsoluteBounds();
222 Tizen::Graphics::FloatRectangle rect2= obj2->GetAbsoluteBounds();
224 if (rect1.y > rect2.y)
229 else if (rect1.y < rect2.y)
236 if (rect1.x > rect2.x)
241 else if (rect1.x < rect2.x)
256 static _AccessibilityManager* pAccManager = null;
257 bool _AccessibilityManager::__screenReaderIsEnabled = false;
258 _AccessibilityManager::_AccessibilityManager(void)
259 : __pAccGesture(null)
261 , __pSettingLoader(null)
262 , __pTargetContainer(null)
263 , __pTargetElement(null)
264 , __pTitleElement(null)
270 , __pPanningControl(null)
274 _AccessibilityManager::~_AccessibilityManager(void)
276 delete __pAccGesture;
277 __pAccGesture = null;
280 delete __pSettingLoader;
281 __pSettingLoader = null;
282 delete pGuidePopupTimer;
283 pGuidePopupTimer = null;
284 delete pAutoReadingTimer;
285 pAutoReadingTimer = null;
288 _AccessibilityManager*
289 _AccessibilityManager::GetInstance(void)
295 _AccessibilityManager::CreateInstance(void)
297 static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;
299 if (pAccManager == null)
301 pthread_once(&onceBlock, InitializeInstance);
306 _AccessibilityManager::InitializeInstance(void)
308 pAccManager = new (std::nothrow) _AccessibilityManager;
311 _AccessibilityManager::ReleaseInstance(void)
317 _AccessibilityManager::Initialize(void)
319 __pAccGesture = new (std::nothrow) _AccessibilityGesture(*this);
320 SysTryReturn(NID_UI, __pAccGesture, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
321 __pTtsPlayer = new (std::nothrow) _AccessibilityTtsPlayer(*this);
322 SysTryCatch(NID_UI, __pTtsPlayer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
323 __pSettingLoader = new (std::nothrow) _AccessibilitySystemSettingLoader(*this);
324 SysTryCatch(NID_UI, __pSettingLoader, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
326 if (IsScreenReaderActivated())
328 __pTtsPlayer->SetLocale(__pSettingLoader->GetLocaleString());
329 __pTtsPlayer->Activate();
332 pGuidePopupTimer = new (std::nothrow) GuidePopupTimer;
333 SysTryCatch(NID_UI, pGuidePopupTimer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
334 pAutoReadingTimer = new (std::nothrow) AutoReadingTimer(this);
335 SysTryCatch(NID_UI, pAutoReadingTimer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
339 delete __pAccGesture;
340 __pAccGesture = null;
343 delete __pSettingLoader;
344 __pSettingLoader = null;
345 delete pGuidePopupTimer;
346 pGuidePopupTimer = null;
347 delete pAutoReadingTimer;
348 pAutoReadingTimer = null;
350 AccessibilityScreenReaderStatus
351 _AccessibilityManager::GetTtsStatus(void)
355 return __pTtsPlayer->GetStatus();
357 return ACCESSIBILITY_SCREEN_READER_STATUS_ERROR;
360 _AccessibilityManager::ReadContent(const Tizen::Base::String& content)
365 __pTtsPlayer->ReadGrammar(content);
370 _AccessibilityManager::ReadElement(_AccessibilityAutoReadingMode mode)
373 int count = __candidateList.GetCount();
378 _AccessibilityElement* pElement = null;
381 if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM)
383 r = __candidateList.GetAt(0, pElement);
385 else if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM_OF_CONTENTS)
387 for (int i = 0 ; i < count ; i++)
389 r = __candidateList.GetAt(i, pElement);
390 if (r == E_SUCCESS && pElement)
392 if (pElement->GetParent()->GetPriority() < ACCESSIBILITY_PRIORITY_TOP)
399 else //_ACCESSIBILITY_AUTO_READING_MODE_CURRENT_FOCUS
401 if (IsContainerValid(__pTargetContainer))
403 pElement = __pTargetElement;
407 if (r != E_SUCCESS || pElement == null)
409 SysLog(NID_UI, "cause 1");
412 if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM && __pTitleElement == pElement && !(__pTitleElement->IsUpdated()))
414 SysLog(NID_UI, "cause 2");
417 __pTitleElement = pElement;
418 pElement->GetParent()->SetCurrentFocusedElement(pElement);
419 DrawFocusUi(*pElement);
420 __pTargetContainer = pElement->GetParent();
421 __pTargetElement = pElement;
422 __targetControlHandle = __pTargetContainer->GetOwner().GetHandle();
423 ReadElement(*pElement);
427 _AccessibilityManager::ReadElement(const _AccessibilityElement& element)
431 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
434 for (int i = 0;i<pList->GetCount();i++)
436 _IAccessibilityListener* pListener = null;
437 if (pList->GetAt(i, pListener) == E_SUCCESS)
439 pListener->OnAccessibilityReadingElement(*__pTargetContainer, element);
446 __pTtsPlayer->ReadGrammar(element.GetReadingContents());
451 _AccessibilityManager::ReadingStop(void)
456 _AccessibilityManager::ReadingPause(void)
461 _AccessibilityManager::ReadingResume(void)
467 _AccessibilityManager::OnStartReading(const Tizen::Base::String& grammar)
471 _AccessibilityManager::HidePopup(void)
475 __pReadingVe->Destroy();
478 pGuidePopupTimer->Stop();
481 _AccessibilityManager::ShowPopup(const String& content)
483 if (content.IsEmpty())
489 if (String("i686_emulated") != sysInfo.machine)
493 Canvas* pCanvas = null;
494 Bitmap* pBgBitmap = null;
495 EnrichedText* pEnrichedTitleText = null;
496 EnrichedText* pText = null;
497 Frame* pFrame = null;
499 if (__pReadingVe == null)
501 pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
505 int accesibilityVisualElementLevel = 3000;
506 result r = E_SUCCESS;
507 VisualElement* pRootVe = _ControlManager::GetInstance()->GetTopVisibleWindow()->GetVisualElement();
509 __pReadingVe = new (std::nothrow) VisualElement();
510 SysTryCatch(NID_UI, __pReadingVe, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
512 r = __pReadingVe->Construct();
513 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
514 __pReadingVe->SetName("Accessibility reading popup");
515 _VisualElementImpl::GetInstance(*__pReadingVe)->SetZOrderGroup(accesibilityVisualElementLevel);
516 pRootVe->AttachChild(*__pReadingVe);
521 result r = E_SUCCESS;
523 float titleFontSize = 0;
524 float textFontSize = 0;
525 float popupWidth = 0;
527 float bottomMargin = 0;
528 float sideMargin = 0;
529 float titleHeight = 0;
530 float textTopMargin = 0;
531 float textHeight = 0;
533 Color titleTextColor;
534 Color pointTextColor;
536 TextElement* pElement = null;
538 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, titleFontSize);
539 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
540 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, textFontSize);
541 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
542 r = GET_SHAPE_CONFIG(ACCESSIBILITY::POPUP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, popupWidth);
543 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
544 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, topMargin);
545 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
546 r = GET_SHAPE_CONFIG(ACCESSIBILITY::BOTTON_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, bottomMargin);
547 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
548 r = GET_SHAPE_CONFIG(ACCESSIBILITY::SIDE_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, sideMargin);
549 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
550 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, titleHeight);
551 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
552 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, textTopMargin);
553 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
554 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_HEGIHT, _CONTROL_ORIENTATION_PORTRAIT, textHeight);
555 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
556 r = GET_COLOR_CONFIG(ACCESSIBILITY::TITLE_TEXT, titleTextColor);
557 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
558 r = GET_COLOR_CONFIG(ACCESSIBILITY::POINT_TEXT, pointTextColor);
559 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
560 r = GET_COLOR_CONFIG(ACCESSIBILITY::TEXT, textColor);
561 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
562 r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::POPUP_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pBgBitmap);
563 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
566 r = titleFont.Construct(FONT_STYLE_PLAIN, titleFontSize);
567 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
569 r = textFont.Construct(FONT_STYLE_PLAIN, textFontSize);
570 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
572 pEnrichedTitleText = new (std::nothrow) EnrichedText;
573 SysTryCatch(NID_UI, pEnrichedTitleText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
574 pEnrichedTitleText->Construct(FloatDimension(popupWidth-sideMargin*2, titleHeight));
576 pText = new (std::nothrow) EnrichedText;
577 SysTryCatch(NID_UI, pText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
578 pText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
580 pElement = new (std::nothrow) TextElement;
581 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
582 r = pElement->Construct(L"Screen reading...");
588 pElement->SetTextColor(titleTextColor);
589 pElement->SetFont(titleFont);
590 r = pEnrichedTitleText->Add(*pElement);
591 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
592 pEnrichedTitleText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
593 pEnrichedTitleText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
594 pEnrichedTitleText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
595 pEnrichedTitleText->SetTextAbbreviationEnabled(true);
597 pElement = new (std::nothrow) TextElement;
598 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
599 r = pElement->Construct(content);
605 pElement->SetTextColor(textColor);
606 pElement->SetFont(textFont);
607 r = pText->Add(*pElement);
608 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
609 pText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
610 pText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
611 pText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
612 pText->SetTextAbbreviationEnabled(true);
616 float popupHeight = topMargin + bottomMargin + titleHeight + textTopMargin + textHeight;
618 FloatDimension screen = Tizen::Ui::_ControlManager::GetInstance()->GetScreenSizeF();
619 __pReadingVe->SetBounds(FloatRectangle(x, y, popupWidth, popupHeight));
620 pCanvas = __pReadingVe->GetCanvasN();
621 SysTryCatch(NID_UI, pCanvas != null, , E_SYSTEM, "System error for accessibility popup");
622 pCanvas->DrawNinePatchedBitmap(FloatRectangle(0, 0, popupWidth, popupHeight), *pBgBitmap);
623 float drawingTextY = topMargin;
624 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedTitleText);
625 drawingTextY += textTopMargin + titleHeight;
626 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pText);
627 __pReadingVe->SetShowState(true);
628 __pReadingVe->SetFlushNeeded();
629 pGuidePopupTimer->SetElement(__pReadingVe);
637 if (pEnrichedTitleText)
639 pEnrichedTitleText->RemoveAll(true);
640 delete pEnrichedTitleText;
644 pText->RemoveAll(true);
652 _AccessibilityManager::ShowPopup()
654 if (__pTargetElement == null)
660 Frame* pFrame = null;
661 Canvas* pCanvas = null;
662 Bitmap* pBgBitmap = null;
663 EnrichedText* pEnrichedTitleText = null;
664 EnrichedText* pEnrichedNameText = null;
665 EnrichedText* pEnrichedLableText = null;
666 EnrichedText* pEnrichedTraitText = null;
667 EnrichedText* pEnrichedStatusText = null;
668 EnrichedText* pEnrichedHintText = null;
669 EnrichedText* pEnrichedValueText = null;
670 EnrichedText* pEnrichedBoundsText = null;
671 EnrichedText* pEnrichedAbsBoundsText = null;
672 TextElement* pElement = null;
673 FloatDimension screen;
675 if (String("i686_emulated") != sysInfo.machine)
680 if (__pReadingVe == null)
682 pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
686 int accesibilityVisualElementLevel = 3000;
687 result r = E_SUCCESS;
688 VisualElement* pRootVe = _ControlManager::GetInstance()->GetTopVisibleWindow()->GetVisualElement();
690 __pReadingVe = new (std::nothrow) VisualElement();
691 SysTryCatch(NID_UI, __pReadingVe, , E_SYSTEM, "[E_SYSTEM] System error");
693 r = __pReadingVe->Construct();
694 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
695 __pReadingVe->SetName("Accessibility reading popup");
696 _VisualElementImpl::GetInstance(*__pReadingVe)->SetZOrderGroup(accesibilityVisualElementLevel);
697 pRootVe->AttachChild(*__pReadingVe);
701 screen = _ControlManager::GetInstance()->GetScreenSizeF();
704 result r = E_SUCCESS;
706 float titleFontSize = 0;
707 float textFontSize = 0;
708 float popupWidth = 0;
710 float bottomMargin = 0;
711 float sideMargin = 0;
712 float titleHeight = 0;
713 float textTopMargin = 0;
714 float textHeight = 0;
716 Color titleTextColor;
717 Color pointTextColor;
720 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, titleFontSize);
721 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
722 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, textFontSize);
723 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
724 r = GET_SHAPE_CONFIG(ACCESSIBILITY::POPUP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, popupWidth);
725 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
726 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, topMargin);
727 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
728 r = GET_SHAPE_CONFIG(ACCESSIBILITY::BOTTON_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, bottomMargin);
729 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
730 r = GET_SHAPE_CONFIG(ACCESSIBILITY::SIDE_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, sideMargin);
731 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
732 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, titleHeight);
733 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
734 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, textTopMargin);
735 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
736 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_HEGIHT, _CONTROL_ORIENTATION_PORTRAIT, textHeight);
737 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
738 r = GET_COLOR_CONFIG(ACCESSIBILITY::TITLE_TEXT, titleTextColor);
739 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
740 r = GET_COLOR_CONFIG(ACCESSIBILITY::POINT_TEXT, pointTextColor);
741 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
742 r = GET_COLOR_CONFIG(ACCESSIBILITY::TEXT, textColor);
743 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
744 r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::POPUP_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pBgBitmap);
745 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
748 r = titleFont.Construct(FONT_STYLE_PLAIN, titleFontSize);
749 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
752 r = textFont.Construct(FONT_STYLE_PLAIN, textFontSize);
753 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
755 pEnrichedTitleText = new (std::nothrow) EnrichedText;
756 SysTryCatch(NID_UI, pEnrichedTitleText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
757 pEnrichedTitleText->Construct(FloatDimension(popupWidth-sideMargin*2, titleHeight));
759 pEnrichedNameText = new (std::nothrow) EnrichedText;
760 SysTryCatch(NID_UI, pEnrichedNameText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
761 pEnrichedNameText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
763 pEnrichedLableText = new (std::nothrow) EnrichedText;
764 SysTryCatch(NID_UI, pEnrichedLableText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
765 pEnrichedLableText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
767 pEnrichedTraitText = new (std::nothrow) EnrichedText;
768 SysTryCatch(NID_UI, pEnrichedTraitText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
769 pEnrichedTraitText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
771 pEnrichedStatusText = new (std::nothrow) EnrichedText;
772 SysTryCatch(NID_UI, pEnrichedStatusText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
773 pEnrichedStatusText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
775 pEnrichedHintText = new (std::nothrow) EnrichedText;
776 SysTryCatch(NID_UI, pEnrichedHintText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
777 pEnrichedHintText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
779 pEnrichedValueText = new (std::nothrow) EnrichedText;
780 SysTryCatch(NID_UI, pEnrichedValueText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
781 pEnrichedValueText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
783 pEnrichedBoundsText = new (std::nothrow) EnrichedText;
784 SysTryCatch(NID_UI, pEnrichedBoundsText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
785 pEnrichedBoundsText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
787 pEnrichedAbsBoundsText = new (std::nothrow) EnrichedText;
788 SysTryCatch(NID_UI, pEnrichedAbsBoundsText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
789 pEnrichedAbsBoundsText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
791 pElement = new (std::nothrow) TextElement;
792 r = pElement->Construct(L"Screen reading...");
793 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
794 pElement->SetTextColor(titleTextColor);
795 pElement->SetFont(titleFont);
796 r = pEnrichedTitleText->Add(*pElement);
798 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
799 pEnrichedTitleText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
800 pEnrichedTitleText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
801 pEnrichedTitleText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
802 pEnrichedTitleText->SetTextAbbreviationEnabled(true);
804 pElement = new (std::nothrow) TextElement;
805 r = pElement->Construct(L"Name: ");
806 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
808 pElement->SetTextColor(pointTextColor);
809 pElement->SetFont(textFont);
810 r = pEnrichedNameText->Add(*pElement);
811 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
813 if (!(__pTargetElement->GetName().IsEmpty()))
815 pElement = new (std::nothrow) TextElement;
816 r = pElement->Construct(__pTargetElement->GetName());
817 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
819 pElement->SetTextColor(textColor);
820 pElement->SetFont(textFont);
821 r = pEnrichedNameText->Add(*pElement);
822 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
823 SysLog(NID_UI, " Name :::::: %s", _StringConverter::CopyToCharArrayN(__pTargetElement->GetName()));
825 pEnrichedNameText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
826 pEnrichedNameText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
827 pEnrichedNameText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
828 pEnrichedNameText->SetTextAbbreviationEnabled(true);
830 pElement = new (std::nothrow) TextElement;
831 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
832 r = pElement->Construct(L"Label: ");
833 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
835 pElement->SetTextColor(pointTextColor);
836 pElement->SetFont(textFont);
837 r = pEnrichedLableText->Add(*pElement);
838 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
840 if (!(__pTargetElement->GetLabel().IsEmpty()))
842 pElement = new (std::nothrow) TextElement;
843 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
844 r = pElement->Construct(__pTargetElement->GetLabel());
845 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
847 pElement->SetTextColor(textColor);
848 pElement->SetFont(textFont);
849 r = pEnrichedLableText->Add(*pElement);
850 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
851 SysLog(NID_UI, " Label :::::: %s", _StringConverter::CopyToCharArrayN(__pTargetElement->GetLabel()));
853 pEnrichedLableText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
854 pEnrichedLableText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
855 pEnrichedLableText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
856 pEnrichedLableText->SetTextAbbreviationEnabled(true);
858 pElement = new (std::nothrow) TextElement;
859 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
860 r = pElement->Construct(L"Trait: ");
861 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
863 pElement->SetTextColor(pointTextColor);
864 pElement->SetFont(textFont);
865 r = pEnrichedTraitText->Add(*pElement);
866 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
867 if (!(__pTargetElement->GetTraitString().IsEmpty()))
869 pElement = new (std::nothrow) TextElement;
870 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
871 r = pElement->Construct(__pTargetElement->GetTraitString());
872 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
874 pElement->SetTextColor(textColor);
875 pElement->SetFont(textFont);
876 r = pEnrichedTraitText->Add(*pElement);
877 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
879 pEnrichedTraitText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
880 pEnrichedTraitText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
881 pEnrichedTraitText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
882 pEnrichedTraitText->SetTextAbbreviationEnabled(true);
884 pElement = new (std::nothrow) TextElement;
885 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
886 r = pElement->Construct(L"Status: ");
887 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
889 pElement->SetTextColor(pointTextColor);
890 pElement->SetFont(textFont);
891 r = pEnrichedStatusText->Add(*pElement);
892 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
893 if (!(__pTargetElement->GetStatus().IsEmpty()))
895 pElement = new (std::nothrow) TextElement;
896 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
897 r = pElement->Construct(__pTargetElement->GetStatus());
898 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
900 pElement->SetTextColor(textColor);
901 pElement->SetFont(textFont);
902 r = pEnrichedStatusText->Add(*pElement);
903 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
905 pEnrichedStatusText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
906 pEnrichedStatusText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
907 pEnrichedStatusText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
908 pEnrichedStatusText->SetTextAbbreviationEnabled(true);
910 pElement = new (std::nothrow) TextElement;
911 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
912 r = pElement->Construct(L"Hint: ");
913 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
915 pElement->SetTextColor(pointTextColor);
916 pElement->SetFont(textFont);
917 r = pEnrichedHintText->Add(*pElement);
918 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
919 if (!(__pTargetElement->GetHint().IsEmpty()))
921 pElement = new (std::nothrow) TextElement;
922 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
923 r = pElement->Construct(__pTargetElement->GetHint());
924 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
926 pElement->SetTextColor(textColor);
927 pElement->SetFont(textFont);
928 r = pEnrichedHintText->Add(*pElement);
929 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
931 pEnrichedHintText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
932 pEnrichedHintText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
933 pEnrichedHintText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
934 pEnrichedHintText->SetTextAbbreviationEnabled(true);
936 pElement = new (std::nothrow) TextElement;
937 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
938 r = pElement->Construct(L"Value: ");
939 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
941 pElement->SetTextColor(pointTextColor);
942 pElement->SetFont(textFont);
943 r = pEnrichedValueText->Add(*pElement);
944 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
945 if (!(__pTargetElement->GetValue().IsEmpty()))
947 pElement = new (std::nothrow) TextElement;
948 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
949 r = pElement->Construct(__pTargetElement->GetValue());
950 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
952 pElement->SetTextColor(textColor);
953 pElement->SetFont(textFont);
954 r = pEnrichedValueText->Add(*pElement);
955 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
957 pEnrichedValueText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
958 pEnrichedValueText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
959 pEnrichedValueText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
960 pEnrichedValueText->SetTextAbbreviationEnabled(true);
962 pElement = new (std::nothrow) TextElement;
963 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
964 r = pElement->Construct(L"Bound: ");
965 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
967 pElement->SetTextColor(pointTextColor);
968 pElement->SetFont(textFont);
969 r = pEnrichedBoundsText->Add(*pElement);
970 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
972 pElement = new (std::nothrow) TextElement;
973 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
974 FloatRectangle rect = __pTargetElement->GetBounds();
976 rectString.Format(40, L"x:%f, y:%f, w:%f, h:%f", rect.x, rect.y, rect.width, rect.height);
977 r = pElement->Construct(rectString);
978 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
980 pElement->SetTextColor(textColor);
981 pElement->SetFont(textFont);
982 r = pEnrichedBoundsText->Add(*pElement);
983 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
984 pEnrichedBoundsText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
985 pEnrichedBoundsText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
986 pEnrichedBoundsText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
987 pEnrichedBoundsText->SetTextAbbreviationEnabled(true);
989 pElement = new (std::nothrow) TextElement;
990 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
991 r = pElement->Construct(L"AbsBound: ");
992 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
994 pElement->SetTextColor(pointTextColor);
995 pElement->SetFont(textFont);
996 r = pEnrichedAbsBoundsText->Add(*pElement);
997 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
999 pElement = new (std::nothrow) TextElement;
1000 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
1001 rect = __pTargetElement->GetAbsoluteBounds();
1003 rectString.Format(40, L"x:%f, y:%f, w:%f, h:%f", rect.x, rect.y, rect.width, rect.height);
1004 r = pElement->Construct(rectString);
1005 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1007 pElement->SetTextColor(textColor);
1008 pElement->SetFont(textFont);
1009 r = pEnrichedAbsBoundsText->Add(*pElement);
1010 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1011 pEnrichedAbsBoundsText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
1012 pEnrichedAbsBoundsText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
1013 pEnrichedAbsBoundsText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
1014 pEnrichedAbsBoundsText->SetTextAbbreviationEnabled(true);
1018 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 __pFocusVe->SetShowState(true);
1708 __focusedControlHandle = pControl->GetHandle();
1709 pControlVe->AttachChild(*__pFocusVe);
1713 __pFocusVe->SetBounds(FloatRectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height));
1714 pCanvas = __pFocusVe->GetCanvasN();
1715 SysTryCatch(NID_UI, pCanvas, , E_SYSTEM, "[E_SYSTEM] System error");
1716 pCanvas->SetBackgroundColor(0x55555555);
1718 Bitmap* pBitmap = null;
1719 result r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::FOCUS, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap);
1722 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pBitmap))
1724 r = pCanvas->DrawNinePatchedBitmap(Rectangle(0, 0, rectangle.width, rectangle.height), *pBitmap);
1725 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
1729 r = pCanvas->DrawBitmap(Rectangle(0, 0, rectangle.width, rectangle.height), *pBitmap);
1730 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->GetLocaleString());
2081 __pTtsPlayer->ApplyLocale();
2086 _AccessibilityManager::OnAccessibilityScreenReaderIsActivated(bool set)
2088 if (__screenReaderIsEnabled == set)
2094 __screenReaderIsEnabled = set;
2095 if (__screenReaderIsEnabled)
2099 __pTtsPlayer->SetLocale(__pSettingLoader->GetLocaleString());
2100 __pTtsPlayer->Activate();
2105 __pTtsPlayer->Deactivate();
2110 _AccessibilityManager::IsAccessibilityActivated(void)
2112 return __pSettingLoader->IsAccessibilityActivated();
2115 _AccessibilityManager::IsScreenReaderActivated(void)
2117 __screenReaderIsEnabled = __pSettingLoader->IsScreenReaderActivated();
2118 return __screenReaderIsEnabled;
2121 _AccessibilityManager::GetLargeFontSize(void)
2123 return __pSettingLoader->GetLargeFontSize();
2127 _AccessibilityManager::IsActivated()
2129 return __screenReaderIsEnabled;
2133 _AccessibilityManager::IsContainerValid(_AccessibilityContainer* pContainer)
2135 if (pContainer == null)
2139 if (!(pContainer->IsActivated()))
2143 if (!(pContainer->GetHandle().IsValid()))
2147 if (!(pContainer->GetOwner().GetHandle().IsValid()))
2151 if (!(pContainer->GetOwner().IsVisible()))
2155 if (!IsVisible(pContainer))
2162 _AccessibilityManager::IsTargetContainerValid(void)
2165 if (__pTargetContainer && __targetControlHandle.IsValid() && __pTargetContainer->GetOwner().IsVisible() && __pTargetContainer->GetOwner().GetRootWindow() && IsVisible(__pTargetContainer))
2172 _AccessibilityManager::IsVisible(_AccessibilityElement* pElement)
2174 return IsVisible(pElement->GetParent());
2177 _AccessibilityManager::IsVisible(_AccessibilityContainer* pContainer)
2179 _ControlManager* pControlManager = _ControlManager::GetInstance();
2180 int count = pControlManager->GetWindowCount();
2185 _Window* pTopWindow = pControlManager->GetWindow(count - 1);
2186 if (pTopWindow != pContainer->GetOwner().GetRootWindow())
2193 _AccessibilityManager::SetGestureMode(GestureMode mode)
2197 _AccessibilityManager::GestureMode
2198 _AccessibilityManager::GetGestureMode(void)