void DissolveEffectApp::OnInit( Application& application ) { Stage::GetCurrent().KeyEventSignal().Connect(this, &DissolveEffectApp::OnKeyEvent); // Creates a default view with a default tool bar, the view is added to the stage. mContent = DemoHelper::CreateView( application, mView,mToolBar, "", TOOLBAR_IMAGE, "" ); // Add an effect-changing button on the right of the tool bar. mEffectChangeButton = Toolkit::PushButton::New(); mEffectChangeButton.SetProperty( Toolkit::Button::Property::UNSELECTED_STATE_IMAGE, EFFECT_HIGHP_IMAGE ); mEffectChangeButton.SetProperty( Toolkit::Button::Property::SELECTED_STATE_IMAGE, EFFECT_HIGHP_IMAGE_SELECTED ); mEffectChangeButton.ClickedSignal().Connect( this, &DissolveEffectApp::OnEffectButtonClicked ); mToolBar.AddControl( mEffectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING ); // Add title to the tool bar. mTitleActor = DemoHelper::CreateToolBarLabel( APPLICATION_TITLE_HIGHP ); mToolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HorizontalCenter ); // Add an slide-show button on the right of the title mPlayStopButton = Toolkit::PushButton::New(); mPlayStopButton.SetProperty( Toolkit::Button::Property::UNSELECTED_STATE_IMAGE, PLAY_ICON ); mPlayStopButton.SetProperty( Toolkit::Button::Property::SELECTED_STATE_IMAGE, PLAY_ICON_SELECTED ); mPlayStopButton.ClickedSignal().Connect( this, &DissolveEffectApp::OnSildeshowButtonClicked ); mToolBar.AddControl( mPlayStopButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalCenter, DemoHelper::DEFAULT_PLAY_PADDING ); // use pan gesture to detect the cursor or finger movement mPanGestureDetector = PanGestureDetector::New(); mPanGestureDetector.DetectedSignal().Connect( this, &DissolveEffectApp::OnPanGesture ); mViewTimer = Timer::New( VIEWINGTIME ); mViewTimer.TickSignal().Connect( this, &DissolveEffectApp::OnTimerTick ); mTimerReady = true; // Set size to stage size to avoid seeing a black border on transition mParent = Actor::New(); mParent.SetSize( Stage::GetCurrent().GetSize() ); mParent.SetParentOrigin( ParentOrigin::CENTER ); mContent.Add( mParent ); // show the first image mCurrentImage = CreateStageFillingImageView( IMAGES[mIndex] ); mCurrentImage.SetParentOrigin( ParentOrigin::CENTER ); mCurrentImage.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); mCurrentImage.SetSizeScalePolicy( SizeScalePolicy::FIT_WITH_ASPECT_RATIO ); mParent.Add( mCurrentImage ); mPanGestureDetector.Attach( mCurrentImage ); mDissolveEffect = Dali::Toolkit::CreateDissolveEffect( mUseHighPrecision ); Property::Map emptyShaderMap; mEmptyEffect.Insert( "shader", emptyShaderMap ); }
bool PanGestureDetector::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) { bool connected( true ); PanGestureDetector* gesture = dynamic_cast<PanGestureDetector*>(object); if ( 0 == strcmp( signalName.c_str(), SIGNAL_PAN_DETECTED ) ) { gesture->DetectedSignal().Connect( tracker, functor ); } else { // signalName does not match any signal connected = false; } return connected; }
void DissolveEffectApp::OnTransitionCompleted( Animation& source ) { if(mUseHighPrecision) { mNextImage.SetProperty( Toolkit::ImageView::Property::IMAGE, mEmptyEffect ); } mParent.Remove( mCurrentImage ); mPanGestureDetector.Detach( mCurrentImage ); mCurrentImage = mNextImage; mPanGestureDetector.Attach( mCurrentImage ); mIsTransiting = false; if( mSlideshow) { mViewTimer.Start(); mTimerReady = false; } }
bool DissolveEffectApp::OnSildeshowButtonClicked( Toolkit::Button button ) { mSlideshow = !mSlideshow; if( mSlideshow ) { mPlayStopButton.SetProperty( Toolkit::Button::Property::UNSELECTED_STATE_IMAGE, STOP_ICON ); mPlayStopButton.SetProperty( Toolkit::Button::Property::SELECTED_STATE_IMAGE, STOP_ICON_SELECTED ); mPanGestureDetector.Detach( mParent ); mViewTimer.Start(); mTimerReady = false; } else { mPlayStopButton.SetProperty( Toolkit::Button::Property::UNSELECTED_STATE_IMAGE, PLAY_ICON ); mPlayStopButton.SetProperty( Toolkit::Button::Property::SELECTED_STATE_IMAGE, PLAY_ICON_SELECTED ); mTimerReady = true; mPanGestureDetector.Attach( mParent ); } return true; }
bool CubeTransitionApp::OnSildeshowButtonClicked( Toolkit::Button button ) { mSlideshow = !mSlideshow; if( mSlideshow ) { mPanGestureDetector.Detach( mContent ); mSlideshowButton.SetUnselectedImage( SLIDE_SHOW_STOP_ICON ); mSlideshowButton.SetSelectedImage( SLIDE_SHOW_STOP_ICON_SELECTED ); mPanPosition = Vector2( mViewSize.width, mViewSize.height*0.5f ); mPanDisplacement = Vector2( -10.f, 0.f ); mViewTimer.Start(); } else { mPanGestureDetector.Attach( mContent ); mSlideshowButton.SetUnselectedImage( SLIDE_SHOW_START_ICON ); mSlideshowButton.SetSelectedImage( SLIDE_SHOW_START_ICON_SELECTED ); mViewTimer.Stop(); } return true; }
void CubeTransitionApp::OnInit( Application& application ) { Stage::GetCurrent().KeyEventSignal().Connect(this, &CubeTransitionApp::OnKeyEvent); // Creates a default view with a default tool bar, the view is added to the stage. mContent = DemoHelper::CreateView( application, mView, mToolBar, "", TOOLBAR_IMAGE, "" ); mContent.SetBehavior( Layer::LAYER_3D ); // Add an effect-changing button on the right of the tool bar. mEffectChangeButton = Toolkit::PushButton::New(); mEffectChangeButton.SetUnselectedImage( EFFECT_WAVE_IMAGE ); mEffectChangeButton.SetSelectedImage( EFFECT_WAVE_IMAGE_SELECTED ); mEffectChangeButton.ClickedSignal().Connect( this, &CubeTransitionApp::OnEffectButtonClicked ); mToolBar.AddControl( mEffectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING ); // Add title to the tool bar. mTitle = DemoHelper::CreateToolBarLabel( APPLICATION_TITLE_WAVE ); mToolBar.AddControl( mTitle, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HorizontalCenter ); //Add an slideshow icon on the right of the title mSlideshowButton = Toolkit::PushButton::New(); mSlideshowButton.SetUnselectedImage( SLIDE_SHOW_START_ICON ); mSlideshowButton.SetSelectedImage( SLIDE_SHOW_START_ICON_SELECTED ); mSlideshowButton.ClickedSignal().Connect( this, &CubeTransitionApp::OnSildeshowButtonClicked ); mToolBar.AddControl( mSlideshowButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalCenter, DemoHelper::DEFAULT_PLAY_PADDING ); // Set size to stage size to avoid seeing a black border on transition mViewSize = Stage::GetCurrent().GetSize(); // show the first image mCurrentImage = LoadStageFillingImage( IMAGES[mIndex] ); //use small cubes mCubeWaveEffect = Toolkit::CubeTransitionWaveEffect::New( NUM_ROWS_WAVE, NUM_COLUMNS_WAVE ); mCubeWaveEffect.SetTransitionDuration( ANIMATION_DURATION_WAVE ); mCubeWaveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT_WAVE ); mCubeWaveEffect.TransitionCompletedSignal().Connect(this, &CubeTransitionApp::OnTransitionCompleted); mCubeWaveEffect.SetSize( mViewSize ); mCubeWaveEffect.SetPositionInheritanceMode( USE_PARENT_POSITION ); mCubeWaveEffect.SetCurrentImage( mCurrentImage ); // use big cubes mCubeCrossEffect = Toolkit::CubeTransitionCrossEffect::New(NUM_ROWS_CROSS, NUM_COLUMNS_CROSS ); mCubeCrossEffect.SetTransitionDuration( ANIMATION_DURATION_CROSS ); mCubeCrossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT_CROSS ); mCubeCrossEffect.TransitionCompletedSignal().Connect(this, &CubeTransitionApp::OnTransitionCompleted); mCubeCrossEffect.SetSize( mViewSize ); mCubeCrossEffect.SetPositionInheritanceMode( USE_PARENT_POSITION ); mCubeCrossEffect.SetCurrentImage( mCurrentImage ); mCubeFoldEffect = Toolkit::CubeTransitionFoldEffect::New( NUM_ROWS_FOLD, NUM_COLUMNS_FOLD ); mCubeFoldEffect.SetTransitionDuration( ANIMATION_DURATION_FOLD ); mCubeFoldEffect.TransitionCompletedSignal().Connect(this, &CubeTransitionApp::OnTransitionCompleted); mCubeFoldEffect.SetSize( mViewSize ); mCubeFoldEffect.SetPositionInheritanceMode( USE_PARENT_POSITION ); mCubeFoldEffect.SetCurrentImage( mCurrentImage ); mViewTimer = Timer::New( VIEWINGTIME ); mViewTimer.TickSignal().Connect( this, &CubeTransitionApp::OnTimerTick ); mCurrentEffect = mCubeWaveEffect; mContent.Add( mCurrentEffect ); // use pan gesture to detect the cursor or finger movement mPanGestureDetector = PanGestureDetector::New(); mPanGestureDetector.DetectedSignal().Connect( this, &CubeTransitionApp::OnPanGesture ); mPanGestureDetector.Attach( mContent ); }
int UtcDaliControlImplDisableGestureDetector(void) { ToolkitTestApplication application; // Disable individually { DummyControl dummy = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation()); dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() ); dummyImpl.DisableGestureDetection(Gesture::Pinch); DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() ); dummyImpl.DisableGestureDetection(Gesture::Pan); DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() ); dummyImpl.DisableGestureDetection(Gesture::Tap); DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() ); dummyImpl.DisableGestureDetection(Gesture::LongPress); DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() ); } // Disable All { DummyControl dummy = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation()); dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() ); dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() ); } // Disable When not enabled { DummyControl dummy = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation()); DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() ); dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() ); } // Ensure control is detached if gesture detector is not deleted { DummyControl dummy = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation()); dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); PinchGestureDetector pinch = dummyImpl.GetPinchGestureDetector(); PanGestureDetector pan = dummyImpl.GetPanGestureDetector(); TapGestureDetector tap = dummyImpl.GetTapGestureDetector(); LongPressGestureDetector longPress = dummyImpl.GetLongPressGestureDetector(); DALI_TEST_EQUALS( pinch.GetAttachedActors().empty(), false, TEST_LOCATION ); DALI_TEST_EQUALS( pan.GetAttachedActors().empty(), false, TEST_LOCATION ); DALI_TEST_EQUALS( tap.GetAttachedActors().empty(), false, TEST_LOCATION ); DALI_TEST_EQUALS( longPress.GetAttachedActors().empty(), false, TEST_LOCATION ); dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); DALI_TEST_EQUALS( pinch.GetAttachedActors().empty(), true, TEST_LOCATION ); DALI_TEST_EQUALS( pan.GetAttachedActors().empty(), true, TEST_LOCATION ); DALI_TEST_EQUALS( tap.GetAttachedActors().empty(), true, TEST_LOCATION ); DALI_TEST_EQUALS( longPress.GetAttachedActors().empty(), true, TEST_LOCATION ); } END_TEST; }