X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=base%2Fdali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=e45436f58a18dd7400db822f62657807d0f67b73;hp=975152e1f2fb5f54924fac78ad8ee95d41543b6d;hb=d160a0e0ef708245ecbf94e6e34d7bd9f0cad0c7;hpb=a481f6f5e535b302f7bf7087cd21641b9d374930 diff --git a/base/dali-toolkit/public-api/controls/control-impl.cpp b/base/dali-toolkit/public-api/controls/control-impl.cpp index 975152e..e45436f 100644 --- a/base/dali-toolkit/public-api/controls/control-impl.cpp +++ b/base/dali-toolkit/public-api/controls/control-impl.cpp @@ -76,6 +76,12 @@ TypeRegistration CONTROL_TYPE( typeid(Control), typeid(CustomActor), Create ); TypeAction ACTION_TYPE_1( CONTROL_TYPE, Toolkit::Control::ACTION_CONTROL_ACTIVATED, &Internal::Control::DoAction ); +SignalConnectorType SIGNAL_CONNECTOR_1( CONTROL_TYPE, Toolkit::Control::SIGNAL_KEY_EVENT, &Internal::Control::DoConnectSignal ); +SignalConnectorType SIGNAL_CONNECTOR_2( CONTROL_TYPE, Toolkit::Control::SIGNAL_TAPPED, &Internal::Control::DoConnectSignal ); +SignalConnectorType SIGNAL_CONNECTOR_3( CONTROL_TYPE, Toolkit::Control::SIGNAL_PANNED, &Internal::Control::DoConnectSignal ); +SignalConnectorType SIGNAL_CONNECTOR_4( CONTROL_TYPE, Toolkit::Control::SIGNAL_PINCHED, &Internal::Control::DoConnectSignal ); +SignalConnectorType SIGNAL_CONNECTOR_5( CONTROL_TYPE, Toolkit::Control::SIGNAL_LONG_PRESSED, &Internal::Control::DoConnectSignal ); + /** * Structure which holds information about the background of a control */ @@ -945,6 +951,50 @@ bool Control::DoAction(BaseObject* object, const std::string& actionName, const return ret; } +bool Control::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) +{ + Dali::BaseHandle handle( object ); + + bool connected( false ); + Toolkit::Control control = Toolkit::Control::DownCast(handle); + if ( control ) + { + Control& controlImpl( control.GetImplementation() ); + connected = true; + + if ( Toolkit::Control::SIGNAL_KEY_EVENT == signalName ) + { + controlImpl.KeyEventSignal().Connect( tracker, functor ); + } + else if( Toolkit::Control::SIGNAL_TAPPED == signalName ) + { + controlImpl.EnableGestureDetection( Gesture::Tap ); + controlImpl.GetTapGestureDetector().DetectedSignal().Connect( tracker, functor ); + } + else if( Toolkit::Control::SIGNAL_PANNED == signalName ) + { + controlImpl.EnableGestureDetection( Gesture::Pan ); + controlImpl.GetPanGestureDetector().DetectedSignal().Connect( tracker, functor ); + } + else if( Toolkit::Control::SIGNAL_PINCHED == signalName ) + { + controlImpl.EnableGestureDetection( Gesture::Pinch ); + controlImpl.GetPinchGestureDetector().DetectedSignal().Connect( tracker, functor ); + } + else if( Toolkit::Control::SIGNAL_LONG_PRESSED == signalName ) + { + controlImpl.EnableGestureDetection( Gesture::LongPress ); + controlImpl.GetLongPressGestureDetector().DetectedSignal().Connect( tracker, functor ); + } + else + { + // signalName does not match any signal + connected = false; + } + } + return connected; +} + void Control::DoStyleChange( Toolkit::StyleManager styleManager, StyleChange change ) { if( change.themeChange ) @@ -1280,11 +1330,6 @@ void Control::SignalDisconnected( SlotObserver* slotObserver, CallbackBase* call mImpl->SignalDisconnected( slotObserver, callback ); } -std::size_t Control::GetConnectionCount() const -{ - return mImpl->GetConnectionCount(); -} - Control::Control( ControlBehaviour behaviourFlags ) : CustomActorImpl( behaviourFlags & REQUIRES_TOUCH_EVENTS ), mImpl(new Impl(*this))