*/
class Control::Impl : public ConnectionTracker, public Visual::EventObserver
{
+ friend class Toolkit::DevelControl::AccessibleImpl;
+
public:
/**
* @brief Retrieves the implementation of the internal control class.
* 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
*/
Dali::Property GetVisualProperty(Dali::Property::Index index, Dali::Property::Key visualPropertyKey);
+ /**
+ * @brief Make visual transition from source control to this control about specific Property::Index
+ * If both of source and this control have Property::Index property, than create animation between them.
+ *
+ * @param[in] animation Return animation from source to this control.
+ * @param[in] source Source control to be used property animation.
+ * @param[in] visualIndex Property::Index to make animation.
+ * @param[in] alphaFunction alpha function of the animation.
+ * @param[in] timePeriod time period of the animation.
+ */
+ void MakeVisualTransition(Dali::Animation& animation, Dali::Toolkit::Control source, Dali::Property::Index visualIndex, AlphaFunction alphaFunction, TimePeriod timePeriod);
+
+ /**
+ * @brief Gets the current control's accessible object.
+ *
+ * @return The handle to Accessible object
+ */
+ Dali::Accessibility::Accessible* GetAccessibilityObject();
+
+ /**
+ * @brief Gets Accessible object handle.
+ *
+ * The method acquires Accessible handle from Actor object
+ * @param actor Actor object
+ * @return The handle to Accessible object
+ */
+ static Dali::Accessibility::Accessible* GetAccessibilityObject(Dali::Actor actor);
+
private:
/**
* Used as an alternative to boolean so that it is obvious whether a visual is enabled/disabled.
*/
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;
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;
+ 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;
Toolkit::DevelControl::AccessibilityDoGestureSignalType mAccessibilityDoGestureSignal;
std::string mAccessibilityName;
- bool mAccessibilityNameSet = false;
-
std::string mAccessibilityDescription;
- bool mAccessibilityDescriptionSet = false;
-
std::string mAccessibilityTranslationDomain;
+ bool mAccessibilityNameSet = false;
+ bool mAccessibilityDescriptionSet = false;
bool mAccessibilityTranslationDomainSet = false;
bool mAccessibilityHighlightable = false;
Dali::Accessibility::Role mAccessibilityRole = Dali::Accessibility::Role::UNKNOWN;
- std::vector<std::vector<Accessibility::Address>> mAccessibilityRelations;
- bool mAccessibilityAnimated = false;
+ std::vector<std::vector<Accessibility::Address>> mAccessibilityRelations;
+ std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Actor)> mAccessibilityConstructor;
+ std::unique_ptr<Dali::Accessibility::Accessible> mAccessibilityObject;
// Gesture Detection
PinchGestureDetector mPinchGestureDetector;
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;
-
- 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<Dali::Accessibility::Relation> 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&);
+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