X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fcontrol%2Fcontrol-data-impl.h;h=370cf2e9896947ad2ff440207410d8e8a48f434c;hp=2ee216f5836f38918ff68d984854ae410d8a983f;hb=4d3140d11ea9df2cf933d32419f49fc5e63fa4a9;hpb=c207c7aae76e4a6111656669fbed81052513b460 diff --git a/dali-toolkit/internal/controls/control/control-data-impl.h b/dali-toolkit/internal/controls/control/control-data-impl.h old mode 100644 new mode 100755 index 2ee216f..370cf2e --- a/dali-toolkit/internal/controls/control/control-data-impl.h +++ b/dali-toolkit/internal/controls/control/control-data-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_CONTROL_DATA_IMPL_H /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 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. @@ -24,13 +24,14 @@ #include // INTERNAL INCLUDES -#include +#include #include #include #include #include #include #include +#include namespace Dali { @@ -41,20 +42,21 @@ namespace Toolkit namespace Internal { -/** + /** * Struct used to store Visual within the control, index is a unique key for each visual. */ - struct RegisteredVisual - { - Property::Index index; - Toolkit::Visual::Base visual; - bool enabled; - - RegisteredVisual( Property::Index aIndex, Toolkit::Visual::Base &aVisual, bool aEnabled) - : index(aIndex), visual(aVisual), enabled(aEnabled) - { - } - }; +struct RegisteredVisual +{ + Property::Index index; + Toolkit::Visual::Base visual; + bool enabled : 1; + bool pending : 1; + + RegisteredVisual( Property::Index aIndex, Toolkit::Visual::Base &aVisual, bool aEnabled, bool aPendingReplacement ) + : index(aIndex), visual(aVisual), enabled(aEnabled), pending( aPendingReplacement ) + { + } +}; typedef Dali::OwnerContainer< RegisteredVisual* > RegisteredVisualContainer; @@ -62,7 +64,7 @@ typedef Dali::OwnerContainer< RegisteredVisual* > RegisteredVisualContainer; /** * @brief Holds the Implementation for the internal control class */ -class Control::Impl : public ConnectionTracker, public Visual::ResourceObserver +class Control::Impl : public ConnectionTracker, public Visual::EventObserver { public: @@ -81,7 +83,7 @@ public: /** * @brief Constructor. - * @param[in] controlImpl The control which own this implementation + * @param[in] controlImpl The control which owns this implementation */ Impl( Control& controlImpl ); @@ -121,9 +123,17 @@ public: /** * @brief Called when a resource is ready. * @param[in] object The visual whose resources are ready - * @note Overriding method in Visual::ResourceObserver. + * @note Overriding method in Visual::EventObserver. + */ + virtual void ResourceReady( Visual::Base& object ) override; + + /** + * @brief Called when an event occurs. + * @param[in] object The visual whose events occur + * @param[in] signalId The signal to emit. See Visual to find supported signals + * @note Overriding method in Visual::EventObserver. */ - virtual void ResourceReady( Visual::Base& object ); + virtual void NotifyVisualEvent( Visual::Base& object, Property::Index signalId ) override; /** * @copydoc Dali::Toolkit::DevelControl::RegisterVisual() @@ -133,9 +143,19 @@ public: /** * @copydoc Dali::Toolkit::DevelControl::RegisterVisual() */ + void RegisterVisual( Property::Index index, Toolkit::Visual::Base& visual, int depthIndex ); + + /** + * @copydoc Dali::Toolkit::DevelControl::RegisterVisual() + */ void RegisterVisual( Property::Index index, Toolkit::Visual::Base& visual, bool enabled ); /** + * @copydoc Dali::Toolkit::DevelControl::RegisterVisual() + */ + void RegisterVisual( Property::Index index, Toolkit::Visual::Base& visual, bool enabled, int depthIndex ); + + /** * @copydoc Dali::Toolkit::DevelControl::UnregisterVisual() */ void UnregisterVisual( Property::Index index ); @@ -168,11 +188,31 @@ public: void StartObservingVisual( Toolkit::Visual::Base& visual); /** + * @copydoc Dali::Toolkit::DevelControl::GetVisualResourceStatus() + */ + Toolkit::Visual::ResourceStatus GetVisualResourceStatus( Property::Index index ) const; + + /** + * @param[in,out] animation Handle to existing animation, or an empty handle that + * can be set to a New animation if createAnimation is true + * @param[in] transitionData The transition data describing the animation + * @param[in] createAnimation True if the animation should be created + */ + void AddTransitions( Dali::Animation& animation, + const Toolkit::TransitionData& transitionData, + bool createAnimation = false ); + + /** * @copydoc Dali::Toolkit::DevelControl::CreateTransition() */ Dali::Animation CreateTransition( const Toolkit::TransitionData& transitionData ); /** + * @copydoc Dali::Toolkit::DevelControl::DoAction() + */ + void DoAction( Dali::Property::Index visualIndex, Dali::Property::Index actionId, const Dali::Property::Value attributes ); + + /** * @brief Function used to set control properties. * @param[in] object The object whose property to set * @param[in] index The index of the property to set @@ -249,6 +289,94 @@ public: */ bool IsResourceReady() const; + /** + * @copydoc CustomActorImpl::OnStageDisconnection() + */ + void OnStageDisconnection(); + + /** + * @brief Sets the margin. + * @param[in] margin Margin is a collections of extent ( start, end, top, bottom ) + */ + void SetMargin( Extents margin ); + + /** + * @brief Returns the value of margin + * @return The value of margin + */ + Extents GetMargin() const; + + /** + * @brief Sets the padding. + * @param[in] padding Padding is a collections of extent ( start, end, top, bottom ). + */ + void SetPadding( Extents padding ); + + /** + * @brief Returns the value of padding + * @return The value of padding + */ + Extents GetPadding() const; + + /** + * @brief Set the input method context. + * @param[in] inputMethodContext The input method context. + */ + void SetInputMethodContext( InputMethodContext& inputMethodContext ); + + /** + * @brief Filter an key event. + * @param[in] event The key to be filtered. + * @return True if the key handled, otherwise false. + */ + bool FilterKeyEvent( const KeyEvent& event ); + + /** + * @copydoc DevelControl::VisualEventSignal() + */ + DevelControl::VisualEventSignalType& VisualEventSignal(); + +private: + + /** + * Used as an alternative to boolean so that it is obvious whether a visual is enabled/disabled. + */ + struct VisualState + { + enum Type + { + DISABLED = 0, ///< Visual disabled. + ENABLED = 1 ///< Visual enabled. + }; + }; + + /** + * Used as an alternative to boolean so that it is obvious whether a visual's depth value has been set or not by the caller. + */ + struct DepthIndexValue + { + enum Type + { + NOT_SET = 0, ///< Visual depth value not set by caller. + SET = 1 ///< Visual depth value set by caller. + }; + }; + + /** + * @brief Adds the visual to the list of registered visuals. + * @param[in] index The Property index of the visual, used to reference visual + * @param[in,out] visual The visual to register, which can be altered in this function + * @param[in] enabled false if derived class wants to control when visual is set on stage + * @param[in] depthIndexValueSet Set to true if the depthIndex has actually been set manually + * @param[in] depthIndex The visual's depth-index is set to this + * + * @note Registering a visual with an index that already has a registered visual will replace it. The replacement will + * occur once the replacement visual is ready (loaded). + */ + void RegisterVisual( Property::Index index, Toolkit::Visual::Base& visual, VisualState::Type enabled, DepthIndexValue::Type depthIndexValueSet, int depthIndex = 0 ); + +public: + Control& mControlImpl; DevelControl::State mState; std::string mSubStateName; @@ -262,11 +390,13 @@ public: std::string mStyleName; Vector4 mBackgroundColor; ///< The color of the background visual Vector3* mStartingPinchScale; ///< The scale when a pinch gesture starts, TODO: consider removing this + Extents mMargin; ///< The margin values + Extents mPadding; ///< The padding values Toolkit::Control::KeyEventSignalType mKeyEventSignal; Toolkit::Control::KeyInputFocusSignalType mKeyInputFocusGainedSignal; Toolkit::Control::KeyInputFocusSignalType mKeyInputFocusLostSignal; - - Toolkit::DevelControl::ResourceReadySignalType mResourceReadySignal; + Toolkit::Control::ResourceReadySignalType mResourceReadySignal; + DevelControl::VisualEventSignalType mVisualEventSignal; // Gesture Detection PinchGestureDetector mPinchGestureDetector; @@ -277,10 +407,15 @@ public: // Tooltip TooltipPtr mTooltip; + InputMethodContext mInputMethodContext; + ControlBehaviour mFlags : CONTROL_BEHAVIOUR_FLAG_COUNT; ///< Flags passed in from constructor. bool mIsKeyboardNavigationSupported :1; ///< Stores whether keyboard navigation is supported by the control. bool mIsKeyboardFocusGroup :1; ///< Stores whether the control is a focus group. + RegisteredVisualContainer mRemoveVisuals; ///< List of visuals that are being replaced by another visual once ready + + // Properties - these need to be members of Internal::Control::Impl as they access private methods/data of Internal::Control and Internal::Control::Impl. static const PropertyRegistration PROPERTY_1; static const PropertyRegistration PROPERTY_2; @@ -294,6 +429,9 @@ public: static const PropertyRegistration PROPERTY_10; static const PropertyRegistration PROPERTY_11; static const PropertyRegistration PROPERTY_12; + static const PropertyRegistration PROPERTY_13; + static const PropertyRegistration PROPERTY_14; + static const PropertyRegistration PROPERTY_15; };