X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Fevents%2Fgesture-detector-impl.h;h=dd312e6aa9a3263fe7df59303f1307c5ea34dee9;hb=d7775bfee328210d5b7300caf0fccfc2ec3dc2e8;hp=0b0754b06736cf7a7b6df9b865fbe63af2790afb;hpb=df59eea2434495c32414fcf9ffafe4cb7dff5324;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/events/gesture-detector-impl.h b/dali/internal/event/events/gesture-detector-impl.h index 0b0754b..dd312e6 100644 --- a/dali/internal/event/events/gesture-detector-impl.h +++ b/dali/internal/event/events/gesture-detector-impl.h @@ -1,8 +1,8 @@ -#ifndef __DALI_INTERNAL_GESTURE_DETECTOR_H__ -#define __DALI_INTERNAL_GESTURE_DETECTOR_H__ +#ifndef DALI_INTERNAL_GESTURE_DETECTOR_H +#define DALI_INTERNAL_GESTURE_DETECTOR_H /* - * Copyright (c) 2014 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. @@ -19,16 +19,15 @@ */ // INTERNAL INCLUDES -#include +#include #include +#include +#include #include #include -#include -#include namespace Dali { - namespace Integration { struct GestureEvent; @@ -36,30 +35,28 @@ struct GestureEvent; namespace Internal { - class GestureDetector; class GestureEventProcessor; -typedef IntrusivePtr GestureDetectorPtr; -typedef std::vector GestureDetectorContainer; -typedef std::vector GestureDetectorActorContainer; +using GestureDetectorPtr = IntrusivePtr; +using GestureDetectorContainer = std::vector; +using GestureDetectorActorContainer = std::vector; /** * This is a type trait that should be used by deriving gesture detectors for their container type. */ -template< typename Detector > +template struct DerivedGestureDetectorContainer { - typedef std::vector type; + using type = std::vector; }; /** * @copydoc Dali::GestureDetector */ -class GestureDetector : public ProxyObject, public ProxyObject::Observer +class GestureDetector : public Object, public Object::Observer { public: - /** * @copydoc Dali::GestureDetector::Attach() */ @@ -76,9 +73,14 @@ public: void DetachAll(); /** - * @copydoc Dali::GestureDetector::GetAttachedActors() const + * @copydoc Dali::GestureDetector::GetAttachedActorCount() const */ - std::vector GetAttachedActors() const; + size_t GetAttachedActorCount() const; + + /** + * @copydoc Dali::GestureDetector::GetAttachedActor() const + */ + Dali::Actor GetAttachedActor(size_t index) const; /** * Returns a const reference to the container of attached actor pointers. @@ -93,52 +95,54 @@ public: * Retrieves the type of GestureDetector * @return The GestureDetector Type */ - Gesture::Type GetType() const + GestureType::Value GetType() const { return mType; } /** - * Checks if the specified actor is still attached. + * Checks if the specified actor is still attached or pending attachment. * @param[in] actor The actor to check. - * @return true, if the actor is attached, false otherwise. + * @return true, if the actor is attached or pending, false otherwise. */ bool IsAttached(Actor& actor) const; protected: // Creation & Destruction - /** * Construct a new GestureDetector. + * @param type the type of gesture + * @param pointer to the scene object, nullptr if none + * by default GestureDetectors don't have our own scene object */ - GestureDetector(Gesture::Type mType); + GestureDetector(GestureType::Value type, const SceneGraph::PropertyOwner* sceneObject = nullptr); /** * A reference counted object may only be deleted by calling Unreference() */ - virtual ~GestureDetector(); + ~GestureDetector() override; private: - // Undefined - GestureDetector(const GestureDetector&); - - // Undefined - GestureDetector& operator=(const GestureDetector& rhs); + GestureDetector() = delete; + GestureDetector(const GestureDetector&) = delete; + GestureDetector& operator=(const GestureDetector& rhs) = delete; /** - * @copydoc Dali::Internal::ProxyObject::Observer::SceneObjectAdded() + * @copydoc Dali::Internal::Object::Observer::SceneObjectAdded() */ - virtual void SceneObjectAdded(ProxyObject& proxy) {} + void SceneObjectAdded(Object& object) override; /** - * @copydoc Dali::Internal::ProxyObject::Observer::SceneObjectAdded() + * @copydoc Dali::Internal::Object::Observer::SceneObjectAdded() */ - virtual void SceneObjectRemoved(ProxyObject& proxy) {} + void SceneObjectRemoved(Object& object) override + { + } /** - * @copydoc Dali::Internal::ProxyObject::Observer::ProxyDestroyed() + * @copydoc Dali::Internal::Object::Observer::ObjectDestroyed() */ - virtual void ProxyDestroyed(ProxyObject& proxy); + void ObjectDestroyed(Object& object) override; /** * For use in derived classes, called after an actor is attached. @@ -160,106 +164,11 @@ private: */ virtual void OnActorDestroyed(Object& object) = 0; - /** - * Dummy touch event handler. We do not need to know when touch happens on our actor. We just - * need to connect a function so that our attached actor is checked during our hit testing. - * @param[in] actor The hit actor (or one of its parents). - * @param[in] event The touch event. - * @return false always as we do not process the event. - */ - bool OnTouchEvent(Dali::Actor actor, const TouchEvent& event); - -private: // Default property extensions from ProxyObject - - /** - * @copydoc Dali::Internal::ProxyObject::IsSceneObjectRemovable() - */ - virtual bool IsSceneObjectRemovable() const; - - /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyCount() - */ - virtual unsigned int GetDefaultPropertyCount() const; - - /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyIndices() - */ - virtual void GetDefaultPropertyIndices( Property::IndexContainer& indices ) const; - - /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyName() - */ - virtual const std::string& GetDefaultPropertyName(Property::Index index) const; - - /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyIndex() - */ - virtual Property::Index GetDefaultPropertyIndex(const std::string& name) const; - - /** - * @copydoc Dali::Internal::ProxyObject::IsDefaultPropertyWritable() - */ - virtual bool IsDefaultPropertyWritable(Property::Index index) const; - - /** - * @copydoc Dali::Internal::ProxyObject::IsDefaultPropertyAnimatable() - */ - virtual bool IsDefaultPropertyAnimatable(Property::Index index) const; - - /** - * @copydoc Dali::Internal::ProxyObject::IsDefaultPropertyAConstraintInput() - */ - virtual bool IsDefaultPropertyAConstraintInput( Property::Index index ) const; - - /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyType() - */ - virtual Property::Type GetDefaultPropertyType(Property::Index index) const; - - /** - * @copydoc Dali::Internal::ProxyObject::SetDefaultProperty() - */ - virtual void SetDefaultProperty(Property::Index index, const Property::Value& propertyValue); - - /** - * @copydoc Dali::Internal::ProxyObject::SetCustomProperty() - */ - virtual void SetCustomProperty( Property::Index index, const CustomProperty& entry, const Property::Value& value ); - - /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultProperty() - */ - virtual Property::Value GetDefaultProperty( Property::Index index ) const; - - /** - * @copydoc Dali::Internal::ProxyObject::InstallSceneObjectProperty() - */ - virtual void InstallSceneObjectProperty( SceneGraph::PropertyBase& newProperty, const std::string& name, unsigned int index ); - - /** - * @copydoc Dali::Internal::ProxyObject::GetSceneObject() - */ - virtual const SceneGraph::PropertyOwner* GetSceneObject() const; - - /** - * @copydoc Dali::Internal::ProxyObject::GetSceneObjectAnimatableProperty() - */ - virtual const SceneGraph::PropertyBase* GetSceneObjectAnimatableProperty( Property::Index index ) const; - - /** - * @copydoc Dali::Internal::ProxyObject::GetSceneObjectInputProperty() - */ - virtual const PropertyInputImpl* GetSceneObjectInputProperty( Property::Index index ) const; - protected: - - Gesture::Type mType; ///< The gesture detector will detect this type of gesture. - GestureDetectorActorContainer mAttachedActors; ///< Proxy::Observer is used to provide weak-pointer behaviour + GestureType::Value mType; ///< The gesture detector will detect this type of gesture. + GestureDetectorActorContainer mAttachedActors; ///< Object::Observer is used to provide weak-pointer behaviour + GestureDetectorActorContainer mPendingAttachActors; ///< Object::Observer is used to provide weak-pointer behaviour GestureEventProcessor& mGestureEventProcessor; ///< A reference to the gesture event processor. - -private: - - SlotDelegate< GestureDetector > mSlotDelegate; }; } // namespace Internal @@ -268,7 +177,7 @@ private: inline Internal::GestureDetector& GetImplementation(Dali::GestureDetector& detector) { - DALI_ASSERT_ALWAYS( detector && "GestureDetector handle is empty" ); + DALI_ASSERT_ALWAYS(detector && "GestureDetector handle is empty"); BaseObject& handle = detector.GetBaseObject(); @@ -277,7 +186,7 @@ inline Internal::GestureDetector& GetImplementation(Dali::GestureDetector& detec inline const Internal::GestureDetector& GetImplementation(const Dali::GestureDetector& detector) { - DALI_ASSERT_ALWAYS( detector && "GestureDetector handle is empty" ); + DALI_ASSERT_ALWAYS(detector && "GestureDetector handle is empty"); const BaseObject& handle = detector.GetBaseObject(); @@ -286,4 +195,4 @@ inline const Internal::GestureDetector& GetImplementation(const Dali::GestureDet } // namespace Dali -#endif // __DALI_INTERNAL_GESTURE_DETECTOR_H__ +#endif // DALI_INTERNAL_GESTURE_DETECTOR_H