Accessibility Bug Fix
authorBumseung Cho <bumseung.cho@samsung.com>
Tue, 23 Apr 2013 07:29:19 +0000 (16:29 +0900)
committerBumseung Cho <bumseung.cho@samsung.com>
Tue, 23 Apr 2013 07:29:19 +0000 (16:29 +0900)
Change-Id: Ia66297d733f8ab7d6d97f1ee842f87262a082cc4
Signed-off-by: Bumseung Cho <bumseung.cho@samsung.com>
src/ui/FUi_AccessibilityContainer.cpp
src/ui/FUi_AccessibilityManager.cpp
src/ui/FUi_AccessibilityTtsPlayer.cpp
src/ui/inc/FUi_AccessibilityManager.h

index 2a66294..8881e38 100644 (file)
@@ -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;
 }
 
index eec6b68..7ff4cad 100644 (file)
@@ -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
 
index c060045..b97a318 100644 (file)
@@ -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))
index f531702..f42b2a2 100644 (file)
@@ -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