From c828d8b65eb3f55aae91a1f3af88ff8b6a5159ad Mon Sep 17 00:00:00 2001 From: Yoonsang Lee Date: Fri, 19 Dec 2014 15:16:38 +0900 Subject: [PATCH] add IndicatorVisibilityChangedSignal Change-Id: Ib6279516bac7b1215f7576ea472100757ad9fcfc add IndicatorVisibilityChangedSignal Change-Id: I3e7dff4c6775cd57de0c47a51470b5ef77798f0a --- adaptors/common/indicator-impl.cpp | 5 +++++ adaptors/common/indicator-impl.h | 6 ++++++ adaptors/common/window-impl.h | 16 ++++++++++++++++ adaptors/public-api/adaptor-framework/window.cpp | 5 +++++ adaptors/public-api/adaptor-framework/window.h | 10 ++++++++++ adaptors/wayland/window-impl-wl.cpp | 5 +++++ adaptors/x11/window-impl-x.cpp | 5 +++++ 7 files changed, 52 insertions(+) diff --git a/adaptors/common/indicator-impl.cpp b/adaptors/common/indicator-impl.cpp index 3ab89fb..a5e0e92 100644 --- a/adaptors/common/indicator-impl.cpp +++ b/adaptors/common/indicator-impl.cpp @@ -1305,6 +1305,11 @@ void Indicator::OnAnimationFinished(Dali::Animation& animation) if( !mIsShowing ) { mIndicatorActor.SetVisible( false ); + + if( mObserver != NULL ) + { + mObserver->IndicatorVisibilityChanged( mIsShowing ); // is showing? + } } } diff --git a/adaptors/common/indicator-impl.h b/adaptors/common/indicator-impl.h index 09ced03..92fec4d 100644 --- a/adaptors/common/indicator-impl.h +++ b/adaptors/common/indicator-impl.h @@ -84,6 +84,12 @@ public: * @param[in] indicator The indicator that has finished uploading. */ virtual void IndicatorClosed(Indicator* indicator) = 0; + + /** + * Notify the observer when the indicator visible status is changed. + * @param[in] isShowing Whether the indicator is visible. + */ + virtual void IndicatorVisibilityChanged( bool isVisible ) = 0; }; protected: diff --git a/adaptors/common/window-impl.h b/adaptors/common/window-impl.h index 0ba73f9..86b82ed 100644 --- a/adaptors/common/window-impl.h +++ b/adaptors/common/window-impl.h @@ -59,6 +59,8 @@ typedef IntrusivePtr OrientationPtr; class Window : public Dali::BaseObject, public Indicator::Observer, public LifeCycleObserver { public: + typedef Dali::Window::IndicatorSignalV2 IndicatorSignalV2; + /** * Create a new Window. This should only be called once by the Application class * @param[in] windowPosition The position and size of the window @@ -222,6 +224,11 @@ private: // Indicator::Observer interface */ virtual void IndicatorClosed(Indicator* indicator); + /** + * @copydoc Dali::Internal::Adaptor::Indicator::Observer::IndicatorVisibilityChanged() + */ + virtual void IndicatorVisibilityChanged( bool isVisible ); + private: // Adaptor::Observer interface /** @@ -249,6 +256,12 @@ private: // Adaptor::Observer interface */ virtual void OnDestroy(); +public: // Signals + /** + * The user should connect to this signal to get a timing when indicator was shown / hidden. + */ + IndicatorSignalV2& IndicatorVisibilityChangedSignal() { return mIndicatorVisibilityChangedSignalV2; } + private: typedef std::vector DiscardedIndicators; @@ -275,6 +288,9 @@ private: OrientationPtr mOrientation; std::vector mAvailableOrientations; Dali::Window::WindowOrientation mPreferredOrientation; + + // Signals + IndicatorSignalV2 mIndicatorVisibilityChangedSignalV2; }; } // namespace Adaptor diff --git a/adaptors/public-api/adaptor-framework/window.cpp b/adaptors/public-api/adaptor-framework/window.cpp index 97998d0..04eac7c 100644 --- a/adaptors/public-api/adaptor-framework/window.cpp +++ b/adaptors/public-api/adaptor-framework/window.cpp @@ -60,6 +60,11 @@ void Window::ShowIndicator( IndicatorVisibleMode visibleMode ) GetImplementation(*this).ShowIndicator( visibleMode ); } +Window::IndicatorSignalV2& Window::IndicatorVisibilityChangedSignal() +{ + return GetImplementation(*this).IndicatorVisibilityChangedSignal(); +} + void Window::SetIndicatorBgOpacity( IndicatorBgOpacity opacity ) { GetImplementation(*this).SetIndicatorBgOpacity( opacity ); diff --git a/adaptors/public-api/adaptor-framework/window.h b/adaptors/public-api/adaptor-framework/window.h index 94e749e..f360f08 100644 --- a/adaptors/public-api/adaptor-framework/window.h +++ b/adaptors/public-api/adaptor-framework/window.h @@ -25,6 +25,7 @@ #include #include #include +#include namespace Dali { @@ -50,6 +51,9 @@ class Orientation; class DALI_IMPORT_API Window : public BaseHandle { public: + typedef SignalV2< void (bool) > IndicatorSignalV2; + +public: // Enumerations @@ -240,6 +244,12 @@ public: Any GetNativeHandle() const; +public: // Signals + /** + * The user should connect to this signal to get a timing when indicator was shown / hidden. + */ + IndicatorSignalV2& IndicatorVisibilityChangedSignal(); + public: // Not intended for application developers /** * @brief This constructor is used by Dali::Application::GetWindow(). diff --git a/adaptors/wayland/window-impl-wl.cpp b/adaptors/wayland/window-impl-wl.cpp index e4f9f8f..528a9bc 100644 --- a/adaptors/wayland/window-impl-wl.cpp +++ b/adaptors/wayland/window-impl-wl.cpp @@ -310,6 +310,11 @@ void Window::IndicatorClosed( Indicator* indicator ) } } +void Window::IndicatorVisibilityChanged(bool isVisible) +{ + mIndicatorVisibilityChangedSignalV2.Emit(isVisible); +} + void Window::SetIndicatorActorRotation() { DALI_LOG_TRACE_METHOD( gWindowLogFilter ); diff --git a/adaptors/x11/window-impl-x.cpp b/adaptors/x11/window-impl-x.cpp index 88493f3..b617086 100644 --- a/adaptors/x11/window-impl-x.cpp +++ b/adaptors/x11/window-impl-x.cpp @@ -487,6 +487,11 @@ void Window::IndicatorClosed( Indicator* indicator ) } } +void Window::IndicatorVisibilityChanged(bool isVisible) +{ + mIndicatorVisibilityChangedSignalV2.Emit(isVisible); +} + void Window::SetIndicatorActorRotation() { DALI_LOG_TRACE_METHOD( gWindowLogFilter ); -- 2.7.4