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;
/**
* @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 );
*/
bool IsResourceReady() const;
+ /**
+ * @copydoc CustomActorImpl::OnStageDisconnection()
+ */
+ void OnStageDisconnection();
+
+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;
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;