X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fpopup%2Fpopup-impl.h;h=630caa8763fe8736df87cf1ed4c87d575690adae;hb=d3e4ed352b1b3436394c7a218a961487b7ee00fa;hp=7903998f700b3dae90cd7b5326a3bf9dfa7af2e5;hpb=e5d4cd830e75a208dd18c743e1564a4ed1fde780;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/popup/popup-impl.h b/dali-toolkit/internal/controls/popup/popup-impl.h old mode 100755 new mode 100644 index 7903998..630caa8 --- a/dali-toolkit/internal/controls/popup/popup-impl.h +++ b/dali-toolkit/internal/controls/popup/popup-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_POPUP_H /* - * Copyright (c) 2019 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,28 +19,27 @@ */ // EXTERNAL INCLUDES +#include #include #include #include -#include // INTERNAL INCLUDES -#include -#include +#include #include +#include +#include +#include namespace Dali { - namespace Toolkit { - namespace Internal { - class Popup; -typedef IntrusivePtr< Popup > PopupPtr; +typedef IntrusivePtr PopupPtr; /** * @copydoc Toolkit::Popup @@ -48,7 +47,6 @@ typedef IntrusivePtr< Popup > PopupPtr; class Popup : public Control { public: - /** * Create a new Popup. * @return A public handle to the newly allocated Popup. @@ -56,11 +54,10 @@ public: static Dali::Toolkit::Popup New(); public: - /** * @copydoc Toolkit::Popup::SetPopupBackgroundImage */ - void SetPopupBackgroundImage( Actor image ); + void SetPopupBackgroundImage(Actor image); /** * @copydoc Toolkit::Popup::GetPopupBackgroundImage @@ -70,7 +67,7 @@ public: /** * @copydoc Toolkit::Popup::SetTitle( Actor titleActor ) */ - void SetTitle( Actor titleActor ); + void SetTitle(Actor titleActor); /** * @copydoc Toolkit::Popup::GetTitle @@ -80,7 +77,7 @@ public: /** * @copydoc Toolkit::Popup::SetContent */ - void SetContent( Actor content ); + void SetContent(Actor content); /** * @copydoc Toolkit::Popup::GetContent @@ -90,7 +87,7 @@ public: /** * @copydoc Toolkit::Popup::SetFooter */ - void SetFooter( Actor control ); + void SetFooter(Actor control); /** * @copydoc Toolkit::Popup::GetFooter @@ -100,7 +97,7 @@ public: /** * @copydoc Toolkit::Popup::SetDisplayState */ - void SetDisplayState( Toolkit::Popup::DisplayState displayState ); + void SetDisplayState(Toolkit::Popup::DisplayState displayState); /** * @copydoc Toolkit::Popup::GetDisplayState @@ -110,7 +107,7 @@ public: /** * @copydoc Toolkit::Popup::SetTailVisibility */ - void SetTailVisibility( bool visible ); + void SetTailVisibility(bool visible); /** * @copydoc Toolkit::Popup::IsTailVisible @@ -120,7 +117,7 @@ public: /** * @copydoc Toolkit::Popup::SetTailPosition */ - void SetTailPosition( Vector3 position ); + void SetTailPosition(Vector3 position); /** * @copydoc Toolkit::Popup::GetTailPosition @@ -130,7 +127,7 @@ public: /** * @copydoc Toolkit::Popup::SetContextualMode */ - void SetContextualMode( Toolkit::Popup::ContextualMode mode ); + void SetContextualMode(Toolkit::Popup::ContextualMode mode); /** * @copydoc Toolkit::Popup::GetContextualMode @@ -140,7 +137,7 @@ public: /** * @copydoc Toolkit::Popup::SetAnimationDuration */ - void SetAnimationDuration( float duration ); + void SetAnimationDuration(float duration); /** * @copydoc Toolkit::Popup::GetAnimationDuration @@ -150,7 +147,7 @@ public: /** * @copydoc Toolkit::Popup::SetAnimationMode */ - void SetAnimationMode( Toolkit::Popup::AnimationMode animationMode ); + void SetAnimationMode(Toolkit::Popup::AnimationMode animationMode); /** * @copydoc Toolkit::Popup::GetAnimationMode @@ -160,7 +157,7 @@ public: /** * @copydoc Toolkit::Popup::SetAutoHideDelay */ - void SetAutoHideDelay( int delay ); + void SetAutoHideDelay(int delay); /** * @copydoc Toolkit::Popup::GetAutoHideDelay @@ -170,7 +167,7 @@ public: /** * @copydoc Toolkit::Popup::SetBackingEnabled */ - void SetBackingEnabled( bool enabled ); + void SetBackingEnabled(bool enabled); /** * @copydoc Toolkit::Popup::IsBackingEnabled @@ -180,7 +177,7 @@ public: /** * @copydoc Toolkit::Popup::SetBackingColor */ - void SetBackingColor( Vector4 color ); + void SetBackingColor(Vector4 color); /** * @copydoc Toolkit::Popup::GetBackingColor @@ -190,7 +187,7 @@ public: /** * @copydoc Toolkit::Popup::SetTailUpImage */ - void SetTailUpImage( std::string image ); + void SetTailUpImage(std::string image); /** * @copydoc Toolkit::Popup::GetTailUpImage @@ -200,7 +197,7 @@ public: /** * @copydoc Toolkit::Popup::SetTailDownImage */ - void SetTailDownImage( std::string image ); + void SetTailDownImage(std::string image); /** * @copydoc Toolkit::Popup::GetTailDownImage @@ -210,7 +207,7 @@ public: /** * @copydoc Toolkit::Popup::SetTailLeftImage */ - void SetTailLeftImage( std::string image ); + void SetTailLeftImage(std::string image); /** * @copydoc Toolkit::Popup::GetTailLeftImage @@ -220,7 +217,7 @@ public: /** * @copydoc Toolkit::Popup::SetTailRightImage */ - void SetTailRightImage( std::string image ); + void SetTailRightImage(std::string image); /** * @copydoc Toolkit::Popup::GetTailRightImage @@ -233,7 +230,7 @@ public: * @param[in] propertyIndex The property index. * @param[in] value The new property value. */ - static void SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ); + static void SetProperty(BaseObject* object, Property::Index propertyIndex, const Property::Value& value); /** * Called to retrieve a property of an object of this type. @@ -241,9 +238,16 @@ public: * @param[in] propertyIndex The property index. * @return The current value of the property. */ - static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex ); + static Property::Value GetProperty(BaseObject* object, Property::Index propertyIndex); protected: + struct AccessibleImpl : public DevelControl::AccessibleImpl + { + using DevelControl::AccessibleImpl::AccessibleImpl; + + std::string GetNameRaw() override; + Dali::Accessibility::States CalculateStates() override; + }; /** * Construct a new Popup. @@ -256,7 +260,6 @@ protected: virtual ~Popup(); private: - /** * @brief Creates the layout of the popup, to be done just before showing for the first time. * Also calls OnLayoutSetup() to allow derived classes to perform layout at this stage. @@ -274,7 +277,7 @@ private: * If contextual mode is not enabled, this method has no effect. * @param[in] size The Popups current size (can be accessed from within the OnRelayout() method). */ - void LayoutContext( const Vector2& size ); + void LayoutContext(const Vector2& size); /** * @brief All transition-in animation setup and layout is done here. @@ -291,7 +294,7 @@ private: * @param[in] transitionIn True to perform a transition-in, false for transition out. * @param[in] instantaneous Optional - If set to true will override the duration to provide an instant animation. */ - void StartTransitionAnimation( bool transitionIn, bool instantaneous = false ); + void StartTransitionAnimation(bool transitionIn, bool instantaneous = false); /** * @brief Invoked once a display state change has completed. @@ -322,7 +325,7 @@ private: * * @param[in] enabled Set to true to make the popup touch-transparent. */ - void SetTouchTransparent( bool enabled ); + void SetTouchTransparent(bool enabled); /** * @brief Returns if the popup allows touch events to pass through or not. @@ -337,7 +340,7 @@ private: * * @param[in] map A Property::Map containing a description of an animation */ - void SetEntryAnimationData( const Property::Map& map ); + void SetEntryAnimationData(const Property::Map& map); /** * @brief Allows the popup exit animation to be setup from a Property::Map that could @@ -345,7 +348,7 @@ private: * * @param[in] map A Property::Map containing a description of an animation */ - void SetExitAnimationData( const Property::Map& map ); + void SetExitAnimationData(const Property::Map& map); /** * @briefs Updates the popup background's position and size. @@ -353,7 +356,6 @@ private: void UpdateBackgroundPositionAndSize(); public: // Signals - /** * @copydoc Dali::Toolkit::Popup::OutsideTouchedSignal() */ @@ -388,15 +390,14 @@ public: // Signals * @return True if the signal was connected. * @post If a signal was connected, ownership of functor was passed to CallbackBase. Otherwise the caller is responsible for deleting the unused functor. */ - static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ); + static bool DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor); private: - /** * Signal occurs when the State animation (transition from hide <-> show) finishes. * @param[in] source The animation that just finished. */ - void OnDisplayChangeAnimationFinished( Animation& source ); + void OnDisplayChangeAnimationFinished(Animation& source); /** * Signal occurs when the dimmed backing for the Popup is touched. @@ -404,7 +405,7 @@ private: * @param[in] touch The Touch Data. * @return Whether to consume event or not. */ - bool OnBackingTouched(Actor actor, const TouchData& touch); + bool OnBackingTouched(Actor actor, const TouchEvent& touch); /** * Signal occurs when a mouse wheel event occurs on the dimmed backing. @@ -420,68 +421,69 @@ private: * @param[in] touch The Touch Data. * @return Whether to consume event or not. */ - bool OnDialogTouched( Actor actor, const TouchData& touch ); + bool OnDialogTouched(Actor actor, const TouchEvent& touch); /** * @copydoc Toolkit::Control::OnInitialize() */ - virtual void OnInitialize(); + void OnInitialize() override; /** * Called whenever the popup layout is re-set up. * Normally due to a change in contents. * Note: This is only done when the popup is shown. */ - virtual void OnLayoutSetup() {} + virtual void OnLayoutSetup() + { + } /** * Called when the popup is directly or indirectly parented to the stage. */ - virtual void OnStageConnection( int depth ); + void OnSceneConnection(int depth) override; /** * From Control; called after a child has been added to the owning actor. * @param[in] child The child which has been added. */ - virtual void OnChildAdd( Actor& child ); + void OnChildAdd(Actor& child) override; /** * @copydoc Control::OnRelayOut() */ - virtual void OnRelayout( const Vector2& size, RelayoutContainer& container ); + void OnRelayout(const Vector2& size, RelayoutContainer& container) override; /** * @copydoc Control::OnSetResizePolicy() */ - virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension ); + void OnSetResizePolicy(ResizePolicy::Type policy, Dimension::Type dimension) override; /** * @copydoc Control::GetNaturalSize() */ - virtual Vector3 GetNaturalSize(); + Vector3 GetNaturalSize() override; /** * @copydoc Control::GetHeightForWidth() */ - virtual float GetHeightForWidth( float width ); + float GetHeightForWidth(float width) override; /** * @copydoc Control::GetWidthForHeight() */ - virtual float GetWidthForHeight( float height ); + float GetWidthForHeight(float height) override; /** * @copydoc Control::OnKeyEvent() */ - virtual bool OnKeyEvent( const KeyEvent& event ); + bool OnKeyEvent(const KeyEvent& event) override; /** * @copydoc Control::GetNextKeyboardFocusableActor() */ - Actor GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled ); + Actor GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled); private: - /** * Recursively add any focusable actors or layout containers to the provided vector. * Include the top level actor if it is a layout container. @@ -489,7 +491,7 @@ private: * @param[in] parent The actor to start from * @param[in/out] focusableActors The vector to add focusable actors to */ - void AddFocusableChildren( Actor parent, std::vector< Actor >& focusableActors ); + void AddFocusableChildren(Actor parent, std::vector& focusableActors); /** * Recursively add any focusable actors or layout containers to the provided vector. @@ -497,10 +499,15 @@ private: * @param[in] parent The actor to start from * @param[in/out] focusableActors The vector to add focusable actors to */ - void AddFocusableChildrenRecursive( Actor parent, std::vector< Actor >& focusableActors ); + void AddFocusableChildrenRecursive(Actor parent, std::vector& focusableActors); -private: + /** + * Sets up the touch signals connections as required. + * @note This must be called after all the members have been created. + */ + void SetupTouch(); +private: // Undefined. Popup(const Popup&); @@ -508,73 +515,72 @@ private: Popup& operator=(const Popup& rhs); private: - Toolkit::Popup::TouchedOutsideSignalType mTouchedOutsideSignal; Toolkit::Popup::DisplayStateChangeSignalType mShowingSignal; Toolkit::Popup::DisplayStateChangeSignalType mShownSignal; Toolkit::Popup::DisplayStateChangeSignalType mHidingSignal; Toolkit::Popup::DisplayStateChangeSignalType mHiddenSignal; - Layer mLayer; ///< Popup Layer (i.e. Dim backing and PopupBg reside in this). - Toolkit::TableView mPopupLayout; ///< Popup Background (i.e. dialog reside in this). - Toolkit::Control mBacking; ///< Backing actor (dim effect). - Actor mPreviousFocusedActor; ///< Store the previous focused actor to restore the focus when popup hide. - Actor mTailImage; ///< Stores the tail image. - Actor mPopupContainer; ///< This actor is used to house the background image and the main popup layout. - Animation mAnimation; ///< The current animation in use used to manage display state changing. - bool mAlterAddedChild; ///< Flag used to control whether children are reparented or not. - bool mLayoutDirty; ///< Set to true whenever any property that would require a layout update is modified. - Timer mAutoHideTimer; ///< Used to perform an auto-hide of the popup if desired. - bool mTouchTransparent; ///< Allows all events to pass through the popup. + Layer mLayer; ///< Popup Layer (i.e. Dim backing and PopupBg reside in this). + Toolkit::TableView mPopupLayout; ///< Popup Background (i.e. dialog reside in this). + Toolkit::Control mBacking; ///< Backing actor (dim effect). + Actor mPreviousFocusedActor; ///< Store the previous focused actor to restore the focus when popup hide. + Actor mTailImage; ///< Stores the tail image. + Actor mPopupContainer; ///< This actor is used to house the background image and the main popup layout. + Animation mAnimation; ///< The current animation in use used to manage display state changing. + bool mAlterAddedChild; ///< Flag used to control whether children are reparented or not. + bool mLayoutDirty; ///< Set to true whenever any property that would require a layout update is modified. + Timer mAutoHideTimer; ///< Used to perform an auto-hide of the popup if desired. + bool mTouchTransparent; ///< Allows all events to pass through the popup. // Main Content related properties: - Actor mTitle; ///< Stores the text title. - Actor mContent; ///< Stores the unselected content. - Actor mFooter; ///< Stores the footer content (typically controls). + Actor mTitle; ///< Stores the text title. + Actor mContent; ///< Stores the unselected content. + Actor mFooter; ///< Stores the footer content (typically controls). // Display related properties. - Toolkit::Popup::DisplayState mDisplayState; ///< The current display state of the popup. - bool mTailVisible; ///< True if the popup tail should be visible. - Vector3 mTailPosition; ///< The position of the tail. - Toolkit::Popup::ContextualMode mContextualMode; ///< Allows the popup to be layed out adjacent to its parent in different directions. - float mAnimationDuration; ///< The duration of the transition in and out animations. - Toolkit::Popup::AnimationMode mAnimationMode; ///< The animation to use to transition in and out. - Dali::AnimationData mEntryAnimationData; ///< Stores description data that can be used for generating a custom entry animation. - Dali::AnimationData mExitAnimationData; ///< Stores description data that can be used for generating a custom exit animation. - unsigned int mAutoHideDelay; ///< If set, will auto-hide the popup after a specified amount of time. + Toolkit::Popup::DisplayState mDisplayState; ///< The current display state of the popup. + bool mTailVisible; ///< True if the popup tail should be visible. + Vector3 mTailPosition; ///< The position of the tail. + Toolkit::Popup::ContextualMode mContextualMode; ///< Allows the popup to be layed out adjacent to its parent in different directions. + float mAnimationDuration; ///< The duration of the transition in and out animations. + Toolkit::Popup::AnimationMode mAnimationMode; ///< The animation to use to transition in and out. + Dali::AnimationData mEntryAnimationData; ///< Stores description data that can be used for generating a custom entry animation. + Dali::AnimationData mExitAnimationData; ///< Stores description data that can be used for generating a custom exit animation. + unsigned int mAutoHideDelay; ///< If set, will auto-hide the popup after a specified amount of time. // Style related properties: - bool mBackingEnabled; ///< True if a dimmed backing will be used. - Vector4 mBackingColor; ///< The color of the backing. - Actor mPopupBackgroundImage; ///< Stores the background image. - Rect mBackgroundBorder; ///< Background border. - float mMargin; ///< Internal margin for popup contents. - std::string mTailUpImage; ///< Image used for the tail for the up direction. - std::string mTailDownImage; ///< Image used for the tail for the down direction. - std::string mTailLeftImage; ///< Image used for the tail for the left direction. - std::string mTailRightImage; ///< Image used for the tail for the right direction. + bool mBackingEnabled; ///< True if a dimmed backing will be used. + Vector4 mBackingColor; ///< The color of the backing. + Actor mPopupBackgroundImage; ///< Stores the background image. + Rect mBackgroundBorder; ///< Background border. + float mMargin; ///< Internal margin for popup contents. + std::string mTailUpImage; ///< Image used for the tail for the up direction. + std::string mTailDownImage; ///< Image used for the tail for the down direction. + std::string mTailLeftImage; ///< Image used for the tail for the left direction. + std::string mTailRightImage; ///< Image used for the tail for the right direction. }; } // namespace Internal // Helpers for public-api forwarding methods -inline Toolkit::Internal::Popup& GetImpl( Toolkit::Popup& publicObject ) +inline Toolkit::Internal::Popup& GetImpl(Toolkit::Popup& publicObject) { - DALI_ASSERT_ALWAYS( publicObject ); + DALI_ASSERT_ALWAYS(publicObject); Dali::RefObject& handle = publicObject.GetImplementation(); - return static_cast( handle ); + return static_cast(handle); } -inline const Toolkit::Internal::Popup& GetImpl( const Toolkit::Popup& publicObject ) +inline const Toolkit::Internal::Popup& GetImpl(const Toolkit::Popup& publicObject) { - DALI_ASSERT_ALWAYS( publicObject ); + DALI_ASSERT_ALWAYS(publicObject); const Dali::RefObject& handle = publicObject.GetImplementation(); - return static_cast( handle ); + return static_cast(handle); } } // namespace Toolkit