1. AccessibilityContainer::RemoveElement bug fix. 2. TTS operation flow is changed.
author“Bumseung <bumseung.cho@samsung.com>
Mon, 15 Apr 2013 04:42:36 +0000 (13:42 +0900)
committer“Bumseung <bumseung.cho@samsung.com>
Mon, 15 Apr 2013 04:42:36 +0000 (13:42 +0900)
Change-Id: Ic24d279a29bc242d2dfea58d2603911fb264658f
Signed-off-by: “Bumseung <bumseung.cho@samsung.com>
src/ui/FUi_AccessibilityContainer.cpp
src/ui/FUi_AccessibilityContainerImpl.cpp
src/ui/FUi_AccessibilityGesture.cpp
src/ui/FUi_AccessibilityManager.cpp
src/ui/FUi_AccessibilityTtsPlayer.cpp

index 879fbe0..f676b5f 100644 (file)
@@ -223,7 +223,14 @@ _AccessibilityContainer::GetChildElement(int index) const
        }
        _AccessibilityElement* pElement = null;
        __elementList.GetAt(index, pElement);
-       return pElement;
+       if (pElement->IsActivated())
+       {
+               return pElement;
+       }
+       else
+       {
+               return false;
+       }
 }
 
 _AccessibilityElement*
@@ -237,7 +244,14 @@ _AccessibilityContainer::GetChildElement(const String& name) const
                r = __elementList.GetAt(i, pElement);
                if (r == E_SUCCESS && pElement->GetName() == name)
                {
-                       return pElement;
+                       if (pElement->IsActivated())
+                       {
+                               return pElement;
+                       }
+                       else
+                       {
+                               return false;
+                       }
                }
        }
        if (__childContainerList.GetCount() > 0)
@@ -250,6 +264,14 @@ _AccessibilityContainer::GetChildElement(const String& name) const
                        _AccessibilityElement* pElement = pContainer->GetChildElement(name);
                        if (pElement != null)
                        {
+                               if (pElement->IsActivated())
+                               {
+                                       return pElement;
+                               }
+                               else
+                               {
+                                       return false;
+                               }
                                return pElement;
                        }
                }
@@ -269,7 +291,7 @@ _AccessibilityContainer::GetElements(IListT<_AccessibilityElement*>& list) const
                r = __elementList.GetAt(i, pElement);
                SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System Error.");
                SysTryReturn(NID_UI, pElement, , E_SYSTEM, "[E_SYSTEM] System Error.");
-               if(!list.Contains(pElement))
+               if(!list.Contains(pElement) && pElement->IsActivated())
                {
                        list.Add(pElement);
                }
@@ -280,14 +302,9 @@ _AccessibilityContainer::GetElements(IListT<_AccessibilityElement*>& list) const
 IListT <_AccessibilityElement*>*
 _AccessibilityContainer::GetElementsN(void) const
 {
-       if (__elementList.GetCount() > 0)
-       {
-               return __elementList.GetItemsN(0, __elementList.GetCount());
-       }
-       else
-       {
-               return null;
-       }
+       LinkedListT<_AccessibilityElement*>* pList = new (std::nothrow) LinkedListT<_AccessibilityElement*>;
+       GetElements(*pList);
+       return pList;
 }
 
 _AccessibilityElement*
index 7015041..8a4cdf0 100644 (file)
@@ -203,10 +203,13 @@ result
 _AccessibilityContainerImpl::RemoveElement(const _AccessibilityElementImpl& element)
 {
        SysTryReturn(NID_UI, ControlCoreExists(__coreHandle), E_SYSTEM, E_SYSTEM,"[E_SYSTEM] A core of control is invalid.");
-       result r = __pCore->RemoveElement(element.GetCore());
        AccessibilityElement* pElement = const_cast<AccessibilityElement*>(&(element.GetPublic()));
-       __elementList.Remove(pElement);
-       delete pElement;
+       result r = __elementList.Remove(pElement);
+       if (r == E_SUCCESS)
+       {
+               const_cast<_AccessibilityElementImpl&>(element).GetCore().Activate(false);
+               delete pElement;
+       }
        return r;
 }
 
