[Tizen] Add visibility changed signal to Window 61/216461/1
authorHeeyong Song <heeyong.song@samsung.com>
Tue, 22 Oct 2019 05:14:46 +0000 (14:14 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Fri, 25 Oct 2019 07:20:34 +0000 (16:20 +0900)
Change-Id: If4d885b656f8261fdc0ac5ab91cebf2570dd635b

dali/devel-api/adaptor-framework/window-devel.cpp
dali/devel-api/adaptor-framework/window-devel.h
dali/internal/window-system/common/window-impl.cpp
dali/internal/window-system/common/window-impl.h

index c16a520..aefb546 100644 (file)
@@ -65,6 +65,11 @@ WheelEventSignalType& WheelEventSignal( Window window )
   return GetImplementation( window ).WheelEventSignal();
 }
 
+VisibilityChangedSignalType& VisibilityChangedSignal( Window window )
+{
+  return GetImplementation( window ).VisibilityChangedSignal();
+}
+
 TransitionEffectEventSignalType& TransitionEffectEventSignal( Window window )
 {
   return GetImplementation( window ).TransitionEffectEventSignal();
index da532d3..9c02a70 100644 (file)
@@ -58,6 +58,8 @@ typedef Signal< void (const TouchData&) > TouchSignalType;         ///< Touch si
 
 typedef Signal< void (const WheelEvent&) > WheelEventSignalType;   ///< Touched signal type
 
+typedef Signal< void ( Window, bool ) > VisibilityChangedSignalType; ///< Visibility changed signal type
+
 typedef Signal< void (Window, EffectState, EffectType) > TransitionEffectEventSignalType; ///< Effect signal type and state
 
 /**
@@ -135,6 +137,18 @@ DALI_ADAPTOR_API TouchSignalType& TouchSignal( Window window );
 DALI_ADAPTOR_API WheelEventSignalType& WheelEventSignal( Window window );
 
 /**
+ * @brief This signal is emitted when the window is shown or hidden.
+ *
+ * A callback of the following type may be connected:
+ * @code
+ *   void YourCallbackName( Window window, bool visible );
+ * @endcode
+ * @param[in] window The window instance
+ * @return The signal to connect to
+ */
+DALI_ADAPTOR_API VisibilityChangedSignalType& VisibilityChangedSignal( Window window );
+
+/**
  * @brief This signal is emitted for transition effect.
  *
  * The transition animation is appeared when the window is shown/hidden.
index 0db7230..fbf04ca 100644 (file)
@@ -87,6 +87,7 @@ Window::Window()
   mDeleteRequestSignal(),
   mFocusChangeSignal(),
   mResizeSignal(),
+  mVisibilityChangedSignal(),
   mTransitionEffectEventSignal()
 {
 }
@@ -293,6 +294,9 @@ void Window::Show()
   {
     WindowVisibilityObserver* observer( mAdaptor );
     observer->OnWindowShown();
+
+    Dali::Window handle( this );
+    mVisibilityChangedSignal.Emit( handle, true );
   }
 
   DALI_LOG_RELEASE_INFO( "Window (%p) Show(): iconified = %d\n", this, mIconified );
@@ -308,6 +312,9 @@ void Window::Hide()
   {
     WindowVisibilityObserver* observer( mAdaptor );
     observer->OnWindowHidden();
+
+    Dali::Window handle( this );
+    mVisibilityChangedSignal.Emit( handle, false );
   }
 
   DALI_LOG_RELEASE_INFO( "Window (%p) Hide(): iconified = %d\n", this, mIconified );
@@ -577,6 +584,9 @@ void Window::OnIconifyChanged( bool iconified )
     {
       WindowVisibilityObserver* observer( mAdaptor );
       observer->OnWindowHidden();
+
+      Dali::Window handle( this );
+      mVisibilityChangedSignal.Emit( handle, false );
     }
 
     DALI_LOG_RELEASE_INFO( "Window (%p) Iconified: visible = %d\n", this, mVisible );
@@ -589,6 +599,9 @@ void Window::OnIconifyChanged( bool iconified )
     {
       WindowVisibilityObserver* observer( mAdaptor );
       observer->OnWindowShown();
+
+      Dali::Window handle( this );
+      mVisibilityChangedSignal.Emit( handle, true );
     }
 
     DALI_LOG_RELEASE_INFO( "Window (%p) Deiconified: visible = %d\n", this, mVisible );
index cca3643..69b2b27 100644 (file)
@@ -67,6 +67,7 @@ public:
   typedef Dali::Window::ResizedSignalType ResizedSignalType;
   typedef Dali::Window::FocusChangeSignalType FocusChangeSignalType;
   typedef Dali::Window::ResizeSignalType ResizeSignalType;
+  typedef Dali::DevelWindow::VisibilityChangedSignalType VisibilityChangedSignalType;
   typedef Dali::DevelWindow::TransitionEffectEventSignalType TransitionEffectEventSignalType;
   typedef Signal< void () > SignalType;
 
@@ -475,6 +476,7 @@ public: // Signals
    * @copydoc Dali::Window::ResizedSignal()
    */
   ResizedSignalType& ResizedSignal() { return mResizedSignal; }
+
   /**
    * @copydoc Dali::Window::ResizedSignal()
    */
@@ -486,6 +488,11 @@ public: // Signals
   SignalType& DeleteRequestSignal() { return mDeleteRequestSignal; }
 
   /**
+   * @copydoc Dali::DevelWindow::VisibilityChangedSignal()
+   */
+  VisibilityChangedSignalType& VisibilityChangedSignal() { return mVisibilityChangedSignal; }
+
+  /**
    * @copydoc Dali::Window::SignalEventProcessingFinished()
    */
   Dali::DevelWindow::EventProcessingFinishedSignalType& EventProcessingFinishedSignal() { return mScene.EventProcessingFinishedSignal(); }
@@ -526,6 +533,7 @@ private:
   SignalType                            mDeleteRequestSignal;
   FocusChangeSignalType                 mFocusChangeSignal;
   ResizeSignalType                      mResizeSignal;
+  VisibilityChangedSignalType           mVisibilityChangedSignal;
   TransitionEffectEventSignalType       mTransitionEffectEventSignal;
 };