Applied the Accessibility to the DynamicBox
authorChoi Munseok <ms47.choi@samsung.com>
Wed, 19 Jun 2013 02:50:55 +0000 (11:50 +0900)
committerChoi Munseok <ms47.choi@samsung.com>
Wed, 19 Jun 2013 02:50:55 +0000 (11:50 +0900)
Change-Id: I4317977993d0ef99bf0c4d0b681a5d128bf1dbba
Signed-off-by: Choi Munseok <ms47.choi@samsung.com>
src/FShell_AppWidgetLayer.cpp
src/FShell_AppWidgetLayer.h
src/FShell_AppWidgetManagerProxy.cpp
src/FShell_AppWidgetProviderManagerImpl.cpp
src/inc/FShell_AppWidgetManagerIpcMessage.h
src/inc/FShell_AppWidgetManagerProxy.h
src/inc/FShell_AppWidgetProviderManagerImpl.h

index e0a2886..b2b4aca 100644 (file)
@@ -32,6 +32,7 @@
 #include <FBaseSysLog.h>
 #include <FBase_StringConverter.h>
 #include <FGrpRectangle.h>
+#include "FUi_AccessibilityManager.h"
 #include "FUi_Window.h"
 #include "FShell_AppWidgetBuffer.h"
 #include "FShell_AppWidgetLayer.h"
