X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=plugins%2Fdali-script-v8%2Fsrc%2Fsignals%2Fsignal-manager.cpp;h=3f26d0b64522947560b1e9e280a31af87b195198;hp=8adcabdb2522ff84cc84d402d6aea2778caa2373;hb=5beb9bdb5ed4cf321bf1492f94fdaed69d70cc2c;hpb=fd1a47af0ac56d63622dcef32fade5c3b90957d0 diff --git a/plugins/dali-script-v8/src/signals/signal-manager.cpp b/plugins/dali-script-v8/src/signals/signal-manager.cpp index 8adcabd..3f26d0b 100644 --- a/plugins/dali-script-v8/src/signals/signal-manager.cpp +++ b/plugins/dali-script-v8/src/signals/signal-manager.cpp @@ -30,6 +30,7 @@ #include #include #include +#include // INTERNAL INCLUDES #include @@ -55,22 +56,22 @@ namespace // un-named namespace { const char* const SIGNAL_TOUCHED = "touched"; const char* const SIGNAL_HOVERED = "hovered"; -const char* const SIGNAL_WHEEL_EVENT = "wheel-event"; -const char* const SIGNAL_ON_STAGE = "on-stage"; -const char* const SIGNAL_OFF_STAGE = "off-stage"; +const char* const SIGNAL_WHEEL_EVENT = "wheelEvent"; +const char* const SIGNAL_ON_STAGE = "onStage"; +const char* const SIGNAL_OFF_STAGE = "offStage"; const char* const ANIMATION_SIGNAL_FINISHED = "finished"; -const char* const SIGNAL_PAN_DETECTED = "pan-detected"; +const char* const SIGNAL_PAN_DETECTED = "panDetected"; -const char* const STAGE_SIGNAL_KEY_EVENT = "key-event"; -const char* const STAGE_SIGNAL_EVENT_PROCESSING_FINISHED = "event-processing-finished"; +const char* const STAGE_SIGNAL_KEY_EVENT = "keyEvent"; +const char* const STAGE_SIGNAL_EVENT_PROCESSING_FINISHED = "eventProcessingFinished"; const char* const STAGE_SIGNAL_TOUCHED = "touched"; -const char* const SIGNAL_IMAGE_LOADING_FINISHED = "image-loading-finished"; +const char* const SIGNAL_IMAGE_LOADING_FINISHED = "imageLoadingFinished"; const char* const SIGNAL_IMAGE_UPLOADED = "uploaded"; -const char* const KEYBOARD_FOCUS_MANAGER_SIGNAL_PRE_FOCUS_CHANGE = "keyboard-pre-focus-change"; -const char* const KEYBOARD_FOCUS_MANAGER_SIGNAL_FOCUS_CHANGED = "keyboard-focus-changed"; -const char* const KEYBOARD_FOCUS_MANAGER_SIGNAL_FOCUS_GROUP_CHANGED = "keyboard-focus-group-changed"; -const char* const KEYBOARD_FOCUS_MANAGER_SIGNAL_FOCUSED_ACTOR_ACTIVATED = "keyboard-focused-actor-activated"; +const char* const KEYBOARD_FOCUS_MANAGER_SIGNAL_PRE_FOCUS_CHANGE = "keyboardPreFocusChange"; +const char* const KEYBOARD_FOCUS_MANAGER_SIGNAL_FOCUS_CHANGED = "keyboardFocusChanged"; +const char* const KEYBOARD_FOCUS_MANAGER_SIGNAL_FOCUS_GROUP_CHANGED = "keyboardFocusGroupChanged"; +const char* const KEYBOARD_FOCUS_MANAGER_SIGNAL_FOCUSED_ACTOR_ENTER_KEY = "keyboardFocusedActorEnterKey"; const unsigned int MAX_SIGNAL_NAME_LENGTH = 64; } // un-named name space @@ -179,8 +180,9 @@ class ActorCallback : public BaseCallBack { public: - ActorCallback(v8::Isolate* isolate, const v8::Local& callback ,const std::string& signalName ) - : BaseCallBack( isolate, callback, signalName ) + ActorCallback(v8::Isolate* isolate, const v8::Local& callback ,const std::string& signalName, Actor actor ) + : BaseCallBack( isolate, callback, signalName ), + mActor(actor) { } bool OnTouch( Actor actor, const TouchEvent& event) @@ -231,8 +233,22 @@ public: CallJavaScript( returnValue, arguments ); } -private: + WeakHandle< Actor > mActor; + +}; + +struct ActorGenericCallbackFunctor +{ + ActorGenericCallbackFunctor(ActorCallback& callback) : callback(callback) { } + void operator()() + { + std::vector< Dali::Any > arguments; + Dali::Any returnValue; //no return + arguments.push_back(callback.mActor.GetHandle()); //pass the actor handle as the parameter + callback.CallJavaScript( returnValue, arguments ); + } + ActorCallback& callback; }; @@ -312,7 +328,7 @@ public: Actor PreFocusChangeSignal(Actor currentFocusedActor, Actor proposedActorToFocus, - Toolkit::Control::KeyboardFocusNavigationDirection direction ) + Toolkit::Control::KeyboardFocus::Direction direction ) { std::vector< Dali::Any > arguments; Dali::Any returnValue = Actor(); // we want an actor as a return value @@ -345,11 +361,11 @@ public: arguments.push_back( forward ); CallJavaScript( returnValue, arguments ); } - void FocusedActorSignal( Actor activatedActor ) + void EnterKeyPressedActorSignal( Actor enterKeyPressedActor ) { std::vector< Dali::Any > arguments; Dali::Any returnValue; //no return - arguments.push_back( activatedActor ); + arguments.push_back( enterKeyPressedActor ); CallJavaScript( returnValue, arguments ); } }; @@ -380,7 +396,7 @@ void ActorConnection( v8::Isolate* isolate, { bool connected(true); - ActorCallback* callback =new ActorCallback( isolate, javaScriptCallback, signalName ); + ActorCallback* callback =new ActorCallback( isolate, javaScriptCallback, signalName, actor ); if( strcmp( signalName.c_str(), SIGNAL_TOUCHED ) == 0 ) { @@ -404,7 +420,7 @@ void ActorConnection( v8::Isolate* isolate, } else { - connected = false; + connected = actor.ConnectSignal( callback, signalName, ActorGenericCallbackFunctor(*callback) ); } if( connected ) @@ -517,9 +533,9 @@ void KeyboardFocusManagerConnection( v8::Isolate* isolate, { keyboardFocusManager.FocusGroupChangedSignal().Connect( callback, &KeyboardFocusCallback::FocusGroupSignal ); } - else if ( strcmp( signalName.c_str(), KEYBOARD_FOCUS_MANAGER_SIGNAL_FOCUSED_ACTOR_ACTIVATED ) == 0 ) + else if ( strcmp( signalName.c_str(), KEYBOARD_FOCUS_MANAGER_SIGNAL_FOCUSED_ACTOR_ENTER_KEY ) == 0 ) { - keyboardFocusManager.FocusedActorActivatedSignal().Connect( callback, &KeyboardFocusCallback::FocusedActorSignal ); + keyboardFocusManager.FocusedActorEnterKeySignal().Connect( callback, &KeyboardFocusCallback::EnterKeyPressedActorSignal ); } else { @@ -619,47 +635,47 @@ void SignalManager::SignalConnect( const v8::FunctionCallbackInfo< v8::Value >& // see if we're connecting to an Actor switch( baseObject->GetType() ) { - case BaseWrappedObject::ACTOR: - { - ActorWrapper* actorWrapper = static_cast< ActorWrapper*>( baseObject ); - ActorConnection( isolate, func, actorWrapper, signal, actorWrapper->GetActor() ); - break; - } - case BaseWrappedObject::ANIMATION: - { - AnimationWrapper* animWrapper = static_cast< AnimationWrapper*>( baseObject ); - AnimationConnection( isolate, func, animWrapper, signal, animWrapper->GetAnimation() ); - break; - } - case BaseWrappedObject::IMAGE: - { - ImageWrapper* imageWrapper = static_cast< ImageWrapper*>( baseObject ); - ImageConnection( isolate, func, imageWrapper, signal, imageWrapper->GetImage() ); - break; - } - case BaseWrappedObject::STAGE: - { - StageWrapper* stageWrapper = static_cast< StageWrapper*>( baseObject ); - StageConnection( isolate, func, stageWrapper, signal, stageWrapper->GetStage() ); - break; - } - case BaseWrappedObject::KEYBOARD_FOCUS_MANAGER: - { - KeyboardFocusManagerWrapper* keyboardFocusWrapper = static_cast< KeyboardFocusManagerWrapper*>( baseObject ); - KeyboardFocusManagerConnection( isolate, func, keyboardFocusWrapper, signal, keyboardFocusWrapper->GetKeyboardFocusManager() ); - break; - } - case BaseWrappedObject::PAN_GESTURE_DETECTOR: - { - PanGestureDetectorWrapper* panGestureDetectorWrapper = static_cast< PanGestureDetectorWrapper*>( baseObject ); - PanGestureDetectorConnection( isolate, func, panGestureDetectorWrapper, signal, panGestureDetectorWrapper->GetPanGestureDetector() ); - break; - } - default: - { - DALI_SCRIPT_EXCEPTION( isolate, "object does not support connections"); - break; - } + case BaseWrappedObject::ACTOR: + { + ActorWrapper* actorWrapper = static_cast< ActorWrapper*>( baseObject ); + ActorConnection( isolate, func, actorWrapper, signal, actorWrapper->GetActor() ); + break; + } + case BaseWrappedObject::ANIMATION: + { + AnimationWrapper* animWrapper = static_cast< AnimationWrapper*>( baseObject ); + AnimationConnection( isolate, func, animWrapper, signal, animWrapper->GetAnimation() ); + break; + } + case BaseWrappedObject::IMAGE: + { + ImageWrapper* imageWrapper = static_cast< ImageWrapper*>( baseObject ); + ImageConnection( isolate, func, imageWrapper, signal, imageWrapper->GetImage() ); + break; + } + case BaseWrappedObject::STAGE: + { + StageWrapper* stageWrapper = static_cast< StageWrapper*>( baseObject ); + StageConnection( isolate, func, stageWrapper, signal, stageWrapper->GetStage() ); + break; + } + case BaseWrappedObject::KEYBOARD_FOCUS_MANAGER: + { + KeyboardFocusManagerWrapper* keyboardFocusWrapper = static_cast< KeyboardFocusManagerWrapper*>( baseObject ); + KeyboardFocusManagerConnection( isolate, func, keyboardFocusWrapper, signal, keyboardFocusWrapper->GetKeyboardFocusManager() ); + break; + } + case BaseWrappedObject::PAN_GESTURE_DETECTOR: + { + PanGestureDetectorWrapper* panGestureDetectorWrapper = static_cast< PanGestureDetectorWrapper*>( baseObject ); + PanGestureDetectorConnection( isolate, func, panGestureDetectorWrapper, signal, panGestureDetectorWrapper->GetPanGestureDetector() ); + break; + } + default: + { + DALI_SCRIPT_EXCEPTION( isolate, "object does not support connections"); + break; + } } }