From: Choi Munseok Date: Wed, 19 Jun 2013 02:50:55 +0000 (+0900) Subject: Applied the Accessibility to the DynamicBox X-Git-Tag: accepted/tizen/20130912.150013^2~67 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4719c55314f57c0df2934e5b1567e38767918db1;p=platform%2Fframework%2Fnative%2Fshell.git Applied the Accessibility to the DynamicBox Change-Id: I4317977993d0ef99bf0c4d0b681a5d128bf1dbba Signed-off-by: Choi Munseok --- diff --git a/src/FShell_AppWidgetLayer.cpp b/src/FShell_AppWidgetLayer.cpp index e0a2886..b2b4aca 100644 --- a/src/FShell_AppWidgetLayer.cpp +++ b/src/FShell_AppWidgetLayer.cpp @@ -32,6 +32,7 @@ #include #include #include +#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 diff --git a/src/FShell_AppWidgetLayer.h b/src/FShell_AppWidgetLayer.h index d74444f..f42e154 100644 --- a/src/FShell_AppWidgetLayer.h +++ b/src/FShell_AppWidgetLayer.h @@ -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; diff --git a/src/FShell_AppWidgetManagerProxy.cpp b/src/FShell_AppWidgetManagerProxy.cpp index 184ef12..61dc8a1 100644 --- a/src/FShell_AppWidgetManagerProxy.cpp +++ b/src/FShell_AppWidgetManagerProxy.cpp @@ -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 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); diff --git a/src/FShell_AppWidgetProviderManagerImpl.cpp b/src/FShell_AppWidgetProviderManagerImpl.cpp index eb7ace7..ad7f313 100644 --- a/src/FShell_AppWidgetProviderManagerImpl.cpp +++ b/src/FShell_AppWidgetProviderManagerImpl.cpp @@ -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) { diff --git a/src/inc/FShell_AppWidgetManagerIpcMessage.h b/src/inc/FShell_AppWidgetManagerIpcMessage.h index 084818e..01b64d5 100644 --- a/src/inc/FShell_AppWidgetManagerIpcMessage.h +++ b/src/inc/FShell_AppWidgetManagerIpcMessage.h @@ -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) diff --git a/src/inc/FShell_AppWidgetManagerProxy.h b/src/inc/FShell_AppWidgetManagerProxy.h index 4e540ed..1c1eb82 100644 --- a/src/inc/FShell_AppWidgetManagerProxy.h +++ b/src/inc/FShell_AppWidgetManagerProxy.h @@ -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 ); diff --git a/src/inc/FShell_AppWidgetProviderManagerImpl.h b/src/inc/FShell_AppWidgetProviderManagerImpl.h index b2eced5..b9b4128 100644 --- a/src/inc/FShell_AppWidgetProviderManagerImpl.h +++ b/src/inc/FShell_AppWidgetProviderManagerImpl.h @@ -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);