1 #ifndef __DALI_PROPERTY_NOTIFICATION_H__
2 #define __DALI_PROPERTY_NOTIFICATION_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/public-api/object/base-handle.h>
23 #include <dali/public-api/object/property-notification-declarations.h>
24 #include <dali/public-api/object/property-conditions.h>
25 #include <dali/public-api/object/property.h>
30 namespace Internal DALI_INTERNAL
32 class PropertyNotification;
36 * @brief This is used to issue a notification upon a condition of the property being met.
38 * For example checking if Actor::POSITION_X > 100.0.
39 * @see Dali::PropertyCondition
41 class DALI_IMPORT_API PropertyNotification : public BaseHandle
45 * @brief Enumeration to describe how to check condition
49 Disabled, ///< Don't notify, regardless of result of Condition
50 NotifyOnTrue, ///< Notify whenever condition changes from false to true.
51 NotifyOnFalse, ///< Notify whenever condition changes from true to false.
52 NotifyOnChanged ///< Notify whenever condition changes (false to true, and true to false)
58 * @brief Create an uninitialized PropertyNotification; this can be initialized with PropertyNotification::New().
60 * Calling member functions with an uninitialized Dali::Object is not allowed.
62 PropertyNotification();
65 * @brief Downcast an Object handle to PropertyNotification.
67 * If handle points to an PropertyNotification object the downcast
68 * produces valid handle. If not the returned handle is left
71 * @param[in] handle to An object
72 * @return handle to a PropertyNotification object or an uninitialized handle
74 static PropertyNotification DownCast( BaseHandle handle );
79 * This is non-virtual since derived Handle types must not contain data or virtual methods.
81 ~PropertyNotification();
84 * @brief This copy constructor is required for (smart) pointer semantics.
86 * @param [in] handle A reference to the copied handle
88 PropertyNotification(const PropertyNotification& handle);
91 * @brief This assignment operator is required for (smart) pointer semantics.
93 * @param [in] rhs A reference to the copied handle
94 * @return A reference to this
96 PropertyNotification& operator=(const PropertyNotification& rhs);
99 * @brief Get the condition of this notification
101 * @return The condition is returned
103 PropertyCondition GetCondition();
106 * @brief Get the condition of this notification
108 * @return The condition is returned
110 const PropertyCondition& GetCondition() const;
113 * @brief Get the target handle that this notification is observing.
115 Dali::Handle GetTarget() const;
118 * @brief Get the target handle's property index that this notification
121 * @return The target property.
123 Property::Index GetTargetProperty() const;
126 * @brief Sets the Notification mode. This determines how the property
127 * notification should respond to the result of a condition.
129 * @param[in] mode Notification mode (Default is PropertyNotification::NotifyOnTrue)
131 void SetNotifyMode( NotifyMode mode );
134 * @brief Retrieves the current Notification mode.
136 * @return Notification mode.
138 NotifyMode GetNotifyMode();
141 * @brief Gets the result of the last condition check that caused a signal emit,
142 * useful when using NotifyOnChanged mode and need to know what it changed to.
144 * @return whether condition result that triggered last emit was true or false
146 bool GetNotifyResult() const;
149 * @brief Connect to this signal to be notified when the notification has occurred.
151 * @return A signal object to Connect() with.
153 PropertyNotifySignalV2& NotifySignal();
155 public: // Not intended for use by Application developers
158 * @brief This constructor is used by Dali New() methods.
160 * @param [in] propertyNotification A pointer to a newly allocated Dali resource
162 explicit DALI_INTERNAL PropertyNotification(Internal::PropertyNotification* propertyNotification);
167 #endif // __DALI_PROPERTY_NOTIFICATION_H__