X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fvideo-view%2Fvideo-view-example.cpp;h=fb5b5a382aeee6e47643238465e23e3903c57bbe;hb=c70446e9b125ae8bb236b4cbc3fd3f8b548459cd;hp=b13df4ef239355df5d0151fc6c402650a1b68234;hpb=4e07c8c3498cef7c8dffbc08189be8e169d97f55;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/video-view/video-view-example.cpp b/examples/video-view/video-view-example.cpp index b13df4e..fb5b5a3 100644 --- a/examples/video-view/video-view-example.cpp +++ b/examples/video-view/video-view-example.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -17,7 +17,6 @@ #include #include -#include using namespace Dali; using namespace Toolkit; @@ -32,8 +31,7 @@ namespace const char* const PLAY_FILE = DEMO_VIDEO_DIR "demoVideo.mp4"; const char* const PLAY_IMAGE = DEMO_IMAGE_DIR "icon-play.png"; const char* const PAUSE_IMAGE = DEMO_IMAGE_DIR "Pause.png"; - const char* const STOP_IMAGE = DEMO_IMAGE_DIR "icon-stop.png"; - const char* const RESET_IMAGE = DEMO_IMAGE_DIR "icon-reset.png"; + const char* const CHANGE_IMAGE = DEMO_IMAGE_DIR "icon-change.png"; const char* const FORWARD_IMAGE = DEMO_IMAGE_DIR "Forward.png"; const char* const BACKWARD_IMAGE = DEMO_IMAGE_DIR "Backward.png"; @@ -46,7 +44,6 @@ class VideoViewController: public ConnectionTracker VideoViewController( Application& application ) : mApplication( application ), mIsPlay( false ), - mIsStop( false ), mIsFullScreen( false ), mScale( 1.f ), mPinchStartScale( 1.0f ) @@ -62,109 +59,96 @@ class VideoViewController: public ConnectionTracker void Create( Application& application ) { - mStageSize = Stage::GetCurrent().GetSize(); + Window window = application.GetWindow(); + mWindowSize = window.GetSize(); mVideoView = Toolkit::VideoView::New(); - Stage::GetCurrent().Add( mVideoView ); - mVideoView.SetParentOrigin( ParentOrigin::CENTER ); - mVideoView.SetAnchorPoint( AnchorPoint::CENTER ); + window.Add( mVideoView ); + mVideoView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + mVideoView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); mVideoView.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); - mVideoView.SetSize( INIT_WIDTH, INIT_HEIGHT ); + mVideoView.SetProperty( Actor::Property::SIZE, Vector2( INIT_WIDTH, INIT_HEIGHT ) ); mVideoView.SetProperty( VideoView::Property::LOOPING, true ); mVideoView.SetProperty( VideoView::Property::MUTED, false ); mVideoView.SetProperty( VideoView::Property::VIDEO, PLAY_FILE ); mMenu = Layer::New(); - mMenu.SetParentOrigin( ParentOrigin::BOTTOM_LEFT ); - mMenu.SetAnchorPoint( AnchorPoint::BOTTOM_LEFT ); + mMenu.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_LEFT ); + mMenu.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_LEFT ); mMenu.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); - mMenu.SetSize( INIT_WIDTH, 120 ); + mMenu.SetProperty( Actor::Property::SIZE, Vector2( INIT_WIDTH, 120 ) ); mVideoView.Add( mMenu ); mPlayButton = PushButton::New(); - mPlayButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - mPlayButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - mPlayButton.SetName( "Play" ); + mPlayButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + mPlayButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + mPlayButton.SetProperty( Dali::Actor::Property::NAME, "Play" ); mPlayButton.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); - mPlayButton.SetSize( BUTTON_SIZE, BUTTON_SIZE ); - mPlayButton.SetPosition( 40, 10 ); + mPlayButton.SetProperty( Actor::Property::SIZE, Vector2( BUTTON_SIZE, BUTTON_SIZE ) ); + mPlayButton.SetProperty( Actor::Property::POSITION, Vector2( 40, 10 )); mPlayButton.ClickedSignal().Connect( this, &VideoViewController::OnButtonClicked ); mPauseButton = PushButton::New(); - mPauseButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - mPauseButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - mPauseButton.SetName( "Pause" ); + mPauseButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + mPauseButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + mPauseButton.SetProperty( Dali::Actor::Property::NAME, "Pause" ); mPauseButton.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); - mPauseButton.SetSize( BUTTON_SIZE, BUTTON_SIZE ); - mPauseButton.SetPosition( 40, 10 ); + mPauseButton.SetProperty( Actor::Property::SIZE, Vector2( BUTTON_SIZE, BUTTON_SIZE ) ); + mPauseButton.SetProperty( Actor::Property::POSITION, Vector2( 40, 10 )); mPauseButton.ClickedSignal().Connect( this, &VideoViewController::OnButtonClicked ); - mStopButton = PushButton::New(); - mStopButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - mStopButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - mStopButton.SetName( "Stop" ); - mStopButton.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); - mStopButton.SetSize( BUTTON_SIZE, BUTTON_SIZE ); - mStopButton.SetPosition( 140, 10 ); - mStopButton.ClickedSignal().Connect( this, &VideoViewController::OnButtonClicked ); - - mResetButton = PushButton::New(); - mResetButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - mResetButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - mResetButton.SetName( "Reset" ); - mResetButton.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); - mResetButton.SetSize( BUTTON_SIZE, BUTTON_SIZE ); - mResetButton.SetPosition( 140, 10 ); - mResetButton.ClickedSignal().Connect( this, &VideoViewController::OnButtonClicked ); + mChangeButton = PushButton::New(); + mChangeButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + mChangeButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + mChangeButton.SetProperty( Dali::Actor::Property::NAME, "Change" ); + mChangeButton.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); + mChangeButton.SetProperty( Actor::Property::SIZE, Vector2( BUTTON_SIZE, BUTTON_SIZE ) ); + mChangeButton.SetProperty( Actor::Property::POSITION, Vector2( 140, 10 )); + mChangeButton.ClickedSignal().Connect( this, &VideoViewController::OnButtonClicked ); mBackwardButton = PushButton::New(); - mBackwardButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - mBackwardButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - mBackwardButton.SetName( "Backward" ); + mBackwardButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + mBackwardButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + mBackwardButton.SetProperty( Dali::Actor::Property::NAME, "Backward" ); mBackwardButton.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); - mBackwardButton.SetSize( BUTTON_SIZE, BUTTON_SIZE ); - mBackwardButton.SetPosition( 240, 10 ); + mBackwardButton.SetProperty( Actor::Property::SIZE, Vector2( BUTTON_SIZE, BUTTON_SIZE ) ); + mBackwardButton.SetProperty( Actor::Property::POSITION, Vector2( 240, 10 )); mBackwardButton.ClickedSignal().Connect( this, &VideoViewController::OnButtonClicked ); mForwardButton = PushButton::New(); - mForwardButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - mForwardButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - mForwardButton.SetName( "Forward" ); + mForwardButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + mForwardButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + mForwardButton.SetProperty( Dali::Actor::Property::NAME, "Forward" ); mForwardButton.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); - mForwardButton.SetSize( BUTTON_SIZE, BUTTON_SIZE ); - mForwardButton.SetPosition( 340, 10 ); + mForwardButton.SetProperty( Actor::Property::SIZE, Vector2( BUTTON_SIZE, BUTTON_SIZE ) ); + mForwardButton.SetProperty( Actor::Property::POSITION, Vector2( 340, 10 )); mForwardButton.ClickedSignal().Connect( this, &VideoViewController::OnButtonClicked ); mMenu.Add( mPlayButton ); mMenu.Add( mPauseButton ); - mMenu.Add( mStopButton ); - mMenu.Add( mResetButton ); + mMenu.Add( mChangeButton ); mMenu.Add( mBackwardButton ); mMenu.Add( mForwardButton ); - mPauseButton.SetVisible( false ); + mPauseButton.SetProperty( Actor::Property::VISIBLE, false ); mPauseButton.SetProperty( Button::Property::DISABLED, true ); - mPlayButton.SetVisible( true ); + mPlayButton.SetProperty( Actor::Property::VISIBLE, true ); mPlayButton.SetProperty( Button::Property::DISABLED, false ); - mStopButton.SetVisible( true ); - mStopButton.SetProperty( Button::Property::DISABLED, false ); - mResetButton.SetVisible( false ); - mResetButton.SetProperty( Button::Property::DISABLED, true ); - - mPlayButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, PLAY_IMAGE ); - mPlayButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, PLAY_IMAGE ); - mPauseButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, PAUSE_IMAGE ); - mPauseButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, PAUSE_IMAGE ); - - mStopButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, STOP_IMAGE ); - mStopButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, STOP_IMAGE ); - mResetButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, RESET_IMAGE ); - mResetButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, RESET_IMAGE ); - - mBackwardButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, BACKWARD_IMAGE ); - mBackwardButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, BACKWARD_IMAGE ); - mForwardButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, FORWARD_IMAGE ); - mForwardButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, FORWARD_IMAGE ); + mChangeButton.SetProperty( Actor::Property::VISIBLE, true ); + mChangeButton.SetProperty( Button::Property::DISABLED, false ); + + mPlayButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, PLAY_IMAGE ); + mPlayButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, PLAY_IMAGE ); + mPauseButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, PAUSE_IMAGE ); + mPauseButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, PAUSE_IMAGE ); + + mChangeButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, CHANGE_IMAGE ); + mChangeButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, CHANGE_IMAGE ); + + mBackwardButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, BACKWARD_IMAGE ); + mBackwardButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, BACKWARD_IMAGE ); + mForwardButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, FORWARD_IMAGE ); + mForwardButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, FORWARD_IMAGE ); mPanGestureDetector = PanGestureDetector::New(); mPanGestureDetector.Attach( mVideoView ); @@ -182,83 +166,52 @@ class VideoViewController: public ConnectionTracker mRotationAnimation.AnimateBy( Property(mVideoView, Actor::Property::ORIENTATION), Quaternion(Degree(0.f), Degree(360.f), Degree(0.f)) ); mRotationAnimation.SetLooping(false); - Stage::GetCurrent().KeyEventSignal().Connect( this, &VideoViewController::OnKeyEvent ); - - mWindowSurfaceTarget.Insert( "RENDERING_TARGET", "windowSurfaceTarget" ); - mNativeImageTarget.Insert( "RENDERING_TARGET", "nativeImageTarget" ); - - mVideoView.FinishedSignal().Connect( this, &VideoViewController::OnFinished ); + window.KeyEventSignal().Connect( this, &VideoViewController::OnKeyEvent ); } bool OnButtonClicked( Button button ) { - - if( mPauseButton.GetId() == button.GetId()) + if( mPauseButton.GetProperty< int >( Actor::Property::ID ) == button.GetProperty< int >( Actor::Property::ID )) { if( mIsPlay ) { - mPauseButton.SetVisible( false ); + mPauseButton.SetProperty( Actor::Property::VISIBLE, false ); mPauseButton.SetProperty( Button::Property::DISABLED, true ); - mPlayButton.SetVisible( true ); + mPlayButton.SetProperty( Actor::Property::VISIBLE, true ); mPlayButton.SetProperty( Button::Property::DISABLED, false ); mIsPlay = false; mVideoView.Pause(); } } - else if( mPlayButton.GetId() == button.GetId()) + else if( mPlayButton.GetProperty< int >( Actor::Property::ID ) == button.GetProperty< int >( Actor::Property::ID )) { - if( mIsStop ) - { - return false; - } - - mPauseButton.SetVisible( true ); + mPauseButton.SetProperty( Actor::Property::VISIBLE, true ); mPauseButton.SetProperty( Button::Property::DISABLED, false ); - mPlayButton.SetVisible( false ); + mPlayButton.SetProperty( Actor::Property::VISIBLE, false ); mPlayButton.SetProperty( Button::Property::DISABLED, true ); mIsPlay = true; mVideoView.Play(); } - else if( mResetButton.GetId() == button.GetId()) + else if( mChangeButton.GetProperty< int >( Actor::Property::ID ) == button.GetProperty< int >( Actor::Property::ID )) { - if( mIsStop ) + bool underlay = false; + underlay = mVideoView.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >(); + if( underlay ) { - mPauseButton.SetVisible( true ); - mPauseButton.SetProperty( Button::Property::DISABLED, false ); - mPlayButton.SetVisible( false ); - mPlayButton.SetProperty( Button::Property::DISABLED, true ); - mResetButton.SetVisible( false ); - mResetButton.SetProperty( Button::Property::DISABLED, true ); - mStopButton.SetVisible( true ); - mStopButton.SetProperty( Button::Property::DISABLED, false ); - - mIsStop = false; - mIsPlay = true; - mVideoView.SetProperty( VideoView::Property::VIDEO, PLAY_FILE ); - mVideoView.Play(); + mVideoView.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false ); + } + else + { + mVideoView.SetProperty( Toolkit::VideoView::Property::UNDERLAY, true ); } } - else if( mStopButton.GetId() == button.GetId()) - { - mPauseButton.SetVisible( false ); - mPauseButton.SetProperty( Button::Property::DISABLED, true ); - mPlayButton.SetVisible( true ); - mPlayButton.SetProperty( Button::Property::DISABLED, false ); - mResetButton.SetVisible( true ); - mPlayButton.SetProperty( Button::Property::DISABLED, false ); - mStopButton.SetVisible( false ); - mStopButton.SetProperty( Button::Property::DISABLED, true ); - - mIsStop = true; - mVideoView.Stop(); - } - else if( mBackwardButton.GetId() == button.GetId()) + else if( mBackwardButton.GetProperty< int >( Actor::Property::ID ) == button.GetProperty< int >( Actor::Property::ID )) { mVideoView.Backward( SEEK_POS ); } - else if( mForwardButton.GetId() == button.GetId()) + else if( mForwardButton.GetProperty< int >( Actor::Property::ID ) == button.GetProperty< int >( Actor::Property::ID )) { mVideoView.Forward( SEEK_POS ); } @@ -266,15 +219,6 @@ class VideoViewController: public ConnectionTracker return true; } - void OnFinished( VideoView& view ) - { - if( !mIsFullScreen ) - { - mRotationAnimation.Play(); - mIsStop = true; - } - } - void OnPan( Actor actor, const PanGesture& gesture ) { if( !mIsFullScreen && gesture.state == Gesture::Continuing ) @@ -293,20 +237,7 @@ class VideoViewController: public ConnectionTracker if( gesture.state == Gesture::Finished ) { mScale = mPinchStartScale * gesture.scale; - if( mScale > 1.f ) - { - mVideoView.SetSize( mStageSize.x, mStageSize.y ); - mVideoView.SetProperty( VideoView::Property::VIDEO, mWindowSurfaceTarget ); - mMenu.SetSize( mStageSize.x, 120 ); - mIsFullScreen = true; - } - else - { - mVideoView.SetSize( INIT_WIDTH, INIT_HEIGHT ); - mVideoView.SetProperty( VideoView::Property::VIDEO, mNativeImageTarget ); - mMenu.SetSize( INIT_WIDTH, 120 ); - mIsFullScreen = false; - } + mVideoView.SetProperty( Actor::Property::SCALE, mScale ); } } @@ -314,7 +245,13 @@ class VideoViewController: public ConnectionTracker { if( !mIsFullScreen ) { - mRotationAnimation.Play(); + mVideoView.SetProperty( Actor::Property::SIZE, mWindowSize ); + mIsFullScreen = true; + } + else + { + mVideoView.SetProperty( Actor::Property::SIZE, Vector2( INIT_WIDTH, INIT_HEIGHT ) ); + mIsFullScreen = false; } } @@ -325,7 +262,7 @@ private: */ void OnKeyEvent(const KeyEvent& event) { - if(event.state == KeyEvent::Down) + if(event.GetState() == KeyEvent::DOWN) { if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) ) { @@ -338,15 +275,14 @@ private: Application& mApplication; VideoView mVideoView; Layer mMenu; - Vector2 mStageSize; + Vector2 mWindowSize; bool mIsPlay; - bool mIsStop; bool mIsFullScreen; PushButton mPlayButton; PushButton mPauseButton; - PushButton mStopButton; + PushButton mChangeButton; PushButton mResetButton; PushButton mBackwardButton; PushButton mForwardButton; @@ -358,24 +294,12 @@ private: float mPinchStartScale; Animation mRotationAnimation; - Property::Map mWindowSurfaceTarget; - Property::Map mNativeImageTarget; }; -void RunTest( Application& application ) -{ - VideoViewController test( application ); - - application.MainLoop(); -} - -// Entry point for Linux & Tizen applications -// int DALI_EXPORT_API main( int argc, char **argv ) { Application application = Application::New( &argc, &argv, DEMO_THEME_PATH ); - - RunTest( application ); - + VideoViewController test( application ); + application.MainLoop(); return 0; }