/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.h>
#include <dali/public-api/events/point-state.h>
-#include <dali/public-api/events/touch-data.h>
+#include <dali/public-api/events/touch-event.h>
namespace Dali
{
-
namespace Toolkit
{
-
namespace Internal
{
-
Dali::Toolkit::DragAndDropDetector DragAndDropDetector::New()
{
Dali::Toolkit::DragAndDropDetector detector = Dali::Toolkit::DragAndDropDetector(new DragAndDropDetector());
}
}
mControls.push_back(control);
- control.TouchSignal().Connect(this, &DragAndDropDetector::OnDrag);
- mFirstEnter.push_back(control.GetId());
+ control.TouchedSignal().Connect(this, &DragAndDropDetector::OnDrag);
+ mFirstEnter.push_back(control.GetProperty<int>(Actor::Property::ID));
mPanGestureDetector.Attach(control);
mPanGestureDetector.DetectedSignal().Connect(this, &DragAndDropDetector::OnPan);
}
-
}
void DragAndDropDetector::Detach(Dali::Toolkit::Control& control)
if(match != mControls.end())
{
- match->TouchSignal().Disconnect(this, &DragAndDropDetector::OnDrag);
+ match->TouchedSignal().Disconnect(this, &DragAndDropDetector::OnDrag);
mPanGestureDetector.Detach(*match);
- mFirstEnter.erase(std::find(mFirstEnter.begin(), mFirstEnter.end(), control.GetId()));
+ mFirstEnter.erase(std::find(mFirstEnter.begin(), mFirstEnter.end(), control.GetProperty<int>(Actor::Property::ID)));
mControls.erase(match);
}
}
if(!mControls.empty())
{
auto iter = mControls.begin();
- for(;iter != mControls.end();)
+ for(; iter != mControls.end();)
{
- iter->TouchSignal().Disconnect(this, &DragAndDropDetector::OnDrag);
+ iter->TouchedSignal().Disconnect(this, &DragAndDropDetector::OnDrag);
mPanGestureDetector.Detach(*iter);
iter = mControls.erase(iter);
}
if(!mFirstEnter.empty())
{
auto iter = mFirstEnter.begin();
- for(;iter != mFirstEnter.end();)
+ for(; iter != mFirstEnter.end();)
{
iter = mFirstEnter.erase(iter);
}
{
Dali::Toolkit::Control control = Dali::Toolkit::Control::DownCast(actor);
- if(gesture.state == Gesture::Started)
+ GestureState state = gesture.GetState();
+
+ if(state == GestureState::STARTED)
{
- mDragLocalPosition = gesture.position;
- mPointDown = true;
- mDragControl = control;
+ mDragLocalPosition = gesture.GetPosition();
+ mPointDown = true;
+ mDragControl = control;
mFirstEnter.clear();
- for( auto&& control : mControls)
+ for(auto&& control : mControls)
{
- mFirstEnter.push_back(control.GetId());
+ mFirstEnter.push_back(control.GetProperty<int>(Actor::Property::ID));
}
- float width = control.GetProperty<float>(Dali::Actor::Property::SIZE_WIDTH);
- float height = control.GetProperty<float>(Dali::Actor::Property::SIZE_HEIGHT);
+ float width = control.GetProperty<float>(Dali::Actor::Property::SIZE_WIDTH);
+ float height = control.GetProperty<float>(Dali::Actor::Property::SIZE_HEIGHT);
Vector3 actorPos = control.GetProperty<Vector3>(Dali::Actor::Property::POSITION);
mShadowControl = Dali::Toolkit::Control::New();
- mShadowControl.SetPosition(actorPos);
- mShadowControl.SetSize(width, height);
+ mShadowControl.SetProperty(Actor::Property::POSITION, actorPos);
+ mShadowControl.SetProperty(Actor::Property::SIZE, Vector2(width, height));
mShadowControl.SetBackgroundColor(Vector4(0.3f, 0.3f, 0.3f, 0.7f));
- mShadowControl.SetProperty( Actor::Property::PARENT_ORIGIN, control.GetCurrentProperty< Vector3 >( Actor::Property::PARENT_ORIGIN ) );
- mShadowControl.SetProperty( Actor::Property::ANCHOR_POINT,control.GetCurrentProperty< Vector3 >( Actor::Property::ANCHOR_POINT ));
+ mShadowControl.SetProperty(Actor::Property::PARENT_ORIGIN, control.GetCurrentProperty<Vector3>(Actor::Property::PARENT_ORIGIN));
+ mShadowControl.SetProperty(Actor::Property::ANCHOR_POINT, control.GetCurrentProperty<Vector3>(Actor::Property::ANCHOR_POINT));
control.GetParent().Add(mShadowControl);
- SetPosition(gesture.screenPosition);
+ SetPosition(gesture.GetScreenPosition());
EmitStartedSignal(control);
}
- if(gesture.state == Gesture::Continuing)
+ if(state == GestureState::CONTINUING)
{
- Vector2 screenPosition = gesture.screenPosition;
- control.GetParent().ScreenToLocal(mLocalPosition.x, mLocalPosition.y, screenPosition.x, screenPosition.y);
- mShadowControl.SetPosition(mLocalPosition.x - mDragLocalPosition.x, mLocalPosition.y - mDragLocalPosition.y);
+ Vector2 screenPosition = gesture.GetScreenPosition();
+ control.GetParent().ScreenToLocal(mLocalPosition.x, mLocalPosition.y, screenPosition.x, screenPosition.y);
+ mShadowControl.SetProperty(Actor::Property::POSITION, Vector2(mLocalPosition.x - mDragLocalPosition.x, mLocalPosition.y - mDragLocalPosition.y));
}
- if(gesture.state == Gesture::Finished)
+ if(state == GestureState::FINISHED)
{
mDragControl.GetParent().Remove(mShadowControl);
EmitEndedSignal(control);
}
}
-bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchData& data)
+bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchEvent& data)
{
Dali::Toolkit::Control control = Dali::Toolkit::Control::DownCast(actor);
- PointState::Type type = data.GetState(0);
+ PointState::Type type = data.GetState(0);
if(type == PointState::MOTION)
{
if(mDragControl != control && mPointDown)
{
- auto found = std::find(mFirstEnter.begin(), mFirstEnter.end(), control.GetId());
+ auto found = std::find(mFirstEnter.begin(), mFirstEnter.end(), control.GetProperty<int>(Actor::Property::ID));
if(mFirstEnter.end() != found)
{
SetPosition(data.GetScreenPosition(0));
{
if(mDragControl != control && mPointDown)
{
- mFirstEnter.push_back(control.GetId());
+ mFirstEnter.push_back(control.GetProperty<int>(Actor::Property::ID));
EmitExitedSignal(control);
}
}
{
SetPosition(data.GetScreenPosition(0));
ClearContent();
- SetContent(mDragControl.GetProperty< std::string >( Dali::Actor::Property::NAME ));
+ SetContent(mDragControl.GetProperty<std::string>(Dali::Actor::Property::NAME));
EmitDroppedSignal(control);
}
if(mShadowControl)
{
- control.GetParent().Remove(mShadowControl);
+ control.GetParent().Remove(mShadowControl);
}
mPointDown = false;
}
- return true;
+ return false;
}
const std::string& DragAndDropDetector::GetContent() const
return mScreenPosition;
}
-void DragAndDropDetector::SetContent( const std::string& content )
+void DragAndDropDetector::SetContent(const std::string& content)
{
mContent = content;
}
mContent.clear();
}
-void DragAndDropDetector::SetPosition( const Vector2& screenPosition )
+void DragAndDropDetector::SetPosition(const Vector2& screenPosition)
{
mScreenPosition = screenPosition;
}
void DragAndDropDetector::EmitStartedSignal(Dali::Toolkit::Control& control)
{
- if( !mStartedSignal.Empty() )
+ if(!mStartedSignal.Empty())
{
- Dali::Toolkit::DragAndDropDetector handle( this );
- mStartedSignal.Emit( control, handle );
+ Dali::Toolkit::DragAndDropDetector handle(this);
+ mStartedSignal.Emit(control, handle);
}
}
void DragAndDropDetector::EmitEnteredSignal(Dali::Toolkit::Control& control)
{
- if ( !mEnteredSignal.Empty() )
+ if(!mEnteredSignal.Empty())
{
- Dali::Toolkit::DragAndDropDetector handle( this );
- mEnteredSignal.Emit( control, handle );
+ Dali::Toolkit::DragAndDropDetector handle(this);
+ mEnteredSignal.Emit(control, handle);
}
}
void DragAndDropDetector::EmitExitedSignal(Dali::Toolkit::Control& control)
{
- if ( !mExitedSignal.Empty() )
+ if(!mExitedSignal.Empty())
{
- Dali::Toolkit::DragAndDropDetector handle( this );
- mExitedSignal.Emit( control, handle );
+ Dali::Toolkit::DragAndDropDetector handle(this);
+ mExitedSignal.Emit(control, handle);
}
}
void DragAndDropDetector::EmitMovedSignal(Dali::Toolkit::Control& control)
{
- if ( !mMovedSignal.Empty() )
+ if(!mMovedSignal.Empty())
{
- Dali::Toolkit::DragAndDropDetector handle( this );
- mMovedSignal.Emit( control, handle );
+ Dali::Toolkit::DragAndDropDetector handle(this);
+ mMovedSignal.Emit(control, handle);
}
}
void DragAndDropDetector::EmitDroppedSignal(Dali::Toolkit::Control& control)
{
- if ( !mDroppedSignal.Empty() )
+ if(!mDroppedSignal.Empty())
{
- Dali::Toolkit::DragAndDropDetector handle( this );
- mDroppedSignal.Emit( control, handle );
+ Dali::Toolkit::DragAndDropDetector handle(this);
+ mDroppedSignal.Emit(control, handle);
}
}
void DragAndDropDetector::EmitEndedSignal(Dali::Toolkit::Control& control)
{
- if( !mEndedSignal.Empty() )
+ if(!mEndedSignal.Empty())
{
- Dali::Toolkit::DragAndDropDetector handle( this );
- mEndedSignal.Emit( control, handle );
+ Dali::Toolkit::DragAndDropDetector handle(this);
+ mEndedSignal.Emit(control, handle);
}
}
mScreenPosition()
{
mPanGestureDetector = Dali::PanGestureDetector::New();
- mPointDown = false;
+ mPointDown = false;
}
DragAndDropDetector::~DragAndDropDetector()