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=8d34435728757e4f16987db260998a24bcc3ef4b;hp=ddd7506590ba2356090ac38158c497dd625c3a41;hb=e3d6a0a27fd980a4ced6e7257abdc32bc192e871;hpb=05e6b5073a18b6ebe1f536a3693300b3ee35b199 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 ddd7506..8d34435 --- 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. @@ -20,18 +20,24 @@ // EXTERNAL INCLUDES #include +#include #include +#include #include // INTERNAL INCLUDES -#include +#include #include #include #include -#include -#include #include +#include +#include +#include #include +#include +#include +#include namespace Dali { @@ -64,7 +70,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: @@ -83,7 +89,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 ); @@ -123,9 +129,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. + */ + 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 ); + void NotifyVisualEvent( Visual::Base& object, Property::Index signalId ) override; /** * @copydoc Dali::Toolkit::DevelControl::RegisterVisual() @@ -185,6 +199,16 @@ public: 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 ); @@ -272,9 +296,9 @@ public: bool IsResourceReady() const; /** - * @copydoc CustomActorImpl::OnStageDisconnection() + * @copydoc CustomActorImpl::OnSceneDisconnection() */ - void OnStageDisconnection(); + void OnSceneDisconnection(); /** * @brief Sets the margin. @@ -300,6 +324,73 @@ public: */ 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 ); + + /** + * @brief Adds accessibility attribute + * @param[in] key Attribute name to set + * @param[in] value Attribute value to set + * + * Attribute is added if not existed previously or updated + * if existed. + */ + void AppendAccessibilityAttribute( const std::string& key, + const std::string value ); + + /** + * @brief Removes accessibility attribute + * @param[in] key Attribute name to remove + * + * Function does nothing if attribute doesn't exist. + */ + void RemoveAccessibilityAttribute( const std::string& key ); + + /** + * @brief Removes all accessibility attributes + */ + void ClearAccessibilityAttributes(); + + /** + * @brief Sets reading info type attributes + * @param[in] types info type attributes to set + * + * This function sets, which part of object will be read out + * by screen-reader. + */ + void SetAccessibilityReadingInfoType( const Dali::Accessibility::ReadingInfoTypes types ); + + /** + * @brief Gets currently active reading info type attributes + */ + Dali::Accessibility::ReadingInfoTypes GetAccessibilityReadingInfoType() const; + + /** + * @copydoc DevelControl::VisualEventSignal() + */ + DevelControl::VisualEventSignalType& VisualEventSignal(); + + /** + * @brief Sets the shadow with a property map. + * @param[in] map The shadow property map + */ + void SetShadow(const Property::Map& map); + + /** + * @brief Clear the shadow. + */ + void ClearShadow(); + private: /** @@ -339,11 +430,22 @@ private: */ void RegisterVisual( Property::Index index, Toolkit::Visual::Base& visual, VisualState::Type enabled, DepthIndexValue::Type depthIndexValueSet, int depthIndex = 0 ); + /** + * @brief Emits the resource ready signal. + */ + void EmitResourceReadySignal(); + + /** + * @brief Callbacks called on idle. + */ + void OnIdleCallback(); + public: Control& mControlImpl; DevelControl::State mState; std::string mSubStateName; + Property::Map mAccessibilityAttributes; int mLeftFocusableActorId; ///< Actor ID of Left focusable control. int mRightFocusableActorId; ///< Actor ID of Right focusable control. @@ -360,6 +462,34 @@ public: Toolkit::Control::KeyInputFocusSignalType mKeyInputFocusGainedSignal; Toolkit::Control::KeyInputFocusSignalType mKeyInputFocusLostSignal; Toolkit::Control::ResourceReadySignalType mResourceReadySignal; + DevelControl::VisualEventSignalType mVisualEventSignal; + Toolkit::DevelControl::AccessibilityActivateSignalType mAccessibilityActivateSignal; + Toolkit::DevelControl::AccessibilityReadingSkippedSignalType mAccessibilityReadingSkippedSignal; + Toolkit::DevelControl::AccessibilityReadingPausedSignalType mAccessibilityReadingPausedSignal; + Toolkit::DevelControl::AccessibilityReadingResumedSignalType mAccessibilityReadingResumedSignal; + Toolkit::DevelControl::AccessibilityReadingCancelledSignalType mAccessibilityReadingCancelledSignal; + Toolkit::DevelControl::AccessibilityReadingStoppedSignalType mAccessibilityReadingStoppedSignal; + + Toolkit::DevelControl::AccessibilityGetNameSignalType mAccessibilityGetNameSignal; + Toolkit::DevelControl::AccessibilityGetDescriptionSignalType mAccessibilityGetDescriptionSignal; + Toolkit::DevelControl::AccessibilityDoGestureSignalType mAccessibilityDoGestureSignal; + + std::string mAccessibilityName; + bool mAccessibilityNameSet = false; + + std::string mAccessibilityDescription; + bool mAccessibilityDescriptionSet = false; + + std::string mAccessibilityTranslationDomain; + bool mAccessibilityTranslationDomainSet = false; + + bool mAccessibilityHighlightable = false; + bool mAccessibilityHighlightableSet = false; + + Dali::Accessibility::Role mAccessibilityRole = Dali::Accessibility::Role::UNKNOWN; + + std::vector> mAccessibilityRelations; + bool mAccessibilityAnimated = false; // Gesture Detection PinchGestureDetector mPinchGestureDetector; @@ -370,12 +500,18 @@ public: // Tooltip TooltipPtr mTooltip; + InputMethodContext mInputMethodContext; + CallbackBase* mIdleCallback; ///< The idle callback to emit the resource ready signal. + 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. + bool mIsEmittingResourceReadySignal :1; ///< True during ResourceReady(). + bool mNeedToEmitResourceReady :1; ///< True if need to emit the resource ready signal again. 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; @@ -391,6 +527,79 @@ public: static const PropertyRegistration PROPERTY_12; static const PropertyRegistration PROPERTY_13; static const PropertyRegistration PROPERTY_14; + static const PropertyRegistration PROPERTY_15; + static const PropertyRegistration PROPERTY_16; + static const PropertyRegistration PROPERTY_17; + static const PropertyRegistration PROPERTY_18; + static const PropertyRegistration PROPERTY_19; + static const PropertyRegistration PROPERTY_20; + static const PropertyRegistration PROPERTY_21; + static const PropertyRegistration PROPERTY_22; + + /** + * The method acquires Accessible handle from Actor object + * @param actor Actor object + * @return handle to Accessible object + */ + static Dali::Accessibility::Accessible *GetAccessibilityObject(Dali::Actor actor); + Dali::Accessibility::Accessible *GetAccessibilityObject(); + + void AccessibilityRegister(); + void AccessibilityDeregister(); + + struct AccessibleImpl : public virtual Dali::Accessibility::Accessible, + public virtual Dali::Accessibility::Component, + public virtual Dali::Accessibility::Collection, + public virtual Dali::Accessibility::Action + { + Dali::Actor self; + bool modal = false, root = false; + + AccessibleImpl(Dali::Actor self, Dali::Accessibility::Role role, bool modal = false); + + std::string GetName() override; + virtual std::string GetNameRaw(); + std::string GetDescription() override; + virtual std::string GetDescriptionRaw(); + Dali::Accessibility::Accessible* GetParent() override; + size_t GetChildCount() override; + Dali::Accessibility::Accessible* GetChildAtIndex( size_t index ) override; + size_t GetIndexInParent() override; + Dali::Accessibility::Role GetRole() override; + Dali::Accessibility::States GetStates() override; + Dali::Accessibility::Attributes GetAttributes() override; + Dali::Rect<> GetExtents( Dali::Accessibility::CoordType ctype ) override; + Dali::Accessibility::ComponentLayer GetLayer() override; + int16_t GetMdiZOrder() override; + bool GrabFocus() override; + double GetAlpha() override; + bool GrabHighlight() override; + bool ClearHighlight() override; + int GetHighlightIndex() override; + + std::string GetActionName( size_t index ) override; + std::string GetLocalizedActionName( size_t index ) override; + std::string GetActionDescription( size_t index ) override; + size_t GetActionCount() override; + std::string GetActionKeyBinding(size_t index) override; + bool DoAction(size_t index) override; + bool DoAction(const std::string& name) override; + bool DoGesture(const Dali::Accessibility::GestureInfo &gestureInfo) override; + std::vector GetRelationSet() override; + + virtual Dali::Accessibility::States CalculateStates(); + virtual void EnsureChildVisible(Actor child); + virtual void EnsureSelfVisible(); + virtual Property::Index GetNamePropertyIndex(); + virtual Property::Index GetDescriptionPropertyIndex(); + }; + + std::function< std::unique_ptr< Dali::Accessibility::Accessible >( Actor ) > accessibilityConstructor; + std::unique_ptr< Dali::Accessibility::Accessible > accessibilityObject; + Dali::PropertyNotification accessibilityNotificationPosition, accessibilityNotificationSize, accessibilityNotificationCulled; + bool accessibilityNotificationSet = false; + static void PositionOrSizeChangedCallback( PropertyNotification& ); + static void CulledChangedCallback( PropertyNotification& ); };