Merge "Add BuildPickingRay to devel api" into devel/master
[platform/core/uifw/dali-core.git] / dali / public-api / object / property-notification.h
index 8246a4e..7772336 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_PROPERTY_NOTIFICATION_H__
-#define __DALI_PROPERTY_NOTIFICATION_H__
+#ifndef DALI_PROPERTY_NOTIFICATION_H
+#define DALI_PROPERTY_NOTIFICATION_H
 
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
 
 // INTERNAL INCLUDES
 #include <dali/public-api/object/base-handle.h>
-#include <dali/public-api/object/property-notification-declarations.h>
 #include <dali/public-api/object/property-conditions.h>
+#include <dali/public-api/object/property-notification-declarations.h>
 #include <dali/public-api/object/property.h>
 
-namespace Dali DALI_IMPORT_API
+namespace Dali
 {
+/**
+ * @addtogroup dali_core_object
+ * @{
+ */
 
 namespace Internal DALI_INTERNAL
 {
@@ -36,142 +40,171 @@ class PropertyNotification;
  * @brief This is used to issue a notification upon a condition of the property being met.
  *
  * For example checking if Actor::POSITION_X > 100.0.
+ * @SINCE_1_0.0
  * @see Dali::PropertyCondition
  */
-class DALI_IMPORT_API PropertyNotification : public BaseHandle
+class DALI_CORE_API PropertyNotification : public BaseHandle
 {
 public:
   /**
-   * @brief Enumeration to describe how to check condition
+   * @brief Enumeration for description of how to check condition.
+   * @SINCE_1_0.0
    */
   enum NotifyMode
   {
-    Disabled,                             ///< Don't notify, regardless of result of Condition
-    NotifyOnTrue,                         ///< Notify whenever condition changes from false to true.
-    NotifyOnFalse,                        ///< Notify whenever condition changes from true to false.
-    NotifyOnChanged                       ///< Notify whenever condition changes (false to true, and true to false)
+    DISABLED,         ///< Don't notify, regardless of result of Condition @SINCE_1_9.28
+    NOTIFY_ON_TRUE,   ///< Notify whenever condition changes from false to true. @SINCE_1_9.28
+    NOTIFY_ON_FALSE,  ///< Notify whenever condition changes from true to false. @SINCE_1_9.28
+    NOTIFY_ON_CHANGED ///< Notify whenever condition changes (false to true, and true to false) @SINCE_1_9.28
   };
 
 public:
-
   /**
-   * @brief Create an uninitialized PropertyNotification; this can be initialized with PropertyNotification::New().
+   * @brief Creates an uninitialized PropertyNotification; this can be initialized with PropertyNotification::New().
    *
    * Calling member functions with an uninitialized Dali::Object is not allowed.
+   * @SINCE_1_0.0
    */
   PropertyNotification();
 
   /**
-   * @brief Downcast an Object handle to PropertyNotification.
+   * @brief Downcasts a handle to PropertyNotification handle.
    *
-   * If handle points to an PropertyNotification object the downcast
-   * produces valid handle. If not the returned handle is left
+   * If handle points to a PropertyNotification object, the downcast
+   * produces valid handle. If not, the returned handle is left
    * uninitialized.
    *
+   * @SINCE_1_0.0
    * @param[in] handle to An object
    * @return handle to a PropertyNotification object or an uninitialized handle
    */
-  static PropertyNotification DownCast( BaseHandle handle );
+  static PropertyNotification DownCast(BaseHandle handle);
 
   /**
-   * @brief Destructor
+   * @brief Destructor.
    *
    * This is non-virtual since derived Handle types must not contain data or virtual methods.
+   * @SINCE_1_0.0
    */
   ~PropertyNotification();
 
   /**
    * @brief This copy constructor is required for (smart) pointer semantics.
    *
-   * @param [in] handle A reference to the copied handle
+   * @SINCE_1_0.0
+   * @param[in] handle A reference to the copied handle
    */
   PropertyNotification(const PropertyNotification& handle);
 
   /**
    * @brief This assignment operator is required for (smart) pointer semantics.
    *
-   * @param [in] rhs  A reference to the copied handle
+   * @SINCE_1_0.0
+   * @param[in] rhs A reference to the copied handle
    * @return A reference to this
    */
   PropertyNotification& operator=(const PropertyNotification& rhs);
 
   /**
-   * @brief This method is defined to allow assignment of the NULL value,
-   * and will throw an exception if passed any other value.
+   * @brief Move constructor.
    *
-   * Assigning to NULL is an alias for Reset().
-   * @param [in] rhs  A NULL pointer
+   * @SINCE_1_9.22
+   * @param[in] rhs A reference to the moved handle
+   */
+  PropertyNotification(PropertyNotification&& rhs) noexcept;
+
+  /**
+   * @brief Move assignment operator.
+   *
+   * @SINCE_1_9.22
+   * @param[in] rhs A reference to the moved handle
    * @return A reference to this handle
    */
-  PropertyNotification& operator=(BaseHandle::NullType* rhs);
+  PropertyNotification& operator=(PropertyNotification&& rhs) noexcept;
 
   /**
-   * @brief Get the condition of this notification
+   * @brief Gets the condition of this notification.
    *
+   * @SINCE_1_0.0
    * @return The condition is returned
    */
   PropertyCondition GetCondition();
 
   /**
-   * @brief Get the condition of this notification
+   * @brief Gets the condition of this notification.
    *
+   * @SINCE_1_0.0
    * @return The condition is returned
    */
   const PropertyCondition& GetCondition() const;
 
   /**
-   * @brief Get the target handle that this notification is observing.
+   * @brief Gets the target handle that this notification is observing.
+   * @SINCE_1_0.0
+   * @return The target handle
    */
   Dali::Handle GetTarget() const;
 
   /**
-   * @brief Get the target handle's property index that this notification
+   * @brief Gets the target handle's property index that this notification
    * is observing.
    *
-   * @return The target property.
+   * @SINCE_1_0.0
+   * @return The target property
    */
   Property::Index GetTargetProperty() const;
 
   /**
-   * @brief Sets the Notification mode. This determines how the property
+   * @brief Sets the Notification mode.
+   *
+   * This determines how the property
    * notification should respond to the result of a condition.
    *
-   * @param[in] mode Notification mode (Default is PropertyNotification::NotifyOnTrue)
+   * @SINCE_1_0.0
+   * @param[in] mode Notification mode (Default is PropertyNotification::NOTIFY_ON_TRUE)
    */
-  void SetNotifyMode( NotifyMode mode );
+  void SetNotifyMode(NotifyMode mode);
 
   /**
    * @brief Retrieves the current Notification mode.
    *
-   * @return Notification mode.
+   * @SINCE_1_0.0
+   * @return Notification mode
    */
   NotifyMode GetNotifyMode();
 
   /**
    * @brief Gets the result of the last condition check that caused a signal emit,
-   * useful when using NotifyOnChanged mode and need to know what it changed to.
+   * useful when using NOTIFY_ON_CHANGED mode and need to know what it changed to.
    *
+   * @SINCE_1_0.0
    * @return whether condition result that triggered last emit was true or false
    */
   bool GetNotifyResult() const;
 
   /**
-   * @brief Connect to this signal to be notified when the notification has occurred.
+   * @brief Connects to this signal to be notified when the notification has occurred.
    *
-   * @return A signal object to Connect() with.
+   * @SINCE_1_0.0
+   * @return A signal object to Connect() with
    */
-  PropertyNotifySignalV2& NotifySignal();
+  PropertyNotifySignalType& NotifySignal();
 
 public: // Not intended for use by Application developers
-
+  /// @cond internal
   /**
    * @brief This constructor is used by Dali New() methods.
    *
-   * @param [in] propertyNotification A pointer to a newly allocated Dali resource
+   * @SINCE_1_0.0
+   * @param[in] propertyNotification A pointer to a newly allocated Dali resource
    */
   explicit DALI_INTERNAL PropertyNotification(Internal::PropertyNotification* propertyNotification);
+  /// @endcond
 };
 
+/**
+ * @}
+ */
 } // namespace Dali
 
-#endif // __DALI_PROPERTY_NOTIFICATION_H__
+#endif // DALI_PROPERTY_NOTIFICATION_H