2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
17 #include <sys/utsname.h>
18 #include <FBaseInteger.h>
20 #include <FAppUiApp.h>
21 #include <FAppIAppFrame.h>
22 #include <FBaseRtTimer.h>
23 #include <FLclLocale.h>
24 #include <FUiAnimVisualElement.h>
25 #include <FUiCtrlFrame.h>
26 #include <FUiCtrlForm.h>
27 #include <FGrpCanvas.h>
28 #include <FGrpColor.h>
29 #include <FGrpFloatDimension.h>
30 #include <FGrpEnrichedText.h>
31 #include <FGrpBitmap.h>
32 #include <FBase_StringConverter.h>
33 #include <FGrp_BitmapImpl.h>
34 #include <FSys_SystemTimeImpl.h>
35 #include "FUi_AccessibilityGesture.h"
36 #include "FUi_AccessibilitySystemSettingLoader.h"
37 #include "FUi_AccessibilityTtsPlayer.h"
38 #include "FUi_AccessibilityManager.h"
39 #include "FUi_AccessibilityElement.h"
40 #include "FUi_AccessibilityContainer.h"
41 #include "FUi_IAccessibilityListener.h"
42 #include "FUi_ControlManager.h"
43 #include "FUi_TouchManager.h"
44 #include "FUi_UiEventManager.h"
45 #include "FUiAnim_VisualElementImpl.h"
46 #include "FUiCtrl_FrameImpl.h"
47 #include "FUiCtrl_ScrollPanel.h"
48 #include "FUiCtrl_IconListView.h"
49 #include "FUi_ResourceManager.h"
51 using namespace Tizen::App;
52 using namespace Tizen::Base;
53 using namespace Tizen::Base::Collection;
54 using namespace Tizen::Base::Runtime;
55 using namespace Tizen::Graphics;
56 using namespace Tizen::Ui::Animations;
57 using namespace Tizen::Ui::Controls;
58 using namespace Tizen::System;
62 : public ITimerEventListener
68 timer.Construct(*this);
70 virtual ~GuidePopupTimer(void) {}
71 void SetElement(VisualElement* pElement)
73 if (__pElement != null)
77 __pElement = pElement;
85 virtual void OnTimerExpired(Timer& timer)
89 __pElement->SetShowState(false);
93 VisualElement* __pElement;
97 class AutoReadingTimer
98 : public ITimerEventListener
101 AutoReadingTimer(Tizen::Ui::_AccessibilityManager* pManager)
102 : __pAccessibilityManager(pManager)
103 , __mode(Tizen::Ui::_ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM)
107 timer.Construct(*this);
109 virtual ~AutoReadingTimer(void) {}
110 void Start(Tizen::Ui::_AccessibilityAutoReadingMode mode)
112 if((Tizen::App::_AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP) || (Tizen::App::_AppInfo::GetAppType() & _APP_TYPE_IME_APP))
129 virtual void OnTimerExpired(Timer& timer)
131 if (!(__pAccessibilityManager->IsScreenReaderActivated()) || UiApp::GetInstance()->GetAppUiState() == APP_UI_STATE_BACKGROUND)
135 SysLog(NID_UI, "mode %d", __mode);
136 if (__pAccessibilityManager->GetTtsStatus() != Tizen::Ui::ACCESSIBILITY_SCREEN_READER_STATUS_READY
137 && __pAccessibilityManager->GetTtsStatus() != Tizen::Ui::ACCESSIBILITY_SCREEN_READER_STATUS_PLAYING)
141 SysLog(NID_UI, "AccessibilityManager::AutoReadingTimer is started again because tts is not initialized.");
145 __pAccessibilityManager->ReadElement(__mode);
147 Tizen::Ui::_AccessibilityManager* __pAccessibilityManager;
149 Tizen::Ui::_AccessibilityAutoReadingMode __mode;
153 GuidePopupTimer* pGuidePopupTimer;
154 AutoReadingTimer* pAutoReadingTimer;
156 namespace Tizen { namespace Ui {
159 class _AccessibilityItemComparer
160 : public Tizen::Base::Collection::IComparerT <T>
163 _AccessibilityItemComparer(void)
166 virtual ~_AccessibilityItemComparer(void)
169 virtual result Compare(const T& obj1, const T& obj2, int& cmp) const
171 Tizen::Graphics::Rectangle rect1= obj1->GetAbsoluteBounds();
172 Tizen::Graphics::Rectangle rect2= obj2->GetAbsoluteBounds();
174 if (rect1.y > rect2.y)
179 else if (rect1.y < rect2.y)
186 if (rect1.x > rect2.x)
191 else if (rect1.x < rect2.x)
203 }; //class _AccessibilityComparer
206 class _ElementComparer
207 : public Tizen::Base::Collection::IComparerT <T>
210 _ElementComparer(void)
213 virtual ~_ElementComparer(void)
216 virtual result Compare(const T& obj1, const T& obj2, int& cmp) const
218 if (obj1->GetParent()->GetPriority() > obj2->GetParent()->GetPriority())
223 else if (obj1->GetParent()->GetPriority() < obj2->GetParent()->GetPriority())
230 Tizen::Graphics::FloatRectangle rect1= obj1->GetAbsoluteBounds();
231 Tizen::Graphics::FloatRectangle rect2= obj2->GetAbsoluteBounds();
233 if (rect1.y > rect2.y)
238 else if (rect1.y < rect2.y)
245 if (rect1.x > rect2.x)
250 else if (rect1.x < rect2.x)
265 static _AccessibilityManager* pAccManager = null;
266 bool _AccessibilityManager::__screenReaderIsEnabled = false;
267 _AccessibilityManager::_AccessibilityManager(void)
268 : __pAccGesture(null)
270 , __pSettingLoader(null)
271 , __pTargetContainer(null)
272 , __pTargetElement(null)
273 , __pTitleElement(null)
279 , __pPanningControl(null)
280 , __needRefreshItem(false)
284 _AccessibilityManager::~_AccessibilityManager(void)
286 delete __pAccGesture;
287 __pAccGesture = null;
290 delete __pSettingLoader;
291 __pSettingLoader = null;
292 delete pGuidePopupTimer;
293 pGuidePopupTimer = null;
294 delete pAutoReadingTimer;
295 pAutoReadingTimer = null;
298 _AccessibilityManager*
299 _AccessibilityManager::GetInstance(void)
305 _AccessibilityManager::CreateInstance(void)
307 static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;
309 if (pAccManager == null)
311 pthread_once(&onceBlock, InitializeInstance);
316 _AccessibilityManager::InitializeInstance(void)
318 pAccManager = new (std::nothrow) _AccessibilityManager;
321 _AccessibilityManager::ReleaseInstance(void)
327 _AccessibilityManager::Initialize(void)
329 __pAccGesture = new (std::nothrow) _AccessibilityGesture(*this);
330 SysTryReturn(NID_UI, __pAccGesture, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
331 __pTtsPlayer = new (std::nothrow) _AccessibilityTtsPlayer(*this);
332 SysTryCatch(NID_UI, __pTtsPlayer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
333 __pTtsPlayer->Construct();
334 __pSettingLoader = new (std::nothrow) _AccessibilitySystemSettingLoader(*this);
335 SysTryCatch(NID_UI, __pSettingLoader, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
337 if (IsScreenReaderActivated())
339 __pTtsPlayer->Activate();
341 pGuidePopupTimer = new (std::nothrow) GuidePopupTimer;
342 SysTryCatch(NID_UI, pGuidePopupTimer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
343 pAutoReadingTimer = new (std::nothrow) AutoReadingTimer(this);
344 SysTryCatch(NID_UI, pAutoReadingTimer, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
348 delete __pAccGesture;
349 __pAccGesture = null;
352 delete __pSettingLoader;
353 __pSettingLoader = null;
354 delete pGuidePopupTimer;
355 pGuidePopupTimer = null;
356 delete pAutoReadingTimer;
357 pAutoReadingTimer = null;
359 AccessibilityScreenReaderStatus
360 _AccessibilityManager::GetTtsStatus(void)
364 return __pTtsPlayer->GetStatus();
366 return ACCESSIBILITY_SCREEN_READER_STATUS_ERROR;
369 _AccessibilityManager::ReadContent(const Tizen::Base::String& content)
373 // ShowPopup(content);
374 __pTtsPlayer->ReadGrammar(content);
379 _AccessibilityManager::ReadElement(_AccessibilityAutoReadingMode mode)
382 int count = __candidateList.GetCount();
387 _AccessibilityElement* pElement = null;
390 if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM)
392 r = __candidateList.GetAt(0, pElement);
394 else if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM_OF_CONTENTS)
396 if(__pTitleElement && __pTitleElement->IsUpdated())
400 for (int i = 0 ; i < count ; i++)
402 r = __candidateList.GetAt(i, pElement);
403 if (r == E_SUCCESS && pElement)
405 if (pElement->GetParent()->GetPriority() < ACCESSIBILITY_PRIORITY_TOP)
412 else //_ACCESSIBILITY_AUTO_READING_MODE_CURRENT_FOCUS
414 if (IsContainerValid(__pTargetContainer))
416 pElement = __pTargetElement;
420 if (r != E_SUCCESS || pElement == null)
422 SysLog(NID_UI, "cause 1");
425 if (mode == _ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM && __pTitleElement == pElement && !(__pTitleElement->IsUpdated()))
427 SysLog(NID_UI, "cause 2");
430 __pTitleElement = pElement;
431 DrawFocusUi(*pElement);
432 __pTargetContainer = pElement->GetParent();
433 __pTargetElement = pElement;
434 __targetControlHandle = __pTargetContainer->GetOwner().GetHandle();
435 ReadElement(*pElement);
439 _AccessibilityManager::ReadElement(const _AccessibilityElement& element)
443 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
446 for (int i = 0;i<pList->GetCount();i++)
448 _IAccessibilityListener* pListener = null;
449 if (pList->GetAt(i, pListener) == E_SUCCESS)
451 pListener->OnAccessibilityReadingElement(*__pTargetContainer, element);
458 __pTtsPlayer->ReadGrammar(element.GetReadingContents());
463 _AccessibilityManager::ReadingStop(void)
468 _AccessibilityManager::ReadingPause(void)
473 _AccessibilityManager::ReadingResume(void)
479 _AccessibilityManager::OnStartReading(const Tizen::Base::String& grammar)
483 _AccessibilityManager::HidePopup(void)
485 if (__readingPopupParentHandle.IsValid())
489 __pReadingVe->Destroy();
497 pGuidePopupTimer->Stop();
500 _AccessibilityManager::ShowPopup(const String& content)
502 if (content.IsEmpty())
508 if (String("i686_emulated") != sysInfo.machine)
512 Canvas* pCanvas = null;
513 Bitmap* pBgBitmap = null;
514 EnrichedText* pEnrichedTitleText = null;
515 EnrichedText* pText = null;
516 Frame* pFrame = null;
518 if (__readingPopupParentHandle.IsValid())
522 __pReadingVe->Destroy();
531 pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
535 int accesibilityVisualElementLevel = 3000;
536 result r = E_SUCCESS;
537 _Window* pWindow = _ControlManager::GetInstance()->GetTopVisibleWindow();
538 VisualElement* pRootVe = pWindow->GetVisualElement();
540 __pReadingVe = new (std::nothrow) VisualElement();
541 SysTryCatch(NID_UI, __pReadingVe, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
543 r = __pReadingVe->Construct();
544 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
545 __pReadingVe->SetName("Accessibility reading popup");
546 __pReadingVe->SetImplicitAnimationEnabled(false);
547 _VisualElementImpl::GetInstance(*__pReadingVe)->SetZOrderGroup(accesibilityVisualElementLevel);
548 pRootVe->AttachChild(*__pReadingVe);
549 __readingPopupParentHandle = pWindow->GetHandle();
554 result r = E_SUCCESS;
556 float titleFontSize = 0;
557 float textFontSize = 0;
558 float popupWidth = 0;
560 float bottomMargin = 0;
561 float sideMargin = 0;
562 float titleHeight = 0;
563 float textTopMargin = 0;
564 float textHeight = 0;
566 Color titleTextColor;
567 Color pointTextColor;
569 TextElement* pElement = null;
571 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, titleFontSize);
572 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
573 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, textFontSize);
574 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
575 r = GET_SHAPE_CONFIG(ACCESSIBILITY::POPUP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, popupWidth);
576 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
577 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, topMargin);
578 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
579 r = GET_SHAPE_CONFIG(ACCESSIBILITY::BOTTON_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, bottomMargin);
580 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
581 r = GET_SHAPE_CONFIG(ACCESSIBILITY::SIDE_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, sideMargin);
582 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
583 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, titleHeight);
584 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
585 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, textTopMargin);
586 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
587 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_HEGIHT, _CONTROL_ORIENTATION_PORTRAIT, textHeight);
588 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
589 r = GET_COLOR_CONFIG(ACCESSIBILITY::TITLE_TEXT, titleTextColor);
590 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
591 r = GET_COLOR_CONFIG(ACCESSIBILITY::POINT_TEXT, pointTextColor);
592 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
593 r = GET_COLOR_CONFIG(ACCESSIBILITY::TEXT, textColor);
594 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
595 r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::POPUP_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pBgBitmap);
596 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
599 r = titleFont.Construct(FONT_STYLE_PLAIN, titleFontSize);
600 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
602 r = textFont.Construct(FONT_STYLE_PLAIN, textFontSize);
603 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
605 pEnrichedTitleText = new (std::nothrow) EnrichedText;
606 SysTryCatch(NID_UI, pEnrichedTitleText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
607 pEnrichedTitleText->Construct(FloatDimension(popupWidth-sideMargin*2, titleHeight));
609 pText = new (std::nothrow) EnrichedText;
610 SysTryCatch(NID_UI, pText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
611 pText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
613 pElement = new (std::nothrow) TextElement;
614 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
615 r = pElement->Construct(L"Screen reading...");
621 pElement->SetTextColor(titleTextColor);
622 pElement->SetFont(titleFont);
623 r = pEnrichedTitleText->Add(*pElement);
624 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
625 pEnrichedTitleText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
626 pEnrichedTitleText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
627 pEnrichedTitleText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
628 pEnrichedTitleText->SetTextAbbreviationEnabled(true);
630 pElement = new (std::nothrow) TextElement;
631 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
632 r = pElement->Construct(content);
638 pElement->SetTextColor(textColor);
639 pElement->SetFont(textFont);
640 r = pText->Add(*pElement);
641 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
642 pText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
643 pText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
644 pText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
645 pText->SetTextAbbreviationEnabled(true);
649 float popupHeight = topMargin + bottomMargin + titleHeight + textTopMargin + textHeight;
651 FloatDimension screen = Tizen::Ui::_ControlManager::GetInstance()->GetScreenSizeF();
652 __pReadingVe->SetBounds(FloatRectangle(x, y, popupWidth, popupHeight));
653 pCanvas = __pReadingVe->GetCanvasN();
654 SysTryCatch(NID_UI, pCanvas != null, , E_SYSTEM, "System error for accessibility popup");
655 pCanvas->DrawNinePatchedBitmap(FloatRectangle(0, 0, popupWidth, popupHeight), *pBgBitmap);
656 float drawingTextY = topMargin;
657 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedTitleText);
658 drawingTextY += textTopMargin + titleHeight;
659 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pText);
660 __pReadingVe->SetShowState(true);
661 __pReadingVe->SetFlushNeeded();
662 pGuidePopupTimer->SetElement(__pReadingVe);
670 if (pEnrichedTitleText)
672 pEnrichedTitleText->RemoveAll(true);
673 delete pEnrichedTitleText;
677 pText->RemoveAll(true);
685 _AccessibilityManager::ShowPopup()
687 if (__pTargetElement == null)
693 Frame* pFrame = null;
694 Canvas* pCanvas = null;
695 Bitmap* pBgBitmap = null;
696 EnrichedText* pEnrichedTitleText = null;
697 EnrichedText* pEnrichedNameText = null;
698 EnrichedText* pEnrichedLableText = null;
699 EnrichedText* pEnrichedTraitText = null;
700 EnrichedText* pEnrichedStatusText = null;
701 EnrichedText* pEnrichedHintText = null;
702 EnrichedText* pEnrichedValueText = null;
703 EnrichedText* pEnrichedBoundsText = null;
704 EnrichedText* pEnrichedAbsBoundsText = null;
705 TextElement* pElement = null;
706 FloatDimension screen;
708 if (String("i686_emulated") != sysInfo.machine)
713 if (__readingPopupParentHandle.IsValid())
717 __pReadingVe->Destroy();
726 pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
730 int accesibilityVisualElementLevel = 3000;
731 result r = E_SUCCESS;
732 _Window* pWindow = _ControlManager::GetInstance()->GetTopVisibleWindow();
733 VisualElement* pRootVe = pWindow->GetVisualElement();
734 __readingPopupParentHandle = pWindow->GetHandle();
735 __pReadingVe = new (std::nothrow) VisualElement();
736 SysTryCatch(NID_UI, __pReadingVe, , E_SYSTEM, "[E_SYSTEM] System error");
738 r = __pReadingVe->Construct();
739 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
740 __pReadingVe->SetName("Accessibility reading popup");
741 __pReadingVe->SetImplicitAnimationEnabled(false);
742 _VisualElementImpl::GetInstance(*__pReadingVe)->SetZOrderGroup(accesibilityVisualElementLevel);
743 pRootVe->AttachChild(*__pReadingVe);
746 screen = _ControlManager::GetInstance()->GetScreenSizeF();
749 result r = E_SUCCESS;
751 float titleFontSize = 0;
752 float textFontSize = 0;
753 float popupWidth = 0;
755 float bottomMargin = 0;
756 float sideMargin = 0;
757 float titleHeight = 0;
758 float textTopMargin = 0;
759 float textHeight = 0;
761 Color titleTextColor;
762 Color pointTextColor;
765 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, titleFontSize);
766 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
767 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, textFontSize);
768 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
769 r = GET_SHAPE_CONFIG(ACCESSIBILITY::POPUP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, popupWidth);
770 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
771 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, topMargin);
772 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
773 r = GET_SHAPE_CONFIG(ACCESSIBILITY::BOTTON_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, bottomMargin);
774 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
775 r = GET_SHAPE_CONFIG(ACCESSIBILITY::SIDE_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, sideMargin);
776 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
777 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TITLE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, titleHeight);
778 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
779 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, textTopMargin);
780 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
781 r = GET_SHAPE_CONFIG(ACCESSIBILITY::TEXT_HEGIHT, _CONTROL_ORIENTATION_PORTRAIT, textHeight);
782 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
783 r = GET_COLOR_CONFIG(ACCESSIBILITY::TITLE_TEXT, titleTextColor);
784 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
785 r = GET_COLOR_CONFIG(ACCESSIBILITY::POINT_TEXT, pointTextColor);
786 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
787 r = GET_COLOR_CONFIG(ACCESSIBILITY::TEXT, textColor);
788 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
789 r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::POPUP_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pBgBitmap);
790 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
793 r = titleFont.Construct(FONT_STYLE_PLAIN, titleFontSize);
794 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
797 r = textFont.Construct(FONT_STYLE_PLAIN, textFontSize);
798 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
800 pEnrichedTitleText = new (std::nothrow) EnrichedText;
801 SysTryCatch(NID_UI, pEnrichedTitleText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
802 pEnrichedTitleText->Construct(FloatDimension(popupWidth-sideMargin*2, titleHeight));
804 pEnrichedNameText = new (std::nothrow) EnrichedText;
805 SysTryCatch(NID_UI, pEnrichedNameText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
806 pEnrichedNameText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
808 pEnrichedLableText = new (std::nothrow) EnrichedText;
809 SysTryCatch(NID_UI, pEnrichedLableText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
810 pEnrichedLableText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
812 pEnrichedTraitText = new (std::nothrow) EnrichedText;
813 SysTryCatch(NID_UI, pEnrichedTraitText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
814 pEnrichedTraitText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
816 pEnrichedStatusText = new (std::nothrow) EnrichedText;
817 SysTryCatch(NID_UI, pEnrichedStatusText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
818 pEnrichedStatusText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
820 pEnrichedHintText = new (std::nothrow) EnrichedText;
821 SysTryCatch(NID_UI, pEnrichedHintText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
822 pEnrichedHintText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
824 pEnrichedValueText = new (std::nothrow) EnrichedText;
825 SysTryCatch(NID_UI, pEnrichedValueText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
826 pEnrichedValueText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
828 pEnrichedBoundsText = new (std::nothrow) EnrichedText;
829 SysTryCatch(NID_UI, pEnrichedBoundsText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
830 pEnrichedBoundsText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
832 pEnrichedAbsBoundsText = new (std::nothrow) EnrichedText;
833 SysTryCatch(NID_UI, pEnrichedAbsBoundsText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
834 pEnrichedAbsBoundsText->Construct(FloatDimension(popupWidth-sideMargin*2, textHeight));
836 pElement = new (std::nothrow) TextElement;
837 r = pElement->Construct(L"Screen reading...");
838 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
839 pElement->SetTextColor(titleTextColor);
840 pElement->SetFont(titleFont);
841 r = pEnrichedTitleText->Add(*pElement);
843 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
844 pEnrichedTitleText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
845 pEnrichedTitleText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
846 pEnrichedTitleText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
847 pEnrichedTitleText->SetTextAbbreviationEnabled(true);
849 pElement = new (std::nothrow) TextElement;
850 r = pElement->Construct(L"Name: ");
851 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
853 pElement->SetTextColor(pointTextColor);
854 pElement->SetFont(textFont);
855 r = pEnrichedNameText->Add(*pElement);
856 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
858 if (!(__pTargetElement->GetName().IsEmpty()))
860 pElement = new (std::nothrow) TextElement;
861 r = pElement->Construct(__pTargetElement->GetName());
862 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
864 pElement->SetTextColor(textColor);
865 pElement->SetFont(textFont);
866 r = pEnrichedNameText->Add(*pElement);
867 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
868 SysLog(NID_UI, " Name :::::: %s", _StringConverter::CopyToCharArrayN(__pTargetElement->GetName()));
870 pEnrichedNameText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
871 pEnrichedNameText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
872 pEnrichedNameText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
873 pEnrichedNameText->SetTextAbbreviationEnabled(true);
875 pElement = new (std::nothrow) TextElement;
876 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
877 r = pElement->Construct(L"Label: ");
878 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
880 pElement->SetTextColor(pointTextColor);
881 pElement->SetFont(textFont);
882 r = pEnrichedLableText->Add(*pElement);
883 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
885 if (!(__pTargetElement->GetLabel().IsEmpty()))
887 pElement = new (std::nothrow) TextElement;
888 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
889 r = pElement->Construct(__pTargetElement->GetLabel());
890 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
892 pElement->SetTextColor(textColor);
893 pElement->SetFont(textFont);
894 r = pEnrichedLableText->Add(*pElement);
895 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
896 SysLog(NID_UI, " Label :::::: %s", _StringConverter::CopyToCharArrayN(__pTargetElement->GetLabel()));
898 pEnrichedLableText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
899 pEnrichedLableText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
900 pEnrichedLableText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
901 pEnrichedLableText->SetTextAbbreviationEnabled(true);
903 pElement = new (std::nothrow) TextElement;
904 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
905 r = pElement->Construct(L"Trait: ");
906 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
908 pElement->SetTextColor(pointTextColor);
909 pElement->SetFont(textFont);
910 r = pEnrichedTraitText->Add(*pElement);
911 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
912 if (!(__pTargetElement->GetTraitString().IsEmpty()))
914 pElement = new (std::nothrow) TextElement;
915 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
916 r = pElement->Construct(__pTargetElement->GetTraitString());
917 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
919 pElement->SetTextColor(textColor);
920 pElement->SetFont(textFont);
921 r = pEnrichedTraitText->Add(*pElement);
922 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
924 pEnrichedTraitText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
925 pEnrichedTraitText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
926 pEnrichedTraitText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
927 pEnrichedTraitText->SetTextAbbreviationEnabled(true);
929 pElement = new (std::nothrow) TextElement;
930 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
931 r = pElement->Construct(L"Status: ");
932 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
934 pElement->SetTextColor(pointTextColor);
935 pElement->SetFont(textFont);
936 r = pEnrichedStatusText->Add(*pElement);
937 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
938 if (!(__pTargetElement->GetStatus().IsEmpty()))
940 pElement = new (std::nothrow) TextElement;
941 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
942 r = pElement->Construct(__pTargetElement->GetStatus());
943 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
945 pElement->SetTextColor(textColor);
946 pElement->SetFont(textFont);
947 r = pEnrichedStatusText->Add(*pElement);
948 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
950 pEnrichedStatusText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
951 pEnrichedStatusText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
952 pEnrichedStatusText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
953 pEnrichedStatusText->SetTextAbbreviationEnabled(true);
955 pElement = new (std::nothrow) TextElement;
956 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
957 r = pElement->Construct(L"Hint: ");
958 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
960 pElement->SetTextColor(pointTextColor);
961 pElement->SetFont(textFont);
962 r = pEnrichedHintText->Add(*pElement);
963 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
964 if (!(__pTargetElement->GetHint().IsEmpty()))
966 pElement = new (std::nothrow) TextElement;
967 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
968 r = pElement->Construct(__pTargetElement->GetHint());
969 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
971 pElement->SetTextColor(textColor);
972 pElement->SetFont(textFont);
973 r = pEnrichedHintText->Add(*pElement);
974 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
976 pEnrichedHintText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
977 pEnrichedHintText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
978 pEnrichedHintText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
979 pEnrichedHintText->SetTextAbbreviationEnabled(true);
981 pElement = new (std::nothrow) TextElement;
982 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
983 r = pElement->Construct(L"Value: ");
984 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
986 pElement->SetTextColor(pointTextColor);
987 pElement->SetFont(textFont);
988 r = pEnrichedValueText->Add(*pElement);
989 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
990 if (!(__pTargetElement->GetValue().IsEmpty()))
992 pElement = new (std::nothrow) TextElement;
993 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
994 r = pElement->Construct(__pTargetElement->GetValue());
995 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
997 pElement->SetTextColor(textColor);
998 pElement->SetFont(textFont);
999 r = pEnrichedValueText->Add(*pElement);
1000 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1002 pEnrichedValueText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
1003 pEnrichedValueText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
1004 pEnrichedValueText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
1005 pEnrichedValueText->SetTextAbbreviationEnabled(true);
1007 pElement = new (std::nothrow) TextElement;
1008 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
1009 r = pElement->Construct(L"Bound: ");
1010 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1012 pElement->SetTextColor(pointTextColor);
1013 pElement->SetFont(textFont);
1014 r = pEnrichedBoundsText->Add(*pElement);
1015 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1017 pElement = new (std::nothrow) TextElement;
1018 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
1019 FloatRectangle rect = __pTargetElement->GetBounds();
1021 rectString.Format(40, L"x:%.1f, y:%.1f, w:%.1f, h:%.1f", rect.x, rect.y, rect.width, rect.height);
1022 r = pElement->Construct(rectString);
1023 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1025 pElement->SetTextColor(textColor);
1026 pElement->SetFont(textFont);
1027 r = pEnrichedBoundsText->Add(*pElement);
1028 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1029 pEnrichedBoundsText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
1030 pEnrichedBoundsText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
1031 pEnrichedBoundsText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
1032 pEnrichedBoundsText->SetTextAbbreviationEnabled(true);
1034 pElement = new (std::nothrow) TextElement;
1035 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
1036 r = pElement->Construct(L"AbsBound: ");
1037 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1039 pElement->SetTextColor(pointTextColor);
1040 pElement->SetFont(textFont);
1041 r = pEnrichedAbsBoundsText->Add(*pElement);
1042 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1044 pElement = new (std::nothrow) TextElement;
1045 SysTryCatch(NID_UI, pElement != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
1046 rect = __pTargetElement->GetAbsoluteBounds();
1048 rectString.Format(40, L"x:%.1f, y:%.1f, w:%.1f, h:%.1f", rect.x, rect.y, rect.width, rect.height);
1049 r = pElement->Construct(rectString);
1050 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1052 pElement->SetTextColor(textColor);
1053 pElement->SetFont(textFont);
1054 r = pEnrichedAbsBoundsText->Add(*pElement);
1055 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "System error for accessibility popup");
1056 pEnrichedAbsBoundsText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
1057 pEnrichedAbsBoundsText->SetVerticalAlignment(TEXT_ALIGNMENT_TOP);
1058 pEnrichedAbsBoundsText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
1059 pEnrichedAbsBoundsText->SetTextAbbreviationEnabled(true);
1063 float popupHeight = topMargin + bottomMargin + titleHeight + textTopMargin + textHeight * 8;
1064 Frame* pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
1065 Form* pForm = pFrame->GetCurrentForm();
1066 FloatDimension screen = Tizen::Ui::_ControlManager::GetInstance()->GetScreenSizeF();
1068 if (pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT
1069 || pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE)
1071 x = (screen.width-popupWidth) / 2;
1072 if (rect.y < screen.height/2)
1074 y = (screen.height/2 - popupHeight) /2 + screen.height/2;
1078 y = (screen.height/2 - popupHeight) /2;
1083 y = (screen.width-popupHeight) / 2;
1084 if (rect.x < screen.height/2)
1086 x = (screen.height/2 - popupWidth) /2 + screen.height/2;
1090 x = (screen.height/2 - popupWidth) /2;
1094 __pReadingVe->SetBounds(FloatRectangle(x, y, popupWidth, popupHeight));
1095 pCanvas = __pReadingVe->GetCanvasN();
1096 SysTryCatch(NID_UI, pCanvas != null, , E_SYSTEM, "System error for accessibility popup");
1097 pCanvas->DrawNinePatchedBitmap(FloatRectangle(0, 0, popupWidth, popupHeight), *pBgBitmap);
1098 float drawingTextY = topMargin;
1099 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedTitleText);
1100 drawingTextY += textTopMargin + titleHeight;
1101 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedNameText);
1102 drawingTextY += textHeight;
1103 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedLableText);
1104 drawingTextY += textHeight;
1105 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedTraitText);
1106 drawingTextY += textHeight;
1107 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedStatusText);
1108 drawingTextY += textHeight;
1109 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedHintText);
1110 drawingTextY += textHeight;
1111 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedValueText);
1112 drawingTextY += textHeight;
1113 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedBoundsText);
1114 drawingTextY += textHeight;
1115 pCanvas->DrawText(FloatPoint(sideMargin, drawingTextY), *pEnrichedAbsBoundsText);
1116 __pReadingVe->SetShowState(true);
1117 __pReadingVe->SetFlushNeeded();
1118 pGuidePopupTimer->SetElement(__pReadingVe);
1127 if (pEnrichedTitleText)
1129 pEnrichedTitleText->RemoveAll(true);
1130 delete pEnrichedTitleText;
1132 if (pEnrichedNameText)
1134 pEnrichedNameText->RemoveAll(true);
1135 delete pEnrichedNameText;
1137 if (pEnrichedLableText)
1139 pEnrichedLableText->RemoveAll(true);
1140 delete pEnrichedLableText;
1142 if (pEnrichedTraitText)
1144 pEnrichedTraitText->RemoveAll(true);
1145 delete pEnrichedTraitText;
1147 if (pEnrichedStatusText)
1149 pEnrichedStatusText->RemoveAll(true);
1150 delete pEnrichedStatusText;
1152 if (pEnrichedHintText)
1154 pEnrichedHintText->RemoveAll(true);
1155 delete pEnrichedHintText;
1157 if (pEnrichedValueText)
1159 pEnrichedValueText->RemoveAll(true);
1160 delete pEnrichedValueText;
1162 if (pEnrichedBoundsText)
1164 pEnrichedBoundsText->RemoveAll(true);
1165 delete pEnrichedBoundsText;
1167 if (pEnrichedAbsBoundsText)
1169 pEnrichedAbsBoundsText->RemoveAll(true);
1170 delete pEnrichedAbsBoundsText;
1177 _AccessibilityManager::OnFinishReading(const Tizen::Base::String& grammar)
1180 if (!IsContainerValid(__pTargetContainer))
1184 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
1187 for (int i = 0;i<pList->GetCount();i++)
1189 _IAccessibilityListener* pListener = null;
1190 if (pList->GetAt(i, pListener) == E_SUCCESS)
1192 if (__pTargetElement)
1194 pListener->OnAccessibilityReadElement(*__pTargetContainer, *__pTargetElement);
1205 _AccessibilityManager::GetCurrentGrammar(void)
1210 _AccessibilityManager::AddContainer(const _AccessibilityContainer& container)
1212 __containerList.Add(&const_cast<_AccessibilityContainer&>(container));
1213 if(__mode == MODE_FOCUS_MOVE)
1215 SetGestureMode(MODE_TAP);
1220 _AccessibilityManager::RemoveContainer(const _AccessibilityContainer& container)
1222 __containerList.Remove(&const_cast<_AccessibilityContainer&>(container));
1223 if(__mode == MODE_FOCUS_MOVE)
1225 SetGestureMode(MODE_TAP);
1227 if (__pTargetContainer == &container)
1229 if(__pTargetContainer)
1231 __pTargetContainer->SetCurrentFocusedElement(null);
1233 __pTargetContainer = null;
1234 __pTargetElement = null;
1240 _AccessibilityManager::MakeList(void)
1244 DownVisitor(_Control& control, LinkedListT<_Control*>& list)
1246 LinkedListT<_Control*> _list;
1247 int count = control.GetChildCount();
1248 _Control* pControl = null;
1249 for (int i = 0; i < count ; i++)
1251 pControl = control.GetChild(i);
1254 _list.Add(pControl);
1257 _AccessibilityItemComparer<_Control*> comparer;
1258 _list.Sort(comparer);
1260 list.IndexOf(&control, index);
1261 list.InsertItemsFrom(_list,index+1);
1262 for (int i = 0; i < count ; i++)
1264 pControl = control.GetChild(i);
1265 DownVisitor(*pControl, list);
1269 if ( !__needRefreshItem && GetGestureMode() == MODE_FOCUS_MOVE)
1271 __needRefreshItem = false;
1274 __needRefreshItem = false;
1275 result r = E_SUCCESS;
1277 _Control* pControl = null;
1278 _AccessibilityContainer* pContainer = null;
1279 _TouchManager* pTouchManager = _TouchManager::GetInstance();
1280 LinkedListT<_Control*> controlList;
1281 LinkedListT<_AccessibilityElement*> elementPositionList;
1282 LinkedListT<_AccessibilityElement*> elementPositionByControlList;
1283 __candidateList.RemoveAll();
1287 pControl = pTouchManager->GetCapturedControl();
1290 controlList.Add(pControl);
1294 if (pControl == null)
1296 pControl = static_cast<_Control*>(_ControlManager::GetInstance()->GetWindow(_ControlManager::GetInstance()->GetWindowCount() - 1));
1297 controlList.Add(pControl);
1299 DownVisitor(*pControl, controlList);
1300 count = controlList.GetCount();
1301 Dimension screen = _ResourceManager::GetInstance()->GetLogicalScreenSizen();
1302 int margin = _ControlManager::GetInstance()->GetOrientation() == _CONTROL_ORIENTATION_PORTRAIT ? screen.width : screen.height;
1304 for(int i = 0 ; i < count ; i++)
1306 if (controlList.GetAt(i, pControl) == E_SUCCESS)
1308 FloatRectangle rect = pControl->GetAbsoluteBoundsF();
1309 if (rect.x + rect.width <= 0.0f || (rect.x) >= margin)
1311 bool inside = false;
1312 _Control* _pControl = pControl;
1315 if(dynamic_cast<_IScrollableContainer*>(_pControl))
1317 if (rect.x + rect.width > 0.0f && (rect.x) < margin)
1323 _pControl = _pControl->GetParent();
1327 _AccessibilityContainer* pContainer = pControl->GetAccessibilityContainer()->GetRootParent();
1328 if(pContainer != null)
1330 rect = pContainer->GetAbsoluteBounds();
1331 if (rect.x + rect.width > 0.0f && (rect.x) < margin)
1339 controlList.Remove(pControl);
1346 for (int i = 0; i < controlList.GetCount() ; i++)
1348 if (controlList.GetAt(i, pControl) == E_SUCCESS)
1350 pContainer = pControl->GetAccessibilityContainer();
1351 if (pContainer == null)
1355 if (IsContainerValid(pContainer))
1357 pContainer->SortElements();
1358 pContainer->GetElements(elementPositionList);
1359 pContainer->GetElements(elementPositionByControlList);
1364 _ElementComparer<_AccessibilityElement*> comparer;
1365 elementPositionList.Sort(comparer);
1366 count = elementPositionList.GetCount();
1368 _AccessibilityElement* pPositionListElement = null;
1369 _AccessibilityElement* pPositionByControlListElement = null;
1370 while (!done && index < count && index < count)
1373 r = elementPositionList.GetAt(index, pPositionListElement);
1380 r = elementPositionByControlList.GetAt(index, pPositionByControlListElement);
1387 if (pPositionListElement == pPositionByControlListElement)
1389 __candidateList.Add(pPositionByControlListElement);
1394 if (pPositionListElement->GetParent()->GetPriority() > pPositionByControlListElement->GetParent()->GetPriority())
1396 elementPositionByControlList.Remove(pPositionListElement);
1397 elementPositionByControlList.InsertAt(pPositionListElement, index);
1398 __candidateList.Add(pPositionListElement);
1402 else if (pPositionListElement->GetParent()->GetPriority() < pPositionByControlListElement->GetParent()->GetPriority())
1404 elementPositionList.Remove(pPositionByControlListElement);
1405 elementPositionList.InsertAt(pPositionByControlListElement, index);
1406 __candidateList.Add(pPositionByControlListElement);
1411 if (pPositionListElement->GetAbsoluteBounds().y > pPositionByControlListElement->GetAbsoluteBounds().y)
1413 elementPositionList.Remove(pPositionByControlListElement);
1414 elementPositionList.InsertAt(pPositionByControlListElement, index);
1415 __candidateList.Add(pPositionByControlListElement);
1419 else if (pPositionListElement->GetAbsoluteBounds().y < pPositionByControlListElement->GetAbsoluteBounds().y)
1421 pControl = &(pPositionByControlListElement->GetParent()->GetOwner());
1424 rect = pControl->GetAbsoluteBounds();
1431 if(pControl->GetParent())
1433 pControl = pControl->GetParent();
1443 controlList.RemoveAll();
1444 controlList.Add(pControl);
1445 DownVisitor(*pControl, controlList);
1446 int _count = controlList.GetCount();
1447 LinkedListT<_AccessibilityElement*> _elementPositionList;
1448 for (int i = 0; i < _count ; i++)
1450 if (controlList.GetAt(i, pControl) == E_SUCCESS)
1452 pContainer = pControl->GetAccessibilityContainer();
1453 if (pContainer == null)
1457 if (IsContainerValid(pContainer))
1459 pContainer->GetElements(_elementPositionList);
1463 _elementPositionList.Sort(comparer);
1464 _count = _elementPositionList.GetCount();
1465 _AccessibilityElement* pElement = null;
1466 for (int i = 0 ; i < _count ; i++)
1468 r = _elementPositionList.GetAt(i, pElement);
1473 if (__candidateList.Contains(pElement))
1477 __candidateList.Add(pElement);
1478 elementPositionByControlList.Remove(pElement);
1479 elementPositionByControlList.InsertAt(pElement, index);
1486 elementPositionList.Remove(pPositionByControlListElement);
1487 elementPositionList.InsertAt(pPositionByControlListElement, index);
1488 elementPositionByControlList.Remove(pPositionByControlListElement);
1489 elementPositionByControlList.InsertAt(pPositionByControlListElement, index);
1490 __candidateList.Add(pPositionByControlListElement);
1496 count = __candidateList.GetCount();
1497 SysLog(NID_UI, "Accessibility element candidate count : %d", count);
1502 _AccessibilityElement* pElement = null;
1503 _AccessibilityElement* pElement2 = null;
1504 int selectedHeader = -1;
1505 int startHeader = -1;
1507 int selectedFooter = -1;
1508 int startFooter = -1;
1510 for (int i = 0 ; i < count ; i++)
1512 r = __candidateList.GetAt(i, pElement);
1513 if(pElement->GetParent()->GetPriority() == ACCESSIBILITY_PRIORITY_TOP)
1515 if (startHeader == -1)
1521 if(pElement->GetParent()->GetPriority() == ACCESSIBILITY_PRIORITY_BOTTOM)
1523 if (startFooter == -1)
1530 if(startHeader != -1 && endHeader - startHeader > 0)
1532 for(int i = startHeader; i <= endHeader ; i++)
1534 r = __candidateList.GetAt(i, pElement);
1540 for(int j = i +1 ; j <= endHeader; j++)
1542 r = __candidateList.GetAt(j, pElement2);
1547 if(pElement->GetAbsoluteBounds().x > pElement2->GetAbsoluteBounds().x)
1549 pElement = pElement2;
1553 if(selectedHeader != i)
1555 __candidateList.Remove(pElement);
1556 __candidateList.InsertAt(pElement, i);
1560 if(startFooter != -1 && endFooter - startFooter > 0)
1562 for(int i = startFooter; i <= endFooter ; i++)
1564 r = __candidateList.GetAt(i, pElement);
1570 for(int j = i +1 ; j <= endFooter; j++)
1572 r = __candidateList.GetAt(j, pElement2);
1577 if(pElement->GetAbsoluteBounds().x > pElement2->GetAbsoluteBounds().x)
1579 pElement = pElement2;
1583 if(selectedFooter != i)
1585 __candidateList.Remove(pElement);
1586 __candidateList.InsertAt(pElement, i);
1594 _AccessibilityManager::MakeList(_AccessibilityContainer* pContainer)
1596 if (pContainer->GetOwner().IsVisible() && pContainer->IsActivated())
1598 pContainer->GetElements(__candidateList);
1600 _Control* pControl = &(pContainer->GetOwner());
1601 int count = pControl->GetChildCount();
1602 for (int i = 0 ; i<count;i++)
1604 _Control* pChildControl = pControl->GetChild(i);
1607 MakeList(pChildControl->GetAccessibilityContainer());
1613 _AccessibilityManager::MoveFocus(_AccessibilityFocusDirection direction)
1615 if (direction == _ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS
1616 || direction == _ACCESSIBILITY_FOCUS_DIRECTION_NEXT)
1625 int count = __candidateList.GetCount();
1630 SysLog(NID_UI, "count ", count);
1631 result r = E_SUCCESS;
1633 _AccessibilityElement* pElement = null;
1634 _AccessibilityContainer* pContainer = null;
1635 bool focusManaged = false;
1636 if (IsContainerValid(__pTargetContainer))
1638 r = __candidateList.IndexOf(__pTargetElement, 0, index);
1642 __pTargetElement = null;
1643 if(__pTargetContainer)
1645 __pTargetContainer->SetCurrentFocusedElement(null);
1647 __pTargetContainer = null;
1652 if ((__pTargetContainer->MoveFocus(direction)))
1654 pElement = __pTargetContainer->GetCurrentFocusedElement();
1655 focusManaged = true;
1664 if (index > count - 1)
1668 __candidateList.GetAt(index, pElement);
1669 if (pElement->GetParent()->IsFocusManaged())
1671 if ((pElement->GetParent()->MoveFocus(direction)))
1673 focusManaged = true;
1681 SysTryReturn(NID_UI, __candidateList.GetAt(0, pElement) == E_SUCCESS, false, E_SUCCESS, "[E_SUCCESS] Candidates are not exist.");
1685 pContainer = pElement->GetParent();
1686 IListT<_IAccessibilityListener*>* pListenerList = pContainer->GetListenerListN();
1689 int listenerCount = pListenerList->GetCount();
1690 if (listenerCount > 0)
1692 for (int i = 0;i<listenerCount;i++)
1694 _IAccessibilityListener* pListener = null;
1695 if (pListenerList->GetAt(i, pListener) == E_SUCCESS)
1697 if (pListener->OnAccessibilityItemRefreshed(*pContainer, *pElement, direction) == true)
1699 return MoveFocus(direction);
1704 delete pListenerList;
1705 pListenerList = null;
1708 if (__pTargetContainer)
1710 pListenerList = __pTargetContainer->GetListenerListN();
1713 int listenerCount = pListenerList->GetCount();
1714 if (listenerCount > 0)
1716 for (int i = 0;i<listenerCount;i++)
1718 _IAccessibilityListener* pListener = null;
1719 if (pListenerList->GetAt(i, pListener) == E_SUCCESS)
1721 pListener->OnAccessibilityFocusOut(*__pTargetContainer, *__pTargetElement);
1725 delete pListenerList;
1726 pListenerList = null;
1729 if(__pTargetContainer)
1731 __pTargetContainer->SetCurrentFocusedElement(null);
1735 __pTargetElement = pElement;
1736 __pTargetContainer = pContainer;
1737 __targetControlHandle = pContainer->GetOwner().GetHandle();
1743 __pTargetElement = pElement;
1744 __pTargetContainer = pContainer;
1745 __targetControlHandle = pContainer->GetOwner().GetHandle();
1746 pListenerList = __pTargetContainer->GetListenerListN();
1749 int listenerCount = pListenerList->GetCount();
1750 if (listenerCount > 0)
1752 for (int i = 0;i<listenerCount;i++)
1754 _IAccessibilityListener* pListener = null;
1755 if (pListenerList->GetAt(i, pListener) == E_SUCCESS)
1757 pListener->OnAccessibilityFocusIn(*__pTargetContainer, *__pTargetElement);
1758 DrawFocusUi(*__pTargetElement);
1759 if (direction == _ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS)
1761 pListener->OnAccessibilityFocusMovedPrevious(*__pTargetContainer, *__pTargetElement);
1763 else if (direction == _ACCESSIBILITY_FOCUS_DIRECTION_NEXT)
1765 pListener->OnAccessibilityFocusMovedNext(*__pTargetContainer, *__pTargetElement);
1773 DrawFocusUi(*__pTargetElement);
1775 delete pListenerList;
1776 pListenerList = null;
1777 ReadElement(*pElement);
1784 _AccessibilityManager::RequestToDrawFocusUi()
1786 if (__targetControlHandle.IsValid() && __pTargetContainer->IsContains(*__pTargetElement))
1789 DrawFocusUi(*__pTargetElement);
1794 _AccessibilityManager::RequestAutoReading(_AccessibilityAutoReadingMode mode)
1796 if(__screenReaderIsEnabled)
1798 if (mode == _ACCESSIBILITY_AUTO_READING_MODE_RESET)
1800 __pTitleElement = null;
1803 pAutoReadingTimer->Start(mode);
1808 _AccessibilityManager::SetTtsMode(_AccessibilityTtsMode mode)
1812 //__pTtsPlayer->SetMode(mode);
1817 _AccessibilityManager::SetGlobalFocusedElement(_AccessibilityElement& element)
1819 _AccessibilityElement* pElement = &element;
1820 if (!IsContainerValid(pElement->GetParent()))
1824 __pTargetContainer = pElement->GetParent();
1825 __pTargetElement = pElement;
1826 RequestAutoReading(_ACCESSIBILITY_AUTO_READING_MODE_CURRENT_FOCUS);
1830 _AccessibilityManager::EraseFocusUi(void)
1832 if (__focusedControlHandle.IsValid())
1836 __pFocusVe->Destroy();
1846 _AccessibilityManager::DrawFocusUi(const _AccessibilityElement& element)
1848 FloatRectangle rectangle = element.GetBounds();
1849 Canvas* pCanvas = null;
1851 _AccessibilityContainer* pContainer = element.GetParent();
1853 if (__focusedControlHandle.IsValid())
1857 __pFocusVe->Destroy();
1866 result r = E_SUCCESS;
1867 _Control* pControl = &const_cast<_Control&>(pContainer->GetOwner());
1868 _VisualElement* pControlVe = pControl->GetVisualElement();
1870 __pFocusVe = new (std::nothrow) VisualElement();
1871 SysTryCatch(NID_UI, __pFocusVe != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed");
1872 r = __pFocusVe->Construct();
1873 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
1875 __pFocusVe->SetName("Accessibility focus ui");
1876 __pFocusVe->SetImplicitAnimationEnabled(false);
1877 __focusedControlHandle = pControl->GetHandle();
1878 pControlVe->AttachChild(*__pFocusVe);
1882 __pFocusVe->SetBounds(FloatRectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height));
1883 pCanvas = __pFocusVe->GetCanvasN();
1884 SysTryCatch(NID_UI, pCanvas, , E_SYSTEM, "[E_SYSTEM] System error");
1885 pCanvas->SetBackgroundColor(0x00000000);
1887 Bitmap* pBitmap = null;
1888 result r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::FOCUS, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap);
1891 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pBitmap))
1893 r = pCanvas->DrawNinePatchedBitmap(Rectangle(0, 0, rectangle.width, rectangle.height), *pBitmap);
1894 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
1898 r = pCanvas->DrawBitmap(Rectangle(0, 0, rectangle.width, rectangle.height), *pBitmap);
1899 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
1903 __pFocusVe->SetShowState(true);
1906 pContainer ->SetCurrentFocusedElement(const_cast<_AccessibilityElement*>(&element));
1910 if (__focusedControlHandle.IsValid())
1914 __pFocusVe->Destroy();
1925 _AccessibilityManager::ProcessGesture(_AccessibilityGestureType type, const FloatPoint& point)
1929 case _ACCESSIBILITY_GESTURE_TYPE_FLICK_UP:
1930 case _ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT:
1931 if (MoveFocus(_ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS))
1933 SetGestureMode(MODE_FOCUS_MOVE);
1936 case _ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN:
1937 case _ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT:
1938 if (MoveFocus(_ACCESSIBILITY_FOCUS_DIRECTION_NEXT))
1940 SetGestureMode(MODE_FOCUS_MOVE);
1943 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_ONE_TAP:
1945 if (GetGestureMode() == MODE_FOCUS_MOVE)
1947 SetGestureMode(MODE_TAP);
1948 __candidateList.RemoveAll();
1950 _Control* pControl = null;
1951 Point pt((int)point.x, (int)point.y);
1952 _Window* pWindow = _ControlManager::GetInstance()->GetTopVisibleWindow();
1953 if (!(pWindow->IsLayoutChangable()))
1955 Rectangle topWindowAbsBounds = pWindow->GetAbsoluteBounds();
1956 pt.x = pt.x + topWindowAbsBounds.x;
1957 pt.y = pt.y + topWindowAbsBounds.y;
1959 pControl = _ControlManager::GetInstance()->GetTopmostTouchedControl(pt);
1960 if (pControl == null || !(pControl->GetAbsoluteBounds().Contains(pt)))
1964 _AccessibilityContainer* pAccContainer = pControl->GetAccessibilityContainer();
1965 while(!(pAccContainer->IsActivated()))
1967 _Control* _pControl = pAccContainer->GetOwner().GetParent();
1968 if (_pControl == null)
1972 pAccContainer = _pControl->GetAccessibilityContainer();
1973 if (pAccContainer == null)
1978 _AccessibilityElement* pElement = pAccContainer->Hit(pt);
1979 if (pElement == null)
1984 if (__pTargetElement == pElement)
1988 AccessibilityScreenReaderStatus status = __pTtsPlayer->GetStatus();
1989 if (status == ACCESSIBILITY_SCREEN_READER_STATUS_PLAYING)
1996 if (!(pAccContainer->MoveFocus(pt)))
2000 LinkedListT<_IAccessibilityListener*>* pList = null;
2001 if (IsContainerValid(__pTargetContainer))
2003 __pTargetContainer->ResetFocus();
2004 __pTargetContainer->GetOwner().Invalidate();
2005 pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
2008 int count = pList->GetCount();
2009 for (int i = 0;i<count;i++)
2011 _IAccessibilityListener* pListener = null;
2012 if (pList->GetAt(i, pListener) == E_SUCCESS)
2014 pListener->OnAccessibilityFocusOut(*__pTargetContainer, *__pTargetElement);
2020 if(__pTargetContainer)
2022 __pTargetContainer->SetCurrentFocusedElement(null);
2024 if (pAccContainer->IsFocusManaged())
2026 __pTargetContainer = pAccContainer;
2027 __targetControlHandle = pAccContainer->GetOwner().GetHandle();
2028 __pTargetElement = pElement;
2033 __pTargetContainer = pAccContainer;
2034 __targetControlHandle = pAccContainer->GetOwner().GetHandle();
2035 __pTargetElement = pElement;
2036 pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
2039 int count = pList->GetCount();
2040 for (int i = 0;i<count;i++)
2042 _IAccessibilityListener* pListener = null;
2043 if (pList->GetAt(i, pListener) == E_SUCCESS)
2045 pListener->OnAccessibilityFocusIn(*__pTargetContainer, *__pTargetElement);
2050 DrawFocusUi(*pElement);
2051 ReadElement(*pElement);
2055 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_DOUBLE_TAP:
2057 if (GetGestureMode() == MODE_FOCUS_MOVE)
2059 SetGestureMode(MODE_TAP);
2060 __candidateList.RemoveAll();
2062 if (__pTargetElement == null)
2066 _TouchManager* pTouchMgr = _TouchManager::GetInstance();
2067 _Control* _pControl = null;
2068 if (pTouchMgr == null)
2072 if (IsContainerValid(__pTargetContainer))
2074 _pControl = &(__pTargetContainer->GetOwner());
2080 if (_pControl == null)
2084 if (_pControl->GetEnableState() == false)
2086 ReadContent(L"Unavailable");
2089 if (__pTargetElement->GetSupportOperatingGesture())
2092 if (_SystemTimeImpl::GetTicks(tick) != E_SUCCESS)
2096 FloatRectangle rect = __pTargetElement->GetAbsoluteBounds();
2097 Point _point((int)(rect.x + rect.width/2), (int)(rect.y + rect.height/2));
2098 _UiTouchEvent pressedEvent(_pControl->GetHandle(), _TouchInfo(0, _TOUCH_PRESSED, _point, false, tick));
2099 _UiTouchEvent releasedEvent(_pControl->GetHandle(), _TouchInfo(0, _TOUCH_RELEASED, _point, false, tick+1));
2100 pressedEvent.SetAccessibilityEvent(true);
2101 releasedEvent.SetAccessibilityEvent(true);
2103 unsigned int pointId = 0;
2104 pointId = pTouchMgr->GeneratePointId(0);
2105 SysLog(NID_UI, "Accessibility manager generated touch pressed event. id: %d", pointId);
2106 _UiEventManager::GetInstance()->SendEvent(pressedEvent);
2107 pointId = pTouchMgr->GetPointId(0);
2108 SysLog(NID_UI, "Accessibility manager generated touch released event. id: %d", pointId);
2109 _UiEventManager::GetInstance()->SendEvent(releasedEvent);
2110 if (!IsContainerValid(__pTargetContainer))
2115 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
2118 int count = pList->GetCount();
2119 SysLog(NID_UI, "Accessibility manager called listeners. count : %d", count);
2120 for (int i = 0;i<count;i++)
2122 _IAccessibilityListener* pListener = null;
2123 if (pList->GetAt(i, pListener) == E_SUCCESS)
2125 pListener->OnAccessibilityActionPerformed(*__pTargetContainer, *__pTargetElement);
2133 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_LONGPRESS:
2135 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_PANNING_STARTED:
2136 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_PANNING_CHANGED:
2137 case _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_PANNING_FINISHED:
2139 case _ACCESSIBILITY_GESTURE_TYPE_VALUE_INCREASED:
2141 if (!IsContainerValid(__pTargetContainer))
2143 if (MoveFocus(_ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS))
2145 SetGestureMode(MODE_FOCUS_MOVE);
2150 bool returnValue = false;
2151 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
2154 int count = pList->GetCount();
2155 for (int i = 0;i<count;i++)
2157 _IAccessibilityListener* pListener = null;
2158 if (pList->GetAt(i, pListener) == E_SUCCESS)
2160 if(pListener->OnAccessibilityValueIncreased(*__pTargetContainer, *__pTargetElement) && returnValue == false)
2171 _Control* pControl = &(__pTargetContainer->GetOwner());
2172 if (pControl->GetEnableState() == false)
2174 ReadContent(L"Unavailable");
2180 if (MoveFocus(_ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS))
2182 SetGestureMode(MODE_FOCUS_MOVE);
2187 case _ACCESSIBILITY_GESTURE_TYPE_VALUE_DECREASED:
2189 if (!IsContainerValid(__pTargetContainer))
2191 if (MoveFocus(_ACCESSIBILITY_FOCUS_DIRECTION_NEXT))
2193 SetGestureMode(MODE_FOCUS_MOVE);
2197 bool returnValue = false;
2198 LinkedListT<_IAccessibilityListener*>* pList = static_cast<LinkedListT<_IAccessibilityListener*>*>(__pTargetContainer->GetListenerListN());
2201 int count = pList->GetCount();
2202 for (int i = 0;i<count;i++)
2204 _IAccessibilityListener* pListener = null;
2205 if (pList->GetAt(i, pListener) == E_SUCCESS)
2207 if(pListener->OnAccessibilityValueDecreased(*__pTargetContainer, *__pTargetElement) && returnValue == false)
2217 _Control* pControl = &(__pTargetContainer->GetOwner());
2218 if (pControl->GetEnableState() == false)
2220 ReadContent(L"Unavailable");
2226 if (MoveFocus(_ACCESSIBILITY_FOCUS_DIRECTION_NEXT))
2228 SetGestureMode(MODE_FOCUS_MOVE);
2233 case _ACCESSIBILITY_GESTURE_TYPE_TWO_FINGER_PANNING_STARTED:
2235 Point pt((int)point.x, (int)point.y);
2236 _Control* pControl = _ControlManager::GetInstance()->GetTopmostTouchedControl(pt);
2237 if (pControl == null)
2239 SysLog(NID_UI, "Two finger panning is started. but control is null");
2243 if (_SystemTimeImpl::GetTicks(tick) != E_SUCCESS)
2247 _UiTouchEvent pressedEvent(pControl->GetHandle(), _TouchInfo(0, _TOUCH_PRESSED, pt, false, tick));
2248 unsigned int pointId = 0;
2249 pointId = _TouchManager::GetInstance()->GeneratePointId(0);
2250 _UiEventManager::GetInstance()->SendEvent(pressedEvent);
2251 __pPanningControl = pControl;
2252 SetGestureMode(MODE_PANNING);
2253 SysLog(NID_UI, "Two finger panning is started. x:%d, y:%d", pt.x, pt.y);
2256 case _ACCESSIBILITY_GESTURE_TYPE_TWO_FINGER_PANNING_CHANGED:
2258 if (__pPanningControl == null || GetGestureMode() != MODE_PANNING)
2260 SetGestureMode(MODE_TAP);
2261 SysLog(NID_UI, "Two finger panning is started. but control is null");
2265 if (_SystemTimeImpl::GetTicks(tick) != E_SUCCESS)
2269 Point pt((int)point.x, (int)point.y);
2270 _UiTouchEvent movedEvent(__pPanningControl->GetHandle(), _TouchInfo(0, _TOUCH_MOVED, pt, false, tick));
2271 unsigned int pointId = 0;
2272 pointId = _TouchManager::GetInstance()->GetPointId(0);
2273 _UiEventManager::GetInstance()->SendEvent(movedEvent);
2274 SysLog(NID_UI, "Two finger panning is moved. x:%d, y:%d", pt.x, pt.y);
2277 case _ACCESSIBILITY_GESTURE_TYPE_TWO_FINGER_PANNING_FINISHED:
2279 if (__pPanningControl == null || GetGestureMode() != MODE_PANNING)
2281 SetGestureMode(MODE_TAP);
2282 SysLog(NID_UI, "Two finger panning is started. but control is null");
2286 if (_SystemTimeImpl::GetTicks(tick) != E_SUCCESS)
2290 Point pt((int)point.x, (int)point.y);
2291 _UiTouchEvent releasedEvent(__pPanningControl->GetHandle(), _TouchInfo(0, _TOUCH_RELEASED, pt, false, tick));
2292 unsigned int pointId = 0;
2293 pointId = _TouchManager::GetInstance()->GetPointId(0);
2294 _UiEventManager::GetInstance()->SendEvent(releasedEvent);
2295 __pPanningControl = null;
2296 SetGestureMode(MODE_TAP);
2297 SysLog(NID_UI, "Two finger panning is finished. x:%d, y:%d", pt.x, pt.y);
2306 Tizen::Base::_HandleT<_AccessibilityContainer>
2307 _AccessibilityManager::Register(_AccessibilityContainer* pObject)
2309 if (pObject == null)
2311 return Tizen::Base::_HandleT<_AccessibilityContainer>();
2314 return __objectManager.Register(*pObject);
2317 _AccessibilityManager::Unregister(Tizen::Base::_HandleT <_AccessibilityContainer> handle)
2319 __objectManager.Unregister(handle);
2324 _AccessibilityManager::OnChangedLocale(void)
2329 _AccessibilityManager::OnAccessibilityScreenReaderIsActivated(bool set)
2331 SysLog(NID_UI, "Screen reader status is changed. %d", set);
2332 if (__screenReaderIsEnabled == set)
2338 __screenReaderIsEnabled = set;
2339 if (__screenReaderIsEnabled)
2343 __pTtsPlayer->Activate();
2344 RequestAutoReading(_ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM);
2349 __pTtsPlayer->Deactivate();
2351 if(__pTargetContainer)
2353 __pTargetContainer->SetCurrentFocusedElement(null);
2355 __pTargetContainer = null;
2356 __pTargetElement = null;
2357 __pTitleElement = null;
2358 __candidateList.RemoveAll();
2360 __targetControlHandle = _ControlHandle();
2361 __focusedControlHandle = _ControlHandle();
2362 __readingPopupParentHandle = _ControlHandle();
2367 _AccessibilityManager::IsScreenReaderActivated(void)
2369 __screenReaderIsEnabled = __pSettingLoader->IsScreenReaderActivated();
2370 return __screenReaderIsEnabled;
2373 _AccessibilityManager::GetLargeFontSize(void)
2375 return __pSettingLoader->GetLargeFontSize();
2379 _AccessibilityManager::IsActivated()
2381 return __screenReaderIsEnabled;
2385 _AccessibilityManager::IsContainerValid(_AccessibilityContainer* pContainer)
2387 if (pContainer == null)
2391 if (!(pContainer->IsActivated()))
2395 if (!(pContainer->GetHandle().IsValid()))
2399 if (!(pContainer->GetOwner().GetHandle().IsValid()))
2403 if (!(pContainer->GetOwner().IsVisible()))
2407 if (!IsVisible(pContainer))
2414 _AccessibilityManager::IsTargetContainerValid(void)
2417 if (__pTargetContainer && __targetControlHandle.IsValid() && __pTargetContainer->GetOwner().IsVisible() && __pTargetContainer->GetOwner().GetRootWindow() && IsVisible(__pTargetContainer))
2424 _AccessibilityManager::IsFirstElementGainedFocus(void)
2426 int count = __candidateList.GetCount();
2431 if(__pTargetElement == null)
2435 _AccessibilityElement* pElement = null;
2436 if(__candidateList.GetAt(0, pElement) == E_SUCCESS)
2438 if(pElement == __pTargetElement)
2446 _AccessibilityManager::IsLastElementGainedFocus(void)
2448 int count = __candidateList.GetCount();
2453 if(__pTargetElement == null)
2457 _AccessibilityElement* pElement = null;
2458 if(__candidateList.GetAt(count-1, pElement) == E_SUCCESS)
2460 if(pElement == __pTargetElement)
2468 _AccessibilityManager::ResetFocusInformation(void)
2471 if(__pTargetContainer)
2473 __pTargetContainer->SetCurrentFocusedElement(null);
2475 __pTargetContainer = null;
2476 __pTargetElement = null;
2477 __pTitleElement = null;
2479 __targetControlHandle = _ControlHandle();
2480 __focusedControlHandle = _ControlHandle();
2481 __readingPopupParentHandle = _ControlHandle();
2484 _AccessibilityManager::IsVisible(_AccessibilityElement* pElement)
2486 return IsVisible(pElement->GetParent());
2489 _AccessibilityManager::IsVisible(_AccessibilityContainer* pContainer)
2491 _ControlManager* pControlManager = _ControlManager::GetInstance();
2492 int count = pControlManager->GetWindowCount();
2497 _Window* pTopWindow = pControlManager->GetWindow(count - 1);
2498 if (pTopWindow != pContainer->GetOwner().GetRootWindow())
2505 _AccessibilityManager::SetGestureMode(GestureMode mode)
2509 _AccessibilityManager::GestureMode
2510 _AccessibilityManager::GetGestureMode(void)
2516 _AccessibilityManager::NeedRefreshItem(void)
2518 __needRefreshItem = true;