virtual ~Window() = default;
static Window* New(const PositionSize& positionSize, const std::string& name, const std::string& className, bool isTransparent);
FocusChangeSignalType mFocusChangeSignal;
+ DevelWindow::VisibilityChangedSignalType mVisibilityChangedSignal;
};
} // namespace Adaptor
{
Window::Window( const PositionSize& positionSize )
-: SceneHolder( positionSize )
+: SceneHolder( positionSize ),
+ mFocusChangeSignal(),
+ mVisibilityChangedSignal()
{
}
GetImplementation( *this ).mFocusChangeSignal.Emit(*this, true);
}
+void Window::Hide()
+{
+ GetImplementation( *this ).mVisibilityChangedSignal.Emit( *this, false );
+}
+
FocusChangeSignalType& Window::FocusChangeSignal()
{
return GetImplementation( *this ).mFocusChangeSignal;
return GetImplementation( window ).WheelEventSignal();
}
+VisibilityChangedSignalType& VisibilityChangedSignal( Window window )
+{
+ return GetImplementation( window ).mVisibilityChangedSignal;
+}
+
} // namespace DevelWindow
} // Dali
void SetBackgroundColor( const Vector4& color );
Vector4 GetBackgroundColor() const;
void Raise();
+ void Hide();
FocusChangeSignalType& FocusChangeSignal();
public:
typedef Signal< bool (const KeyEvent&) > KeyEventGeneratedSignalType;
typedef Signal< void (const TouchData&) > TouchSignalType;
typedef Signal< void (const WheelEvent&) > WheelEventSignalType;
+typedef Signal< void ( Window, bool ) > VisibilityChangedSignalType;
Dali::Window Get( Actor actor );
Dali::Window DownCast( BaseHandle handle );
KeyEventGeneratedSignalType& KeyEventGeneratedSignal( Dali::Window window );
TouchSignalType& TouchSignal( Dali::Window window );
WheelEventSignalType& WheelEventSignal( Window window );
+VisibilityChangedSignalType& VisibilityChangedSignal( Window window );
}
} // namespace Dali
#include <dali-toolkit/devel-api/visuals/animated-vector-image-visual-actions-devel.h>
#include <dali-toolkit/devel-api/visuals/animated-vector-image-visual-signals-devel.h>
#include <dali/devel-api/rendering/renderer-devel.h>
+#include <dali/devel-api/adaptor-framework/window-devel.h>
#include "dummy-control.h"
using namespace Dali;
END_TEST;
}
-int UtcDaliAnimatedVectorImageVisualVisibilityChanged(void)
+int UtcDaliAnimatedVectorImageVisualControlVisibilityChanged(void)
{
ToolkitTestApplication application;
- tet_infoline( "UtcDaliAnimatedVectorImageVisualVisibilityChanged" );
+ tet_infoline( "UtcDaliAnimatedVectorImageVisualControlVisibilityChanged" );
Property::Map propertyMap;
propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
END_TEST;
}
+
+int UtcDaliAnimatedVectorImageVisualWindowVisibilityChanged(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline( "UtcDaliAnimatedVectorImageVisualWindowVisibilityChanged" );
+
+ Property::Map propertyMap;
+ propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
+ .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME );
+
+ Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
+ DALI_TEST_CHECK( visual );
+
+ DummyControl actor = DummyControl::New( true );
+ DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
+ dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
+
+ Vector2 controlSize( 20.f, 30.f );
+ actor.SetSize( controlSize );
+
+ Stage::GetCurrent().Add( actor );
+
+ application.SendNotification();
+ application.Render();
+
+ Property::Map attributes;
+ DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
+
+ // Check rendering behavior
+ DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
+ Renderer renderer = actor.GetRendererAt( 0u );
+ DALI_TEST_CHECK( renderer );
+ DALI_TEST_CHECK( renderer.GetProperty< int >( DevelRenderer::Property::RENDERING_BEHAVIOR ) == DevelRenderer::Rendering::CONTINUOUSLY );
+
+ Window window = DevelWindow::Get( actor );
+ window.Hide();
+
+ application.SendNotification();
+ application.Render();
+
+ // Check rendering behavior again
+ DALI_TEST_CHECK( renderer.GetProperty< int >( DevelRenderer::Property::RENDERING_BEHAVIOR ) == DevelRenderer::Rendering::IF_REQUIRED );
+
+ END_TEST;
+}
// EXTERNAL INCLUDES
#include <dali/public-api/common/stage.h>
#include <dali/devel-api/rendering/renderer-devel.h>
+#include <dali/devel-api/adaptor-framework/window-devel.h>
#include <dali/integration-api/debug.h>
// INTERNAL INCLUDES
mSizeNotification = actor.AddPropertyNotification( Actor::Property::SIZE, StepCondition( 3.0f ) );
mSizeNotification.NotifySignal().Connect( this, &AnimatedVectorImageVisual::OnSizeNotification );
- DevelActor::VisibilityChangedSignal( actor ).Connect( this, &AnimatedVectorImageVisual::OnVisibilityChanged );
+ DevelActor::VisibilityChangedSignal( actor ).Connect( this, &AnimatedVectorImageVisual::OnControlVisibilityChanged );
+
+ Window window = DevelWindow::Get( actor );
+ if( window )
+ {
+ DevelWindow::VisibilityChangedSignal( window ).Connect( this, &AnimatedVectorImageVisual::OnWindowVisibilityChanged );
+ }
DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::DoSetOnStage [%p]\n", this );
}
void AnimatedVectorImageVisual::DoSetOffStage( Actor& actor )
{
- mVectorAnimationTask->PauseAnimation();
-
- mActionStatus = DevelAnimatedVectorImageVisual::Action::PAUSE;
+ PauseAnimation();
if( mImpl->mRenderer )
{
- mImpl->mRenderer.SetProperty( DevelRenderer::Property::RENDERING_BEHAVIOR, DevelRenderer::Rendering::IF_REQUIRED );
-
actor.RemoveRenderer( mImpl->mRenderer );
mImpl->mRenderer.Reset();
actor.RemovePropertyNotification( mScaleNotification );
actor.RemovePropertyNotification( mSizeNotification );
- DevelActor::VisibilityChangedSignal( actor ).Connect( this, &AnimatedVectorImageVisual::OnVisibilityChanged );
+ DevelActor::VisibilityChangedSignal( actor ).Disconnect( this, &AnimatedVectorImageVisual::OnControlVisibilityChanged );
+
+ Window window = DevelWindow::Get( actor );
+ if( window )
+ {
+ DevelWindow::VisibilityChangedSignal( window ).Disconnect( this, &AnimatedVectorImageVisual::OnWindowVisibilityChanged );
+ }
mPlacementActor.Reset();
}
}
+void AnimatedVectorImageVisual::PauseAnimation()
+{
+ if( mActionStatus == DevelAnimatedVectorImageVisual::Action::PLAY )
+ {
+ mVectorAnimationTask->PauseAnimation();
+
+ mActionStatus = DevelAnimatedVectorImageVisual::Action::PAUSE;
+
+ if( mImpl->mRenderer )
+ {
+ mImpl->mRenderer.SetProperty( DevelRenderer::Property::RENDERING_BEHAVIOR, DevelRenderer::Rendering::IF_REQUIRED );
+ }
+ }
+}
+
void AnimatedVectorImageVisual::OnScaleNotification( PropertyNotification& source )
{
Actor actor = mPlacementActor.GetHandle();
}
}
-void AnimatedVectorImageVisual::OnVisibilityChanged( Actor actor, bool visible, DevelActor::VisibilityChange::Type type )
+void AnimatedVectorImageVisual::OnControlVisibilityChanged( Actor actor, bool visible, DevelActor::VisibilityChange::Type type )
{
if( !visible )
{
- if( mActionStatus == DevelAnimatedVectorImageVisual::Action::PLAY )
- {
- mVectorAnimationTask->PauseAnimation();
+ PauseAnimation();
- if( mImpl->mRenderer )
- {
- mImpl->mRenderer.SetProperty( DevelRenderer::Property::RENDERING_BEHAVIOR, DevelRenderer::Rendering::IF_REQUIRED );
- }
+ DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnControlVisibilityChanged: invisibile. Pause animation [%p]\n", this );
+ }
+}
- mActionStatus = DevelAnimatedVectorImageVisual::Action::PAUSE;
+void AnimatedVectorImageVisual::OnWindowVisibilityChanged( Window window, bool visible )
+{
+ if( !visible )
+ {
+ PauseAnimation();
- DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnVisibilityChanged: invisibile. Pause animation [%p]\n", this );
- }
+ DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnWindowVisibilityChanged: invisibile. Pause animation [%p]\n", this );
}
}
#include <dali/public-api/object/weak-handle.h>
#include <dali/public-api/object/property-notification.h>
#include <dali/devel-api/actors/actor-devel.h>
+#include <dali/public-api/adaptor-framework/window.h>
// INTERNAL INCLUDES
#include <dali-toolkit/internal/visuals/visual-base-impl.h>
void SetVectorImageSize();
/**
+ * @brief Pause the animation.
+ */
+ void PauseAnimation();
+
+ /**
* @brief Callback when the world scale factor changes.
*/
void OnScaleNotification( PropertyNotification& source );
/**
* @brief Callback when the visibility of the actor is changed.
*/
- void OnVisibilityChanged( Actor actor, bool visible, DevelActor::VisibilityChange::Type type );
+ void OnControlVisibilityChanged( Actor actor, bool visible, DevelActor::VisibilityChange::Type type );
+
+ /**
+ * @brief Callback when the visibility of the window is changed.
+ */
+ void OnWindowVisibilityChanged( Window window, bool visible );
// Undefined
AnimatedVectorImageVisual( const AnimatedVectorImageVisual& visual ) = delete;
BuildRequires: pkgconfig(dali-adaptor)
BuildRequires: gettext
BuildRequires: pkgconfig(libtzplatform-config)
+Provides: libdali-toolkit-cxx11.so
+Provides: libdali-toolkit-cxx11.so.0
+Provides: libdali-toolkit-cxx11.so.0.0.0
#############################
# profile setup