Supports some tizen window features.
[platform/core/uifw/dali-adaptor.git] / dali / internal / window-system / common / window-base.h
index 88c6d9d..389e7c5 100644 (file)
@@ -72,6 +72,7 @@ public:
   typedef Signal<void(WindowEffectState, WindowEffectType)> TransitionEffectEventSignalType;
   typedef Signal<void()>                                    KeyboardRepeatSettingsChangedSignalType;
   typedef Signal<void()>                                    WindowRedrawRequestSignalType;
+  typedef Signal<void(Dali::PositionSize&)>                 UpdatePositionSizeType;
 
   // Input events
   typedef Signal<void(Integration::Point&, uint32_t)> TouchEventSignalType;
@@ -249,6 +250,11 @@ public:
   virtual void SetType(Dali::WindowType type) = 0;
 
   /**
+   * @copydoc Dali::Window::GetType()
+   */
+  virtual Dali::WindowType GetType() const = 0;
+
+  /**
    * @copydoc Dali::Window::SetNotificationLevel()
    */
   virtual Dali::WindowOperationResult SetNotificationLevel(Dali::WindowNotificationLevel level) = 0;
@@ -332,6 +338,36 @@ public:
   virtual void WindowRotationCompleted(int degree, int width, int height) = 0;
 
   /**
+   * @brief starts the window is moved by display server
+   */
+  virtual void RequestMoveToServer() = 0;
+
+  /**
+   * @brief starts the window is resized by display server
+   *
+   * @param[in] direction It is direction of the started edge/side.
+   */
+  virtual void RequestResizeToServer(WindowResizeDirection direction) = 0;
+
+  /**
+   * @brief Enables the floating mode of window.
+   *
+   * The floating mode is to support making partial size window easliy.
+   * It is useful to make popup style window
+   * and this window is always upper than the other normal window.
+   *
+   * A special display server(as a Tizen display server) supports this mode.
+   *
+   * @param[in] enable Enable floating mode or not.
+   */
+  virtual void EnableFloatingMode(bool enable) = 0;
+
+  /**
+   * @brief Gets whether floating mode is enabled or not.
+   */
+  virtual bool IsFloatingModeEnabled() const = 0;
+
+  /**
    * @copydoc Dali::Window::SetTransparency()
    */
   virtual void SetTransparency(bool transparent) = 0;
@@ -353,6 +389,23 @@ public:
    */
   virtual int CreateFramePresentedSyncFence() = 0;
 
+  /**
+   * @copydoc Dali::Window::SetPositionSizeWithAngle()
+   */
+  virtual void SetPositionSizeWithAngle(PositionSize positionSize, int angle) = 0;
+
+  /**
+   * @brief Initialize for Ime window.
+   * It should be called when the window is only used for Ime keyboard window.
+   */
+  virtual void InitializeIme() = 0;
+
+  /**
+   * @brief Send the signal to display server for Ime Window is ready to render.
+   * It is used for compositing by display server.
+   */
+  virtual void ImeWindowReadyToRender() = 0;
+
   // Signals
 
   /**
@@ -435,6 +488,11 @@ public:
    */
   WindowRedrawRequestSignalType& WindowRedrawRequestSignal();
 
+  /**
+   * @brief This signal is emitted when the window is resized or moved by display server.
+   */
+  UpdatePositionSizeType& UpdatePositionSizeSignal();
+
 protected:
   // Undefined
   WindowBase(const WindowBase&) = delete;
@@ -459,6 +517,7 @@ protected:
   TransitionEffectEventSignalType         mTransitionEffectEventSignal;
   KeyboardRepeatSettingsChangedSignalType mKeyboardRepeatSettingsChangedSignal;
   WindowRedrawRequestSignalType           mWindowRedrawRequestSignal;
+  UpdatePositionSizeType                  mUpdatePositionSizeSignal;
 };
 
 } // namespace Adaptor