@@ -214,7 +217,7 @@ result
 _AccessibilityContainerImpl::RemoveAllElement(void)
 {
        SysTryReturn(NID_UI, ControlCoreExists(__coreHandle), E_SYSTEM, E_SYSTEM,"[E_SYSTEM] A core of control is invalid.");
-       result r = __pCore->RemoveAllElement();
+       result r = E_SUCCESS;//__pCore->RemoveAllElement();
        if (r == E_SUCCESS)
        {
                int count = __elementList.GetCount();
@@ -223,6 +226,8 @@ _AccessibilityContainerImpl::RemoveAllElement(void)
                {
                        if (__elementList.GetAt(i, pElement) == E_SUCCESS)
                        {
+                               _AccessibilityElementImpl* pImpl = _AccessibilityElementImpl::GetInstance(*pElement);
+                               pImpl->GetCore().Activate(false);
                                delete pElement;
                                pElement = null;
                        }
index ebcbc7d..0b1efdf 100644 (file)
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-
+#include <Ecore_X.h>
 #include <FAppUiApp.h>
 #include <FAppIAppFrame.h>
 #include <FBaseSysLog.h>
 #include "FUi_AccessibilityManager.h"
 #include "FUi_ControlManager.h"
 
+#include "FUiAnim_RootVisualElement.h"
+#include "FUiAnim_AnimationManager.h"
+#include "FUiAnim_DisplayManager.h"
+#include "FUiAnim_EflLayer.h"
+#include "FUi_Window.h"
+
 using namespace Tizen::App;
 using namespace Tizen::Graphics;
 using namespace Tizen::Ui::Controls;
@@ -34,80 +40,97 @@ namespace
 {
        void ConvertTouchPosition(Tizen::Ui::_AccessibilityGestureType& type, float &x, float&y)
        {
-               Frame* pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
-               Form* pForm= pFrame->GetCurrentForm();
-               FloatDimension screen = Tizen::Ui::_ControlManager::GetInstance()->GetScreenSizeF();
-               float _x = x;
-               float _y = y;
-               switch(pForm->GetOrientationStatus())
+               Tizen::Ui::_Window* pWindow = Tizen::Ui::_ControlManager::GetInstance()->GetCurrentFrame();
+               Tizen::Ui::Animations::_RootVisualElement* pRootVE = pWindow->GetRootVisualElement();
+               Tizen::Ui::Animations::_EflLayer* pLayer = static_cast<Tizen::Ui::Animations::_EflLayer*>(pRootVE->GetNativeLayer());
+
+               Ecore_Evas* pEcoreEvas = pLayer->GetEcoreEvas();
+               Ecore_X_Window win = (Ecore_X_Window)ecore_evas_window_get(pEcoreEvas);
+
+               int rootW = 0;
+               int rootH = 0;
+               ecore_x_window_size_get(ecore_x_window_root_get(win), &rootW, &rootH);
+
+               int rotation = ecore_evas_rotation_get(pEcoreEvas);
+               switch (rotation)
                {
-                       case Tizen::Ui::ORIENTATION_STATUS_PORTRAIT:
-                               break;
-                       case Tizen::Ui::ORIENTATION_STATUS_LANDSCAPE:
-                               switch(type)
-                               {
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP;
-                                               break;
-                                       default:
-                                               break;
-                               }
-                               x = _y;
-                               y = screen.width - _x;
-                               break;
-                       case Tizen::Ui::ORIENTATION_STATUS_PORTRAIT_REVERSE:
-                               switch(type)
-                               {
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT;
-                                               break;
-                                       default:
-                                               break;
-                               }
-                               x = screen.width - _x;
-                               y = screen.height - _y;
-                               break;
-                       case Tizen::Ui::ORIENTATION_STATUS_LANDSCAPE_REVERSE:
-                               switch(type)
-                               {
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP;
-                                               break;
-                                       case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT:
-                                               type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN;
-                                               break;
-                                       default:
-                                               break;
-                               }
-                               x = screen.height - _y;
-                               y= _x;
-                               break;
-                       default:
-                               break;
+               case 270:
+                       {
+                               float _x = x;
+                               x = y;
+                               y = rootH - (int)_x;
+                       }
+
+                       break;
+                       switch(type)
+                       {
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP;
+                                       break;
+                               default:
+                                       break;
+                       }
+               case 180:
+                       {
+                               float _x = x;
+                               float _y = y;
+                               x = rootW - (int)_x;
+                               y = rootH - (int)_y;
+                       }
+
+                       switch(type)
+                       {
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT;
+                                       break;
+                               default:
+                                       break;
+                       }
+                       break;
+               case 90:
+                       {
+                               float _x = x;
+                               x = rootW - (int)y;
+                               y = _x;
+                       }
+                       switch(type)
+                       {
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_UP;
+                                       break;
+                               case Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT:
+                                       type = Tizen::Ui::_ACCESSIBILITY_GESTURE_TYPE_FLICK_DOWN;
+                                       break;
+                               default:
+                                       break;
+                       }
+                       break;
+               default:
+                       break;
                }
        }
 }
@@ -125,8 +148,10 @@ _AccessibilityGesture::~_AccessibilityGesture(void)
 bool
 _AccessibilityGesture::ProcessGesture(_AccessibilityGestureType type, float x, float y)
 {
-       ConvertTouchPosition(type, x,y);
-       _AccessibilityManager::GetInstance()->ProcessGesture(type,Tizen::Graphics::FloatPoint(CoordinateSystem::ConvertToLogicalX(x),CoordinateSystem::ConvertToLogicalY(y)), null);
+       x = CoordinateSystem::ConvertToLogicalX(x);
+       y = CoordinateSystem::ConvertToLogicalY(y);
+       //ConvertTouchPosition(type, x,y);
+       _AccessibilityManager::GetInstance()->ProcessGesture(type,Tizen::Graphics::FloatPoint(x, y), null);
        return true;
 }
 }} //Tizen::Ui
index ce4f3a8..70e92e7 100755 (executable)
@@ -513,6 +513,7 @@ _AccessibilityManager::ShowPopup(const String& content)
                        r = __pReadingVe->Construct();
                        SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
                        __pReadingVe->SetName("Accessibility reading popup");
+                       __pReadingVe->SetImplicitAnimationEnabled(false);
                        _VisualElementImpl::GetInstance(*__pReadingVe)->SetZOrderGroup(accesibilityVisualElementLevel);
                        pRootVe->AttachChild(*__pReadingVe);
                }
