From 968bd1b767d6309013560da4f247667e14ae0812 Mon Sep 17 00:00:00 2001 From: Bumseung Cho Date: Tue, 23 Apr 2013 16:29:19 +0900 Subject: [PATCH] Accessibility Bug Fix Change-Id: Ia66297d733f8ab7d6d97f1ee842f87262a082cc4 Signed-off-by: Bumseung Cho --- src/ui/FUi_AccessibilityContainer.cpp | 5 +++++ src/ui/FUi_AccessibilityManager.cpp | 24 +++++++++++++++++++++--- src/ui/FUi_AccessibilityTtsPlayer.cpp | 5 +++-- src/ui/inc/FUi_AccessibilityManager.h | 3 +++ 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/ui/FUi_AccessibilityContainer.cpp b/src/ui/FUi_AccessibilityContainer.cpp index 2a66294..8881e38 100644 --- a/src/ui/FUi_AccessibilityContainer.cpp +++ b/src/ui/FUi_AccessibilityContainer.cpp @@ -150,6 +150,7 @@ _AccessibilityContainer::AddElement(const _AccessibilityElement& element) { return E_SUCCESS; } + _AccessibilityManager::GetInstance()->NeedRefreshItem(); return __elementList.Add(&const_cast<_AccessibilityElement&>(element)); } @@ -165,6 +166,7 @@ _AccessibilityContainer::AddElements(const IListT<_AccessibilityElement*>& eleme pElement->SetParent(*this); } } + _AccessibilityManager::GetInstance()->NeedRefreshItem(); return __elementList.AddItems(elementList); } @@ -172,6 +174,7 @@ result _AccessibilityContainer::InsertElement(const _AccessibilityElement& element, int index) { const_cast<_AccessibilityElement&>(element).SetParent(*this); + _AccessibilityManager::GetInstance()->NeedRefreshItem(); return __elementList.InsertAt(&const_cast<_AccessibilityElement&>(element), index); } @@ -184,6 +187,7 @@ _AccessibilityContainer::RemoveElement(const _AccessibilityElement& element) { delete pElement; } + _AccessibilityManager::GetInstance()->NeedRefreshItem(); return r; } @@ -203,6 +207,7 @@ _AccessibilityContainer::RemoveAllElement() } } __elementList.RemoveAll(); + _AccessibilityManager::GetInstance()->NeedRefreshItem(); return E_SUCCESS; } diff --git a/src/ui/FUi_AccessibilityManager.cpp b/src/ui/FUi_AccessibilityManager.cpp index eec6b68..7ff4cad 100644 --- a/src/ui/FUi_AccessibilityManager.cpp +++ b/src/ui/FUi_AccessibilityManager.cpp @@ -269,6 +269,7 @@ _AccessibilityManager::_AccessibilityManager(void) , __pReadingVe(null) , __pFocusVe(null) , __pPanningControl(null) + , __needRefreshItem(false) { Initialize(); } @@ -497,6 +498,11 @@ _AccessibilityManager::ShowPopup(const String& content) EnrichedText* pText = null; Frame* pFrame = null; + if (__pReadingVe) + { + __pReadingVe->Destroy(); + __pReadingVe = null; + } if (__pReadingVe == null) { pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame(); @@ -678,7 +684,11 @@ _AccessibilityManager::ShowPopup() { return; } - + if (__pReadingVe) + { + __pReadingVe->Destroy(); + __pReadingVe = null; + } if (__pReadingVe == null) { pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame(); @@ -1134,7 +1144,7 @@ CATCH: void _AccessibilityManager::OnFinishReading(const Tizen::Base::String& grammar) { - if (__pReadingVe) + if (__pReadingVe) { __pReadingVe->SetShowState(false); } @@ -1217,10 +1227,12 @@ _AccessibilityManager::MakeList(void) } } }; - if (GetGestureMode() == MODE_FOCUS_MOVE) + if ( !__needRefreshItem && GetGestureMode() == MODE_FOCUS_MOVE) { + __needRefreshItem = false; return; } + __needRefreshItem = false; result r = E_SUCCESS; int count = 0; _Control* pControl = null; @@ -2205,5 +2217,11 @@ _AccessibilityManager::GetGestureMode(void) return __mode; } +void +_AccessibilityManager::NeedRefreshItem(void) +{ + __needRefreshItem = true; +} + }} //Tizen::Ui diff --git a/src/ui/FUi_AccessibilityTtsPlayer.cpp b/src/ui/FUi_AccessibilityTtsPlayer.cpp index c060045..b97a318 100644 --- a/src/ui/FUi_AccessibilityTtsPlayer.cpp +++ b/src/ui/FUi_AccessibilityTtsPlayer.cpp @@ -98,6 +98,8 @@ _AccessibilityTtsPlayer::Activate(void) ttsError = tts_set_utterance_completed_cb(__ttsHandle, TtsCompletedReceiver, (void*)(this)); SysTryReturnResult(NID_UI, ttsError == TTS_ERROR_NONE, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient."); + tts_set_mode(__ttsHandle, TTS_MODE_SCREEN_READER); + ttsError = tts_prepare(__ttsHandle); SysTryReturnResult(NID_UI, ttsError == TTS_ERROR_NONE, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient."); @@ -190,8 +192,7 @@ _AccessibilityTtsPlayer::TtsStateChangedReceiver(tts_h ttsHandle, tts_state_e pr ttsError = tts_foreach_supported_voices(ttsHandle, TtsSupportedLocaleListGetter, (void*)(static_cast<_AccessibilityTtsPlayer*>(pTtsInstance)->__pSupportedLocaleList)); SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to get supported voices", GetEngineErrorMessage(ttsError)); - tts_set_mode(ttsHandle, TTS_MODE_SCREEN_READER); - static_cast<_AccessibilityTtsPlayer*>(pTtsInstance)->__initialized = true; + static_cast<_AccessibilityTtsPlayer*>(pTtsInstance)->__initialized = true; static_cast<_AccessibilityTtsPlayer*>(pTtsInstance)->OnStatusChanged(ACCESSIBILITY_SCREEN_READER_STATUS_READY); } else if ((previousState == TTS_STATE_READY || previousState == TTS_STATE_PAUSED) && (currentState == TTS_STATE_PLAYING)) diff --git a/src/ui/inc/FUi_AccessibilityManager.h b/src/ui/inc/FUi_AccessibilityManager.h index f531702..f42b2a2 100644 --- a/src/ui/inc/FUi_AccessibilityManager.h +++ b/src/ui/inc/FUi_AccessibilityManager.h @@ -103,6 +103,8 @@ public: bool IsScreenReaderActivated(void); float GetLargeFontSize(void); + void NeedRefreshItem(void); + void RequestToDrawFocusUi(void); void RequestAutoReading(_AccessibilityAutoReadingMode mode); @@ -157,6 +159,7 @@ private: Tizen::Ui::Animations::VisualElement* __pReadingVe; Tizen::Ui::Animations::VisualElement* __pFocusVe; _Control* __pPanningControl; + bool __needRefreshItem; static bool __screenReaderIsEnabled; };//class _AccessibilityManager }} //Tizen::Ui -- 2.7.4