#define DALI_TOOLKIT_CONTROL_IMPL_H
/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 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.
// EXTERNAL INCLUDES
#include <dali/public-api/adaptor-framework/style-change.h>
+#include <dali/public-api/animation/alpha-function.h>
+#include <dali/public-api/animation/time-period.h>
#include <dali/public-api/events/long-press-gesture.h>
#include <dali/public-api/events/pan-gesture.h>
#include <dali/public-api/events/pinch-gesture.h>
class StyleManager;
+namespace DevelControl
+{
+class ControlAccessible;
+
+} // namespace DevelControl
+
namespace Internal
{
/**
class Extension; ///< Forward declare future extension interface
// Creation & Destruction
-
/**
* @brief Creates a new ControlImpl instance that does not require touch by default.
*
*/
void ClearBackground();
+ /**
+ * @brief Called when resources of control are ready. this api does not request relayout.
+ */
+ void SetResourceReady();
+
+ // Accessibility
+
+ /**
+ * @brief Gets the Accessible object that represents this control.
+ *
+ * This method calls CreateAccessibleObject() if CreateAccessible is true.
+ *
+ * @return The Accessible object
+ *
+ * @see CreateAccessibleObject()
+ */
+ Toolkit::DevelControl::ControlAccessible* GetAccessibleObject();
+
// Gesture Detection
/**
/// @cond internal
/**
- * @brief Called by the AccessibilityManager to activate the Control.
- * @SINCE_1_0.0
- */
- DALI_INTERNAL void AccessibilityActivate();
-
- /**
* @brief Called by the KeyboardFocusManager.
* @SINCE_1_0.0
*/
*/
void OnLayoutNegotiated(float size, Dimension::Type dimension) override;
-protected: // Helpers for deriving classes
- // Construction
-
+public: // Helpers for deriving classes
/**
* @brief Flags for the constructor.
* @SINCE_1_0.0
static const int CONTROL_BEHAVIOUR_FLAG_COUNT = Log<LAST_CONTROL_BEHAVIOUR_FLAG - 1>::value + 1; ///< Total count of flags
/**
+ * @brief Creates a new ControlImpl instance that does not require touch by default.
+ *
+ * If touch is required, then the user can connect to this class' touch signal.
+ * @SINCE_2_1.8
+ * @param[in] additionalBehaviour Additional control behaviour.
+ * @return A handle to the ControlImpl instance
+ */
+ static Toolkit::Control New(ControlBehaviour additionalBehaviour);
+
+protected:
+ // Construction
+
+ /**
* @brief Control constructor.
*
* @SINCE_1_0.0
*/
virtual void OnInitialize();
+ /**
+ * @copydoc Dali::Toolkit::Control::IsResourceReady
+ */
+ virtual bool IsResourceReady() const;
+
// Styling
/**
*/
virtual bool OnAccessibilityZoom();
+ /**
+ * @brief This method should be overriden by deriving classes when they wish to be
+ * represented by a custom Accessible object implementation.
+ *
+ * The AT-SPI infrastructure is responsible for destroying the returned object.
+ *
+ * Currently, this method is called at most once in a given Control's lifetime, when
+ * GetAccessibleObject() is called for the first time. A future version of the
+ * AT-SPI infrastructure, however, may delete the Accessible object and request a new
+ * one to be created (by calling this method) multiple times, for example during
+ * scene connection and disconnection.
+ *
+ * @return The newly created Accessible object
+ *
+ * @see GetAccessibleObject()
+ */
+ virtual DevelControl::ControlAccessible* CreateAccessibleObject();
+
// Keyboard focus
/**
return NULL;
}
+ // Transition APIs
+
+ /**
+ * @brief Make visual transition from source control to destination control about specific Visual.
+ * If both of source and destination control have same visual index, than generates information for the transition of this Control.
+ *
+ * @param[out] sourcePropertyMap Source property map to be applied on this Control.
+ * @param[out] destinationPropertyMap Destination property map to be applied on this Control.
+ * @param[in] source Source control of the animation.
+ * @param[in] destination Destination control of the animation.
+ * @param[in] visualIndex Property::Index to make animation.
+ */
+ void MakeVisualTransition(Dali::Property::Map& sourcePropertyMap, Dali::Property::Map& destinationPropertyMap, Dali::Toolkit::Control source, Dali::Toolkit::Control destination, Dali::Property::Index visualIndex);
+
+ /**
+ * @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.
+ */
+ virtual void OnCreateTransitions(std::vector<std::pair<Dali::Property::Index, Dali::Property::Map>>& sourceProperties,
+ std::vector<std::pair<Dali::Property::Index, Dali::Property::Map>>& 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.
+ */
+ virtual void OnUpdateVisualProperties(const std::vector<std::pair<Dali::Property::Index, Dali::Property::Map>>& properties)
+ {
+ }
+
private:
/// @cond internal