/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <dali/devel-api/adaptor-framework/sound-player.h>
#include <dali/public-api/animation/constraints.h>
#include <dali/devel-api/events/hit-test-algorithm.h>
-#include <dali/public-api/images/resource-image.h>
+#include <dali/devel-api/events/pan-gesture-devel.h>
#include <dali/integration-api/debug.h>
// INTERNAL INCLUDES
{
if(actor)
{
- unsigned int actorID = actor.GetId();
+ unsigned int actorID = actor.GetProperty< int >( Actor::Property::ID );
ActorAdditionalInfo info = GetActorAdditionalInfo(actorID);
info.mAccessibilityAttributes[type] = text;
}
}
+void AccessibilityManager::DeleteAccessibilityAttribute(Actor actor)
+{
+ if(actor)
+ {
+ unsigned int actorID = actor.GetProperty< int >( Actor::Property::ID );
+ mIDAdditionalInfoContainer.erase(actorID);
+ }
+}
+
std::string AccessibilityManager::GetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityManager::AccessibilityAttribute type) const
{
std::string text;
if(actor)
{
- ActorAdditionalInfo data = GetActorAdditionalInfo(actor.GetId());
+ ActorAdditionalInfo data = GetActorAdditionalInfo(actor.GetProperty< int >( Actor::Property::ID ));
text = data.mAccessibilityAttributes[type];
}
actor.SetProperty(propertyActorFocusable, true);
// Now we insert the actor into the focus chain with the specified focus order
- mFocusIDContainer.insert(FocusIDPair(order, actor.GetId()));
+ mFocusIDContainer.insert(FocusIDPair(order, actor.GetProperty< int >( Actor::Property::ID )));
}
// Update the actor's focus order in its additional data
- SynchronizeActorAdditionalInfo(actor.GetId(), order);
+ SynchronizeActorAdditionalInfo(actor.GetProperty< int >( Actor::Property::ID ), order);
}
}
if(actor)
{
- ActorAdditionalInfo data = GetActorAdditionalInfo(actor.GetId());
+ ActorAdditionalInfo data = GetActorAdditionalInfo(actor.GetProperty< int >( Actor::Property::ID ));
focusOrder = data.mFocusOrder;
}
{
if(actor)
{
- return DoSetCurrentFocusActor(actor.GetId());
+ return DoSetCurrentFocusActor(actor.GetProperty< int >( Actor::Property::ID ));
}
return false;
actor.Add( GetFocusIndicatorActor() );
}
+ // Send Focused actor information
+ Vector2 windowSize = rootActor.GetCurrentProperty<Vector2>(Actor::Property::SIZE);
+ AccessibilityAdaptor adaptor = AccessibilityAdaptor::Get();
+ adaptor.SetFocusedActorPosition( Vector2((actor.GetCurrentProperty<Vector3>(Actor::Property::WORLD_POSITION).x + (windowSize.width / 2)),
+ (actor.GetCurrentProperty<Vector3>(Actor::Property::WORLD_POSITION).y + (windowSize.height / 2))) );
+
// Send notification for the change of focus actor
mFocusChangedSignal.Emit( GetCurrentFocusActor(), actor );
return adaptor.GetReadPosition();
}
+void AccessibilityManager::EnableAccessibility(bool enabled)
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "[%s:%d] Set Enabled Forcibly : %d \n", __FUNCTION__, __LINE__, enabled );
+ AccessibilityAdaptor adaptor = AccessibilityAdaptor::Get();
+ adaptor.EnableAccessibility(enabled);
+}
+
+bool AccessibilityManager::IsEnabled() const
+{
+ AccessibilityAdaptor adaptor = AccessibilityAdaptor::Get();
+ return adaptor.IsEnabled();
+}
+
void AccessibilityManager::SetGroupMode(bool enabled)
{
mIsFocusWithinGroup = enabled;
mIsAccessibilityTtsEnabled = adaptor.IsEnabled();
Dali::Toolkit::AccessibilityManager handle( this );
+ DALI_LOG_INFO( gLogFilter, Debug::General, "[%s:%d] TtsEnabled : %d \n", __FUNCTION__, __LINE__, mIsAccessibilityTtsEnabled );
+
if(mIsAccessibilityTtsEnabled)
{
// Show indicator when tts turned on if there is focused actor.
}
}
-bool AccessibilityManager::AccessibilityActionScroll( Dali::TouchEvent& touchEvent )
+bool AccessibilityManager::AccessibilityActionScroll( Dali::TouchEvent& touch )
{
Dali::Toolkit::AccessibilityManager handle( this );
if( !mActionScrollSignal.Empty() )
{
- mActionScrollSignal.Emit( handle, touchEvent );
+ mActionScrollSignal.Emit( handle, touch );
}
return true;
return mIsAccessibilityTtsEnabled;
}
-bool AccessibilityManager::AccessibilityActionTouch(const TouchEvent& touchEvent)
+bool AccessibilityManager::AccessibilityActionForwardToApp()
{
- bool handled = false;
-
- // TODO: Need to convert the touchevent for the focused actor?
-
- Dali::Toolkit::Control control = Dali::Toolkit::Control::DownCast(GetCurrentFocusActor());
- if(control)
+ Dali::Toolkit::AccessibilityManager handle( this );
+ if( !mActionForwardSignal.Empty() )
{
- handled = GetImplementation( control ).OnAccessibilityTouch(touchEvent);
+ mActionForwardSignal.Emit( handle );
}
- return handled;
+ return mIsAccessibilityTtsEnabled;
}
bool AccessibilityManager::HandlePanGesture(const AccessibilityGestureEvent& panEvent)
{
bool handled = false;
- if( panEvent.state == AccessibilityGestureEvent::Started )
+ if( panEvent.state == AccessibilityGestureEvent::STARTED )
{
// Find the focusable actor at the event position
Dali::HitTestAlgorithm::Results results;
}
}
- // Gesture::Finished (Up) events are delivered with previous (Motion) event position
+ // GestureState::FINISHED (Up) events are delivered with previous (Motion) event position
// Use the real previous position; otherwise we may incorrectly get a ZERO velocity
- if ( AccessibilityGestureEvent::Finished != panEvent.state )
+ if ( AccessibilityGestureEvent::FINISHED != panEvent.state )
{
- // Store the previous position for next Gesture::Finished iteration.
+ // Store the previous position for next GestureState::FINISHED iteration.
mPreviousPosition = panEvent.previousPosition;
}
Actor rootActor = Stage::GetCurrent().GetRootLayer();
- Dali::PanGesture pan( static_cast<Dali::Gesture::State>(panEvent.state) );
-
- pan.time = panEvent.time;
- pan.numberOfTouches = panEvent.numberOfTouches;
- pan.screenPosition = panEvent.currentPosition;
- pan.screenDisplacement = mPreviousPosition - panEvent.currentPosition;
- pan.screenVelocity.x = pan.screenDisplacement.x / panEvent.timeDelta;
- pan.screenVelocity.y = pan.screenDisplacement.y / panEvent.timeDelta;
+ Dali::PanGesture pan = DevelPanGesture::New( static_cast<Dali::GestureState>(panEvent.state) );
+ DevelPanGesture::SetTime( pan, panEvent.time );
+ DevelPanGesture::SetNumberOfTouches( pan, panEvent.numberOfTouches );
+ DevelPanGesture::SetScreenPosition( pan, panEvent.currentPosition );
+ DevelPanGesture::SetScreenDisplacement( pan, mPreviousPosition - panEvent.currentPosition );
+ DevelPanGesture::SetScreenVelocity( pan, Vector2( pan.GetScreenDisplacement().x / panEvent.timeDelta, pan.GetScreenDisplacement().y / panEvent.timeDelta ) );
// Only handle the pan gesture when the current focused actor is scrollable or within a scrollable actor
while(mCurrentGesturedActor && mCurrentGesturedActor != rootActor && !handled)
{
Vector2 localCurrent;
control.ScreenToLocal( localCurrent.x, localCurrent.y, panEvent.currentPosition.x, panEvent.currentPosition.y );
- pan.position = localCurrent;
+ DevelPanGesture::SetPosition( pan, localCurrent );
Vector2 localPrevious;
control.ScreenToLocal( localPrevious.x, localPrevious.y, mPreviousPosition.x, mPreviousPosition.y );
- pan.displacement = localCurrent - localPrevious;
- pan.velocity.x = pan.displacement.x / panEvent.timeDelta;
- pan.velocity.y = pan.displacement.y / panEvent.timeDelta;
+ DevelPanGesture::SetDisplacement( pan, localCurrent - localPrevious );
+ DevelPanGesture::SetVelocity( pan, Vector2( pan.GetDisplacement().x / panEvent.timeDelta, pan.GetDisplacement().y / panEvent.timeDelta ));
handled = GetImplementation( control ).OnAccessibilityPan(pan);
}