X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fbuilder%2Fbuilder-signals.cpp;h=f83272194fe8a95d01fc7e5035b96fdc07fbc8f7;hb=7aa9e3d716396348b89c913b306bbc1ce201db69;hp=edf961f5cc34a64968dd605cd4bd0f3164ece5cb;hpb=72992c098f444c003165389b36bde5a130101e09;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/builder/builder-signals.cpp b/dali-toolkit/internal/builder/builder-signals.cpp index edf961f..f832721 100644 --- a/dali-toolkit/internal/builder/builder-signals.cpp +++ b/dali-toolkit/internal/builder/builder-signals.cpp @@ -1,20 +1,25 @@ -// -// 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. -// +/* + * Copyright (c) 2014 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. + * + */ // EXTERNAL INCLUDES +#include +#include +#include +#include #include // INTERNAL INCLUDES @@ -27,7 +32,7 @@ namespace Toolkit { namespace Internal { -extern Animation CreateAnimation( const TreeNode& child ); +extern Animation CreateAnimation( const TreeNode& child, Dali::Toolkit::Internal::Builder* const builder ); extern bool SetPropertyFromNode( const TreeNode& node, Property::Value& value ); } } @@ -41,24 +46,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. +// Action on child actor. The child is found by name struct ChildActorAction { std::string actorName; std::string actionName; - std::string childAlias; - std::vector parameters; + std::string childName; + PropertyValueContainer parameters; void operator()(void) { @@ -66,7 +60,7 @@ struct ChildActorAction if(actor) { - Actor child_actor = actor.FindChildByAlias(childAlias); + Actor child_actor = actor.FindChildByName(childName); if(child_actor) { @@ -74,7 +68,7 @@ struct ChildActorAction } else { - DALI_SCRIPT_WARNING("Could not find child by alias '%s'\n", childAlias.c_str()); + DALI_SCRIPT_WARNING("Could not find child by name '%s'\n", childName.c_str()); } } }; @@ -119,7 +113,7 @@ struct GenericAction { std::string actorName; std::string actionName; - std::vector parameters; + PropertyValueContainer parameters; void operator()(void) { @@ -135,11 +129,12 @@ struct GenericAction // Delay an animation play; ie wait as its not on stage yet struct DelayedAnimationPlay { - Toolkit::JsonParser memento; + OptionalChild animNode; + Dali::IntrusivePtr builder; void operator()(void) { - Animation anim = Toolkit::Internal::CreateAnimation(*memento.GetRoot()); + Animation anim = Toolkit::Internal::CreateAnimation(*animNode, builder.Get() ); if(anim) { anim.Play(); @@ -203,7 +198,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 ¶ms) +void GetParameters(const TreeNode& child, PropertyValueContainer& params) { if( OptionalChild c = IsChild(child, "parameters") ) { @@ -231,7 +226,7 @@ void DoNothing(void) {}; /** * Get an action as boost function callback */ -boost::function GetAction(const TreeNode &root, const TreeNode &child, Actor actor) +boost::function GetAction(const TreeNode &root, const TreeNode &child, Actor actor, boost::function quitAction, Dali::Toolkit::Internal::Builder* const builder) { OptionalString childActorName(IsString( IsChild(&child, "child-actor")) ); OptionalString actorName(IsString( IsChild(&child, "actor")) ); @@ -247,7 +242,7 @@ boost::function GetAction(const TreeNode &root, const TreeNode &chi { ChildActorAction action; action.actorName = *actorName; - action.childAlias = *childActorName; + action.childName = *childActorName; action.actionName = *actionName; GetParameters(child, action.parameters); callback = action; @@ -277,7 +272,7 @@ boost::function GetAction(const TreeNode &root, const TreeNode &chi } else if("quit" == *actionName) { - callback = ActionQuit(); + callback = quitAction; } else if("play" == *actionName) { @@ -288,7 +283,9 @@ boost::function GetAction(const TreeNode &root, const TreeNode &chi if( OptionalChild animNode = IsChild(*animations, *animationName) ) { DelayedAnimationPlay action; - action.memento = Toolkit::JsonParser::New(*animNode); + action.animNode = animNode; + action.builder = builder; + // @todo; put constants into the map callback = action; } else @@ -330,15 +327,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; } /** @@ -352,15 +344,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; } @@ -374,13 +361,13 @@ namespace Toolkit namespace Internal { -Actor SetupSignalAction(const TreeNode &child, Actor actor); -Actor SetupPropertyNotification(const TreeNode &child, Actor actor); +Actor SetupSignalAction(const TreeNode &child, Actor actor, Dali::Toolkit::Internal::Builder* const builder ); +Actor SetupPropertyNotification(const TreeNode &child, Actor actor, Dali::Toolkit::Internal::Builder* const builder ); /** * 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 quitAction, Dali::Toolkit::Internal::Builder* const builder ) { DALI_ASSERT_ALWAYS(actor); @@ -397,7 +384,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 callback = GetAction(root, key_child.second, actor); + boost::function callback = GetAction(root, key_child.second, actor, quitAction, builder ); actor.ConnectSignal(tracker, *name, callback); } @@ -409,7 +396,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 quitAction, Dali::Toolkit::Internal::Builder* const builder ) { DALI_ASSERT_ALWAYS(actor); @@ -423,7 +410,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 callback = GetAction(root, key_child.second, actor); + boost::function callback = GetAction(root, key_child.second, actor, quitAction, builder ); OptionalString prop(IsString( IsChild(key_child.second, "property")) ); DALI_ASSERT_ALWAYS(prop && "Notification signal must specify a property");