X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=base%2Fdali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=74720d07284499855218e1fad8b2e59146f8ed45;hb=9fd41afd0f3485f39fe161c28efdc88e1aa737f6;hp=975152e1f2fb5f54924fac78ad8ee95d41543b6d;hpb=a481f6f5e535b302f7bf7087cd21641b9d374930;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/base/dali-toolkit/public-api/controls/control-impl.cpp b/base/dali-toolkit/public-api/controls/control-impl.cpp index 975152e..74720d0 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 */ @@ -200,6 +206,7 @@ void SetupBackgroundActor( Actor actor, Property::Index constrainingIndex, const { actor.SetColor( color ); actor.SetPositionInheritanceMode( USE_PARENT_POSITION_PLUS_LOCAL_POSITION ); + actor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR ); actor.SetZ( BACKGROUND_ACTOR_Z_POSITION ); Constraint constraint = Constraint::New( constrainingIndex, @@ -945,6 +952,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 +1331,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))