@@ -96,6 +97,13 @@ PostRender(void* pData, Evas* pEvas, void* pEventInfo)
 namespace Tizen { namespace Shell
 {
 
+enum _AccessStatus
+{
+       _ACCESS_STATUS_DONE,
+       _ACCESS_STATUS_FIRST,
+       _ACCESS_STATUS_LAST,
+};
+
 _AppWidgetLayer::_AppWidgetLayer(const Tizen::Base::String& providerId, const FloatDimension& size)
        : __isReleased(false)
        , __size(size)
@@ -373,6 +381,9 @@ _AppWidgetLayer::OnTouchEventRecevied(int eventType, double timestamp, double x,
        Evas* pEvas = ecore_evas_get(__pEcoreEvas.get());
        SysTryReturn(NID_SHELL, pEvas, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
 
+       _AccessibilityManager* pAccessManager = _AccessibilityManager::GetInstance();
+       SysTryReturn(NID_SHELL, pEvas, 0, E_SYSTEM, "[E_SYSTEM] A system error occurred.");     
+
        switch (eventType)
        {
        case BUFFER_EVENT_ENTER:
@@ -398,6 +409,52 @@ _AppWidgetLayer::OnTouchEventRecevied(int eventType, double timestamp, double x,
                evas_event_feed_mouse_out(pEvas, timestamp + 0.01f, null);
                break;
 
+       case BUFFER_EVENT_HIGHLIGHT_PREV:
+               SysLog(NID_SHELL, "[LB_ACCESS] BUFFER_EVENT_HIGHLIGHT_PREV is delivered.");
+               if (pAccessManager->IsFirstElementGainedFocus())
+               {
+                       SysLog(NID_SHELL, "[LB_ACCESS] The first element is focused.");
+                       SendAccessStatus(_ACCESS_STATUS_FIRST);
+               }
+               else
+               {
+                       SysLog(NID_SHELL, "[LB_ACCESS] _ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT is processed.");
+                       pAccessManager->ProcessGesture(_ACCESSIBILITY_GESTURE_TYPE_FLICK_LEFT, FloatPoint(0.0f, 0.0f));
+                       SendAccessStatus(_ACCESS_STATUS_DONE);
+               }
+               break;
+
+       case BUFFER_EVENT_HIGHLIGHT_NEXT:
+               SysLog(NID_SHELL, "[LB_ACCESS] BUFFER_EVENT_HIGHLIGHT_NEXT is delivered.");
+               if (pAccessManager->IsLastElementGainedFocus())
+               {
+                       SysLog(NID_SHELL, "[LB_ACCESS] The last element is focused.");
+                       SendAccessStatus(_ACCESS_STATUS_LAST);
+               }
+               else
+               {
+                       SysLog(NID_SHELL, "[LB_ACCESS] _ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT is processed.");
+                       pAccessManager->ProcessGesture(_ACCESSIBILITY_GESTURE_TYPE_FLICK_RIGHT, FloatPoint(0.0f, 0.0f));
+                       SendAccessStatus(_ACCESS_STATUS_DONE);
+               }
+               break;
+       
+       case BUFFER_EVENT_ACTIVATE:
+               SysLog(NID_SHELL, "[LB_ACCESS] BUFFER_EVENT_ACTIVATE is delivered.");
+               SysLog(NID_SHELL, "[LB_ACCESS] _ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_DOUBLE_TAP is processed.");
+               pAccessManager->ProcessGesture(_ACCESSIBILITY_GESTURE_TYPE_ONE_FINGER_DOUBLE_TAP, FloatPoint(0.0f, 0.0f));
+               SendAccessStatus(_ACCESS_STATUS_DONE);
+               break;
+       
+       case BUFFER_EVENT_HIGHLIGHT:
+               SysLog(NID_SHELL, "[LB_ACCESS] BUFFER_EVENT_HIGHLIGHT is delivered.");
+               break;
+       
+       case BUFFER_EVENT_UNHIGHLIGHT:
+               SysLog(NID_SHELL, "[LB_ACCESS] BUFFER_EVENT_UNHIGHLIGHT is delivered.");
+               //pAccessManager->EraseFocusUi();
+               break;
+
        default:
                break;
        }
@@ -433,4 +490,13 @@ _AppWidgetLayer::Flush(void)
        __pAppWidgetBuffer->UnlockBuffer();
 }
 
+void
+_AppWidgetLayer::SendAccessStatus(int accessStatus)
+{
+       SysTryReturnVoidResult(NID_SHELL, !__providerId.IsEmpty(), E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
+
+       SysLog(NID_SHELL, "[LB_ACCESS] Send the access status(%d)", accessStatus);
+       _AppWidgetProviderManagerImpl::GetInstance()->SendAccessStatus(__providerId, accessStatus);
+}
+
 }} // Tizen::Shell
index d74444f..f42e154 100644 (file)
@@ -75,6 +75,7 @@ private:
        _AppWidgetLayer(const _AppWidgetLayer& rhs);
        _AppWidgetLayer& operator =(const _AppWidgetLayer& rhs);
        virtual void Flush(void);
+       void SendAccessStatus(int accessStatus);
 
 protected:
        bool __isReleased;
index 184ef12..61dc8a1 100644 (file)
@@ -240,6 +240,19 @@ _AppWidgetManagerProxy::SendResult(const Tizen::Base::String& instanceId, bool i
 }
 
 result
+_AppWidgetManagerProxy::SendAccessStatus(const Tizen::Base::String& instanceId, int accessStatus)
+{
+       SysTryReturnResult(NID_SHELL, __pIpcClient != null, E_SYSTEM, "__pIpcClient instance must not be null.");
+       SysLog(NID_SHELL, "");
+
+       std::auto_ptr<IPC::Message> pMsg (new (std::nothrow) AppWidgetManager_SendAccessStatus(instanceId, accessStatus));
+       result r = __pIpcClient->SendRequest(*pMsg.get());
+       SysTryReturnResult(NID_SHELL, !IsFailed(r), r, "SendRequest failed.");
+
+       return E_SUCCESS;
+}
+
+result
 _AppWidgetManagerProxy::OnTouchEventReceived(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y )
 {
        return _AppWidgetProviderManagerImpl::GetInstance()->ForwardTouchEvent(instanceId, eventType, timeStamp, x, y);
index eb7ace7..ad7f313 100644 (file)
@@ -834,6 +834,15 @@ _AppWidgetProviderManagerImpl::SendResult(const String& instanceId, bool isSucce
        return pProxy->SendResult(instanceId, isSucceeded);
 }
 
+result
+_AppWidgetProviderManagerImpl::SendAccessStatus(const String& instanceId, int accessStatus)
+{
+       _AppWidgetManagerProxy* pProxy = _AppWidgetManagerProxy::GetInstance();
+       SysTryReturnResult(NID_SHELL, pProxy, E_SYSTEM, "Failed to get proxy instance!");
+
+       return pProxy->SendAccessStatus(instanceId, accessStatus);
+}
+
 void
 _AppWidgetProviderManagerImpl::OnApplicationTerminated(const AppId& appId, int pid)
 {
index 084818e..01b64d5 100644 (file)
@@ -40,6 +40,7 @@ IPC_SYNC_MESSAGE_CONTROL1_1(AppWidgetManager_RequestSyncSharedMemoryForPD, Tizen
 IPC_SYNC_MESSAGE_CONTROL1_1(AppWidgetManager_RequestReleaseSharedMemory, Tizen::Base::String, result)
 IPC_SYNC_MESSAGE_CONTROL1_1(AppWidgetManager_RequestReleaseSharedMemoryForPD, Tizen::Base::String, result)
 IPC_MESSAGE_CONTROL2(AppWidgetManager_SendResult, Tizen::Base::String, bool)
+IPC_MESSAGE_CONTROL2(AppWidgetManager_SendAccessStatus, Tizen::Base::String, int)
 
 // Message from service
 IPC_MESSAGE_CONTROL3(AppWidgetManager_SendAppWidgetEvent, Tizen::Base::String, Tizen::Base::String, Tizen::Base::Collection::HashMap)
index 4e540ed..1c1eb82 100644 (file)
@@ -55,6 +55,7 @@ public:
        result RequestReleaseSharedMemory(const Tizen::Base::String& instanceId);
        result RequestReleaseSharedMemoryForPD(const Tizen::Base::String& instanceId);
        result SendResult(const Tizen::Base::String& instanceId, bool isSucceeded);
+       result SendAccessStatus(const Tizen::Base::String& instanceId, int accessStatus);
 
        result OnAppWidgetEventReceived(const Tizen::Base::String& instanceId, const Tizen::Base::String& operationId, const Tizen::Base::Collection::HashMap& args);
        result OnTouchEventReceived(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y );
index b2eced5..b9b4128 100644 (file)
@@ -90,6 +90,7 @@ public:
        result RequestReleaseSharedMemory(const Tizen::Base::String& instanceId);
        result RequestReleaseSharedMemoryForPD(const Tizen::Base::String& instanceId);
        result SendResult(const Tizen::Base::String& instanceId, bool isSucceeded);
+       result SendAccessStatus(const Tizen::Base::String& instanceId, int accessStatus);
 
        // internal
        result SetAppWidgetTouchEventListener(const Tizen::Base::String& instanceId, _IAppWidgetTouchEventListener& listener);