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=793fc22c5f1a261faefbea94dc14a3415523ab14;hp=d944114bf4167bad19eb696ffc25de430e52a71d;hb=a44d1f25dfb55db30bb839e4b30ae1f85b541118;hpb=9ddd5fea6278d06b8874988498c7c4c6508750ba diff --git a/dali-toolkit/internal/controls/control/control-data-impl.h b/dali-toolkit/internal/controls/control/control-data-impl.h index d944114..793fc22 100644 --- 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) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -35,7 +35,9 @@ #include #include #include +#include #include +#include namespace Dali { @@ -69,6 +71,8 @@ typedef Dali::OwnerContainer RegisteredVisualContainer; */ class Control::Impl : public ConnectionTracker, public Visual::EventObserver { + friend class Toolkit::DevelControl::ControlAccessible; + public: /** * @brief Retrieves the implementation of the internal control class. @@ -137,6 +141,12 @@ public: void NotifyVisualEvent(Visual::Base& object, Property::Index signalId) override; /** + * @brief Called when the visual needs relayout request. + * @param[in] object The visual who requests relayout + */ + void RelayoutRequest(Visual::Base& object) override; + + /** * @copydoc Dali::Toolkit::DevelControl::RegisterVisual() */ void RegisterVisual(Property::Index index, Toolkit::Visual::Base& visual); @@ -340,8 +350,7 @@ public: * Attribute is added if not existed previously or updated * if existed. */ - void AppendAccessibilityAttribute(const std::string& key, - const std::string value); + void AppendAccessibilityAttribute(const std::string& key, const std::string value); /** * @brief Removes accessibility attribute @@ -391,6 +400,40 @@ public: */ Dali::Property GetVisualProperty(Dali::Property::Index index, Dali::Property::Key visualPropertyKey); + /** + * @brief Retrieves source and destination visual properties for the Transition of this Control. + * The properties of this Control will be transitioned from the propeties of source Control to that of destination control. + * If a property value is different between source and destination Control, + * the property information of each Control will be included in sourceProperties and destinationProperties. + * + * @param[out] sourceProperties Source property list to be applied on this Control. + * @param[out] destinationProperties Destination property list to be applied on this Control. + * @param[in] source Source control of the animation. + * @param[in] destination Destination control of the animation. + * + * @note This method do not handle Actor properties. + * And the size and order of the sourceProperties and destinationProperties must be synchronized. + * + * This method triggers Control::OnCreateTransition(). + */ + void CreateTransitions(std::vector>& sourceProperties, + std::vector>& destinationProperties, + Dali::Toolkit::Control source, + Dali::Toolkit::Control destination); + + /** + * @brief Update visual properties. + * @param[in] properties Property list to be used to update visual properties of this Control. + * + * @note This method triggers Control::OnUpdateVisualProperties(). + */ + void UpdateVisualProperties(const std::vector>& properties); + + /** + * @copydoc Dali::Toolkit::Internal::Control::GetAccessibleObject() + */ + Toolkit::DevelControl::ControlAccessible* GetAccessibleObject(); + private: /** * Used as an alternative to boolean so that it is obvious whether a visual is enabled/disabled. @@ -439,28 +482,47 @@ private: */ void OnIdleCallback(); + /** + * @brief Checks highlighted object geometry if it is showing or not + */ + void CheckHighlightedObjectGeometry(); + + /** + * @brief Register property notification to check highlighted object position + */ + void RegisterAccessibilityPositionPropertyNotification(); + + /** + * @brief Remove property notification added by RegisterPropertyNotification + */ + void UnregisterAccessibilityPositionPropertyNotification(); + 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. - int mUpFocusableActorId; ///< Actor ID of Up focusable control. - int mDownFocusableActorId; ///< Actor ID of Down focusable control. - - RegisteredVisualContainer mVisuals; ///< Stores visuals needed by the control, non trivial type so std::vector used. - 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::Control::ResourceReadySignalType mResourceReadySignal; - DevelControl::VisualEventSignalType mVisualEventSignal; + int mLeftFocusableActorId; ///< Actor ID of Left focusable control. + int mRightFocusableActorId; ///< Actor ID of Right focusable control. + int mUpFocusableActorId; ///< Actor ID of Up focusable control. + int mDownFocusableActorId; ///< Actor ID of Down focusable control. + int mClockwiseFocusableActorId; ///< Actor ID of Clockwise focusable control. + int mCounterClockwiseFocusableActorId; ///< Actor ID of Counter clockwise focusable control. + + RegisteredVisualContainer mVisuals; ///< Stores visuals needed by the control, non trivial type so std::vector used. + 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::Control::ResourceReadySignalType mResourceReadySignal; + DevelControl::VisualEventSignalType mVisualEventSignal; + + // Accessibility Toolkit::DevelControl::AccessibilityActivateSignalType mAccessibilityActivateSignal; Toolkit::DevelControl::AccessibilityReadingSkippedSignalType mAccessibilityReadingSkippedSignal; Toolkit::DevelControl::AccessibilityReadingPausedSignalType mAccessibilityReadingPausedSignal; @@ -473,21 +535,17 @@ public: Toolkit::DevelControl::AccessibilityDoGestureSignalType mAccessibilityDoGestureSignal; std::string mAccessibilityName; - bool mAccessibilityNameSet = false; - std::string mAccessibilityDescription; - bool mAccessibilityDescriptionSet = false; - std::string mAccessibilityTranslationDomain; - bool mAccessibilityTranslationDomainSet = false; + std::string mAutomationId; - bool mAccessibilityHighlightable = false; - bool mAccessibilityHighlightableSet = false; + bool mAccessibilityHighlightable = false; + bool mAccessibilityHidden = false; Dali::Accessibility::Role mAccessibilityRole = Dali::Accessibility::Role::UNKNOWN; - std::vector> mAccessibilityRelations; - bool mAccessibilityAnimated = false; + std::map> mAccessibilityRelations; + std::unique_ptr mAccessibleObject; // Gesture Detection PinchGestureDetector mPinchGestureDetector; @@ -506,6 +564,7 @@ public: 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. + bool mDispatchKeyEvents : 1; ///< Whether the actor emits key event signals RegisteredVisualContainer mRemoveVisuals; ///< List of visuals that are being replaced by another visual once ready @@ -532,70 +591,16 @@ public: static const PropertyRegistration PROPERTY_20; static const PropertyRegistration PROPERTY_21; static const PropertyRegistration PROPERTY_22; + static const PropertyRegistration PROPERTY_23; + static const PropertyRegistration PROPERTY_24; + static const PropertyRegistration PROPERTY_25; + static const PropertyRegistration PROPERTY_26; - /** - * 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; - - 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(Actor)> accessibilityConstructor; - std::unique_ptr accessibilityObject; - Dali::PropertyNotification accessibilityNotificationPosition, accessibilityNotificationSize, accessibilityNotificationCulled; - bool accessibilityNotificationSet = false; - static void PositionOrSizeChangedCallback(PropertyNotification&); - static void CulledChangedCallback(PropertyNotification&); +private: + // Accessibility - notification for highlighted object to check if it is showing. + bool mIsAccessibilityPositionPropertyNotificationSet{false}; + Dali::PropertyNotification mAccessibilityPositionNotification; + Dali::Accessibility::ScreenRelativeMoveType mAccessibilityLastScreenRelativeMoveType{Accessibility::ScreenRelativeMoveType::OUTSIDE}; }; } // namespace Internal