@@ -694,6 +695,7 @@ _AccessibilityManager::ShowPopup()
                        r = __pReadingVe->Construct();
                        SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] System error");
                        __pReadingVe->SetName("Accessibility reading popup");
+                       __pReadingVe->SetImplicitAnimationEnabled(false);
                        _VisualElementImpl::GetInstance(*__pReadingVe)->SetZOrderGroup(accesibilityVisualElementLevel);
                        pRootVe->AttachChild(*__pReadingVe);
                }
index 04174d0..4a7d789 100644 (file)
@@ -32,7 +32,7 @@ namespace Tizen { namespace Ui {
 
 _AccessibilityTtsPlayer::_AccessibilityTtsPlayer(_AccessibilityManager& manager)
        : __initialized(false)
-    , __activated(false)
+       , __activated(false)
        , __ttsHandle(0)
        , __localeIdx(-1)
        , __speed(TTS_SPEED_AUTO)
@@ -46,38 +46,7 @@ _AccessibilityTtsPlayer::_AccessibilityTtsPlayer(_AccessibilityManager& manager)
 
 _AccessibilityTtsPlayer::~_AccessibilityTtsPlayer(void)
 {
-       tts_state_e ttsState = TTS_STATE_READY;
-
-       int ttsError = tts_get_state(__ttsHandle, &ttsState);
-       SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to get the current state.", GetEngineErrorMessage(ttsError));
-
-       if (ttsState == TTS_STATE_PLAYING || ttsState == TTS_STATE_PAUSED)
-       {
-               ttsError = tts_stop(__ttsHandle);
-               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to stop.", GetEngineErrorMessage(ttsError));
-       }
-
-       if (__activated)
-       {
-               ttsError = tts_unprepare(__ttsHandle);
-               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unprepare.", GetEngineErrorMessage(ttsError));
-
-               ttsError = tts_unset_utterance_completed_cb(__ttsHandle);
-               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unset the utterance completed callback.", GetEngineErrorMessage(ttsError));
-
-               ttsError = tts_unset_utterance_started_cb(__ttsHandle);
-               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unset the utterance started callback.", GetEngineErrorMessage(ttsError));
-
-               ttsError = tts_unset_state_changed_cb(__ttsHandle);
-               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unset the state changed callback.", GetEngineErrorMessage(ttsError));
-
-               ttsError = tts_unset_error_cb(__ttsHandle);
-               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unset the error callback.", GetEngineErrorMessage(ttsError));
-
-               ttsError = tts_destroy(__ttsHandle);
-               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to destroy.", GetEngineErrorMessage(ttsError));
-       }
-
+       Deactivate();
        delete __pCurrentLocale;
 
        if (__pSupportedLocaleList != null)
@@ -102,15 +71,18 @@ _AccessibilityTtsPlayer::Construct(void)
        __pCurrentLocale = pLocale;
        __pSupportedLocaleList = pLocaleList;
 
-       return Activate();
+       return r;
 }
 
 result
 _AccessibilityTtsPlayer::Activate(void)
 {
-       SysAssertf(__initialized != true,
-       "Already calling Initialize() twice or more on a same instance is not allowed for this class.");
-
+       if (__activated)
+       {
+               SysLog(NID_UI, "TTS player was already activated.");
+               return E_SUCCESS;
+       }
+       
        int ttsError = tts_create(&__ttsHandle);
        SysTryReturnResult(NID_UI, ttsError == TTS_ERROR_NONE, E_SYSTEM, "Failed to create.");
 
@@ -129,7 +101,7 @@ _AccessibilityTtsPlayer::Activate(void)
        ttsError = tts_prepare(__ttsHandle);
        SysTryReturnResult(NID_UI, ttsError == TTS_ERROR_NONE, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
        
-    __activated = true;
+       __activated = true;
        return E_SUCCESS;
 }
 
@@ -521,7 +493,40 @@ _AccessibilityTtsPlayer::GetCurrentGrammar(void)
 result
 _AccessibilityTtsPlayer::Deactivate(void)
 {
-       StopReading();
+       __initialized = false;
+       tts_state_e ttsState = TTS_STATE_READY;
+
+       int ttsError = tts_get_state(__ttsHandle, &ttsState);
+       SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to get the current state.", GetEngineErrorMessage(ttsError));
+
+       if (ttsState == TTS_STATE_PLAYING || ttsState == TTS_STATE_PAUSED)
+       {
+               ttsError = tts_stop(__ttsHandle);
+               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to stop.", GetEngineErrorMessage(ttsError));
+       }
+       if (__activated)
+       {
+               ttsError = tts_unprepare(__ttsHandle);
+               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unprepare.", GetEngineErrorMessage(ttsError));
+
+               ttsError = tts_unset_utterance_completed_cb(__ttsHandle);
+               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unset the utterance completed callback.", GetEngineErrorMessage(ttsError));
+
+               ttsError = tts_unset_utterance_started_cb(__ttsHandle);
+               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unset the utterance started callback.", GetEngineErrorMessage(ttsError));
+
+               ttsError = tts_unset_state_changed_cb(__ttsHandle);
+               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unset the state changed callback.", GetEngineErrorMessage(ttsError));
+
+               ttsError = tts_unset_error_cb(__ttsHandle);
+               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to unset the error callback.", GetEngineErrorMessage(ttsError));
+
+               ttsError = tts_destroy(__ttsHandle);
+               SysTryLog(NID_UI, ttsError == TTS_ERROR_NONE, "[%s] Failed to destroy.", GetEngineErrorMessage(ttsError));
+               
+               __ttsHandle = 0;
+       }
+       __activated = false;
        return E_SUCCESS;
 }
 void