Cleaning up property public API and usage of typedefs
[platform/core/uifw/dali-toolkit.git] / base / dali-toolkit / internal / builder / builder-signals.cpp
index a22815e..c323fab 100644 (file)
@@ -43,24 +43,13 @@ using namespace Dali;
 // Signal Actions
 //
 
-// Action quit; connected to signals
-// TODO: MOVE TO BUILDER TEMPLATE
-struct ActionQuit
-{
-  ActionQuit(void) {};
-
-  void operator()(void) {
-    // Dali::Application::Get().Quit();
-  };
-};
-
 // Action on child actor. The child is found by alias so can be 'previous' etc.
 struct ChildActorAction
 {
   std::string actorName;
   std::string actionName;
   std::string childAlias;
-  std::vector<Property::Value> parameters;
+  PropertyValueContainer parameters;
 
   void operator()(void)
   {
@@ -121,7 +110,7 @@ struct GenericAction
 {
   std::string actorName;
   std::string actionName;
-  std::vector<Property::Value> parameters;
+  PropertyValueContainer parameters;
 
   void operator()(void)
   {
@@ -205,7 +194,7 @@ Property::Value GetPropertyValue(const TreeNode &child)
  * Gets Parmeter list from child
  * params is be cleared before insertion
  */
-void GetParameters(const TreeNode &child, std::vector<Property::Value> &params)
+void GetParameters(const TreeNode& child, PropertyValueContainer& params)
 {
   if( OptionalChild c = IsChild(child, "parameters") )
   {
@@ -233,7 +222,7 @@ void DoNothing(void) {};
 /**
  * Get an action as boost function callback
  */
-boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &child, Actor actor)
+boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction)
 {
   OptionalString childActorName(IsString( IsChild(&child, "child-actor")) );
   OptionalString actorName(IsString( IsChild(&child, "actor")) );
@@ -279,7 +268,7 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
   }
   else if("quit" == *actionName)
   {
-    callback = ActionQuit();
+    callback = quitAction;
   }
   else if("play" == *actionName)
   {
@@ -333,15 +322,10 @@ float GetConditionArg0(const TreeNode &child)
   {
     f = IsFloat( IsChild(child, "min") );
   }
+
   DALI_ASSERT_ALWAYS(f && "Notification condition for arg0 not specified");
-  if(f)
-  {
-    return *f;
-  }
-  else
-  {
-    return 0.f;
-  }
+
+  return *f;
 }
 
 /**
@@ -355,15 +339,10 @@ float GetConditionArg1(const TreeNode &child)
   {
     f = IsFloat( IsChild(child, "max") );
   }
+
   DALI_ASSERT_ALWAYS(f && "Notification condition for arg1 not specified");
-  if(f)
-  {
-    return *f;
-  }
-  else
-  {
-    return 0.f;
-  }
+
+  return *f;
 }
 
 
@@ -383,7 +362,7 @@ Actor SetupPropertyNotification(const TreeNode &child, Actor actor);
 /**
  * Setup signals and actions on an actor
  */
-Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor)
+Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction)
 {
   DALI_ASSERT_ALWAYS(actor);
 
@@ -400,7 +379,7 @@ Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const
       OptionalString name( IsString( IsChild( key_child.second, "name")) );
       DALI_ASSERT_ALWAYS(name && "Signal must have a name");
 
-      boost::function<void (void)> callback = GetAction(root, key_child.second, actor);
+      boost::function<void (void)> callback = GetAction(root, key_child.second, actor, quitAction);
 
       actor.ConnectSignal(tracker, *name, callback);
     }
@@ -412,7 +391,7 @@ Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const
 /**
  * Setup Property notifications for an actor
  */
-Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor)
+Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction)
 {
   DALI_ASSERT_ALWAYS(actor);
 
@@ -426,7 +405,7 @@ Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root
 
       // Actor actions reference by pointer because of circular reference actor->signal
       // So this callback should only go onto the actor maintained list.
-      boost::function<void (void)> callback = GetAction(root, key_child.second, actor);
+      boost::function<void (void)> callback = GetAction(root, key_child.second, actor, quitAction);
 
       OptionalString prop(IsString( IsChild(key_child.second, "property")) );
       DALI_ASSERT_ALWAYS(prop && "Notification signal must specify a property");