[dali_2.3.26] Merge branch 'devel/master'
[platform/core/uifw/dali-core.git] / dali / internal / event / common / property-notification-manager.h
index 63e2693..c6d0477 100644 (file)
@@ -1,35 +1,33 @@
-#ifndef __DALI_INTERNAL_PROPERTY_NOTIFICATION_MANAGER_H__
-#define __DALI_INTERNAL_PROPERTY_NOTIFICATION_MANAGER_H__
-
-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://floralicense.org/license/
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// EXTERNAL INCLUDES
-#include <set>
+#ifndef DALI_INTERNAL_PROPERTY_NOTIFICATION_MANAGER_H
+#define DALI_INTERNAL_PROPERTY_NOTIFICATION_MANAGER_H
+
+/*
+ * Copyright (c) 2024 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
 
 // INTERNAL INCLUDES
-#include <dali/internal/common/message.h>
+#include <dali/integration-api/ordered-set.h>
 #include <dali/internal/event/common/property-notifier.h>
+#include <dali/internal/event/common/scene-graph-notifier-interface-mapper.h>
+#include <dali/public-api/common/dali-vector.h>
 
 namespace Dali
 {
-
 namespace Internal
 {
-
 class PropertyNotification;
 
 /**
@@ -38,10 +36,9 @@ class PropertyNotification;
  * It also monitors the lifetime of PropertyNotification objects and will
  * only emit signals for PropertyNotification objects which are still valid.
  */
-class PropertyNotificationManager : public PropertyNotifier
+class PropertyNotificationManager : public PropertyNotifier, public SceneGraphNotifierInterfaceMapper<PropertyNotification>
 {
 public:
-
   /**
    * Create an PropertyNotificationManager.
    * @return A newly allocated object.
@@ -51,27 +48,25 @@ public:
   /**
    * Virtual destructor.
    */
-  virtual ~PropertyNotificationManager();
+  ~PropertyNotificationManager() override;
 
   /**
    * Called when a PropertyNotification is constructed.
    */
-  void PropertyNotificationCreated( PropertyNotification& propertyNotification );
+  void PropertyNotificationCreated(PropertyNotification& propertyNotification);
 
   /**
    * Called when a PropertyNotification is destroyed.
    */
-  void PropertyNotificationDestroyed( PropertyNotification& propertyNotification );
+  void PropertyNotificationDestroyed(PropertyNotification& propertyNotification);
 
 private: // private virtual overrides
-
   /**
    * @copydoc PropertyNotifier::NotifyProperty
    */
-  virtual void NotifyProperty( SceneGraph::PropertyNotification* propertyNotification, bool validity );
+  void NotifyProperty(NotifierInterface::NotifyId notifyId, bool validity) override;
 
 private:
-
   /**
    * Default constructor.
    */
@@ -84,14 +79,11 @@ private:
   PropertyNotificationManager& operator=(const PropertyNotificationManager& rhs);
 
 private:
-
-  std::set< PropertyNotification* > mPropertyNotifications; ///< All existing PropertyNotifications (not referenced)
-
+  Integration::OrderedSet<PropertyNotification, false> mPropertyNotifications; ///< All existing PropertyNotifications (not owned)
 };
 
 } // namespace Internal
 
 } // namespace Dali
 
-#endif // __DALI_INTERNAL_PROPERTY_NOTIFICATION_MANAGER_H__
-
+#endif // DALI_INTERNAL_PROPERTY_NOTIFICATION_MANAGER_H