X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fwindow-system%2Fcommon%2Fwindow-impl.h;h=bebb11bcc07fdad2839e542ac002339fc0674e5e;hb=c7fac03967c7400d7a03457b9bd0aab9da4fa949;hp=1f10653139dfd74e6d332c02327bed5d160de741;hpb=09e6892adcddf6d2bf7c88dc8442a42da2ac57f5;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/window-system/common/window-impl.h b/dali/internal/window-system/common/window-impl.h index 1f10653..bebb11b 100644 --- a/dali/internal/window-system/common/window-impl.h +++ b/dali/internal/window-system/common/window-impl.h @@ -23,20 +23,25 @@ #include #include #include -#include + +#ifdef DALI_ADAPTOR_COMPILATION +#include +#else +#include +#endif // INTERNAL INCLUDES -#include #include -#include #include #include -#include +#include +#include namespace Dali { class Adaptor; class Actor; +class RenderSurfaceInterface; namespace Internal { @@ -47,18 +52,21 @@ class WindowRenderSurface; class WindowBase; class Window; -typedef IntrusivePtr WindowPtr; -typedef IntrusivePtr OrientationPtr; +using WindowPtr = IntrusivePtr< Window >; +using OrientationPtr = IntrusivePtr< Orientation >; +using EventHandlerPtr = IntrusivePtr< EventHandler >; /** * Window provides a surface to render onto with orientation & indicator properties. */ -class Window : public Dali::BaseObject, public IndicatorInterface::Observer, public LifeCycleObserver, public ConnectionTracker +class Window : public Dali::Internal::Adaptor::SceneHolder, public EventHandler::Observer, public ConnectionTracker { public: typedef Dali::Window::IndicatorSignalType IndicatorSignalType; typedef Dali::Window::FocusSignalType FocusSignalType; typedef Dali::Window::ResizedSignalType ResizedSignalType; + typedef Dali::Window::FocusChangeSignalType FocusChangeSignalType; + typedef Dali::Window::ResizeSignalType ResizeSignalType; typedef Signal< void () > SignalType; /** @@ -72,18 +80,6 @@ public: static Window* New(const PositionSize& positionSize, const std::string& name, const std::string& className, bool isTransparent = false); /** - * Pass the adaptor back to the overlay. This allows the window to access Core's overlay. - * @param[in] adaptor An initialized adaptor - */ - void SetAdaptor(Dali::Adaptor& adaptor); - - /** - * Get the window surface - * @return The render surface - */ - WindowRenderSurface* GetSurface(); - - /** * @copydoc Dali::Window::ShowIndicator() */ void ShowIndicator( Dali::Window::IndicatorVisibleMode visibleMode ); @@ -94,11 +90,6 @@ public: void SetIndicatorBgOpacity( Dali::Window::IndicatorBgOpacity opacity ); /** - * Set the indicator visible mode - */ - void SetIndicatorVisibleMode( Dali::Window::IndicatorVisibleMode mode ); - - /** * @copydoc Dali::Window::RotateIndicator() */ void RotateIndicator( Dali::Window::WindowOrientation orientation ); @@ -109,6 +100,12 @@ public: void SetClass( std::string name, std::string className ); /** + * @brief Gets the window class name. + * @return The class of the window + */ + std::string GetClassName() const; + + /** * @copydoc Dali::Window::Raise() */ void Raise(); @@ -124,31 +121,6 @@ public: void Activate(); /** - * @copydoc Dali::Window::Add() - */ - void Add( Dali::Actor actor ); - - /** - * @copydoc Dali::Window::Remove() - */ - void Remove( Dali::Actor remove ); - - /** - * @copydoc Dali::Window::SetBackgroundColor() - */ - void SetBackgroundColor(Vector4 color); - - /** - * @copydoc Dali::Window::GetBackgroundColor() - */ - Vector4 GetBackgroundColor() const; - - /** - * @copydoc Dali::Window::GetRootLayer() - */ - Dali::Layer GetRootLayer() const; - - /** * @copydoc Dali::Window::GetLayerCount() */ uint32_t GetLayerCount() const; @@ -159,6 +131,11 @@ public: Dali::Layer GetLayer( uint32_t depth ) const; /** + * @copydoc Dali::DevelWindow::GetRenderTaskList() + */ + Dali::RenderTaskList GetRenderTaskList() const; + + /** * @copydoc Dali::Window::AddAvailableOrientation() */ void AddAvailableOrientation(Dali::Window::WindowOrientation orientation); @@ -189,16 +166,6 @@ public: Dali::Window::WindowOrientation GetPreferredOrientation(); /** - * @copydoc Dali::Window::GetDragAndDropDetector() const - */ - Dali::DragAndDropDetector GetDragAndDropDetector() const; - - /** - * @copydoc Dali::Window::GetNativeHandle() const - */ - Dali::Any GetNativeHandle() const; - - /** * @copydoc Dali::Window::SetAcceptFocus() */ void SetAcceptFocus( bool accept ); @@ -219,11 +186,6 @@ public: void Hide(); /** - * @copydoc Dali::Window::IsVisible() const - */ - bool IsVisible() const; - - /** * @copydoc Dali::Window::GetSupportedAuxiliaryHintCount() */ unsigned int GetSupportedAuxiliaryHintCount() const; @@ -339,6 +301,11 @@ public: void SetPositionSize( PositionSize positionSize ); /** + * @copydoc Dali::Window::GetRootLayer() + */ + Dali::Layer GetRootLayer() const; + + /** * @copydoc Dali::Window::SetTransparency() */ void SetTransparency( bool transparent ); @@ -364,55 +331,54 @@ public: bool UngrabKeyList( const Dali::Vector< Dali::KEY >& key, Dali::Vector< bool >& result ); /** - * Called from Orientation after the Change signal has been sent + * @copydoc Dali::DevelWindow::Get() */ - void RotationDone( int orientation, int width, int height ); + static Dali::Window Get( Dali::Actor actor ); /** - * @brief Retrieves the unique ID of the window. - * @return The ID + * @copydoc Dali::DevelWindow::SetParent() */ - uint32_t GetId() const; - -private: + void SetParent( Dali::Window& parent ); /** - * Private constructor. - * @sa Window::New() + * @copydoc Dali::DevelWindow::Unparent() */ - Window(); + void Unparent(); /** - * Destructor + * @copydoc Dali::DevelWindow::GetParent() */ - virtual ~Window(); + Dali::Window GetParent(); + +public: // Dali::Internal::Adaptor::SceneHolder /** - * Second stage initialization + * @copydoc Dali::Internal::Adaptor::SceneHolder::GetNativeHandle */ - void Initialize(const PositionSize& positionSize, const std::string& name, const std::string& className); + Dali::Any GetNativeHandle() const override; /** - * Shows / hides the indicator bar. - * Handles close/open if rotation changes whilst hidden + * @copydoc Dali::Internal::Adaptor::SceneHolder::IsVisible */ - void DoShowIndicator( Dali::Window::WindowOrientation lastOrientation ); + bool IsVisible() const override; + +private: /** - * Close current indicator and open a connection onto the new indicator service. - * Effect may not be synchronous if waiting for an indicator update on existing connection. + * Private constructor. + * @sa Window::New() */ - void DoRotateIndicator( Dali::Window::WindowOrientation orientation ); + Window(); /** - * Change the indicator actor's rotation to match the current orientation + * Destructor */ - void SetIndicatorActorRotation(); + virtual ~Window(); /** - * Set the indicator properties on the window + * Second stage initialization */ - void SetIndicatorProperties( bool isShow, Dali::Window::WindowOrientation lastOrientation ); + void Initialize(const PositionSize& positionSize, const std::string& name, const std::string& className); /** * Called when the window becomes iconified or deiconified. @@ -434,54 +400,54 @@ private: */ void OnDeleteRequest(); +private: // Dali::Internal::Adaptor::SceneHolder + /** - * Called when the Ecore indicator event is received. + * @copydoc Dali::Internal::Adaptor::SceneHolder::OnAdaptorSet */ - void OnIndicatorFlicked(); - -private: // IndicatorInterface::Observer interface + void OnAdaptorSet( Dali::Adaptor& adaptor ) override; /** - * @copydoc Dali::Internal::Adaptor::IndicatorInterface::Observer::IndicatorTypeChanged() + * @copydoc Dali::Internal::Adaptor::SceneHolder::OnSurfaceSet */ - virtual void IndicatorTypeChanged( IndicatorInterface::Type type ); + void OnSurfaceSet( Dali::RenderSurfaceInterface* surface ) override; /** - * @copydoc Dali::Internal::Adaptor::IndicatorInterface::Observer::IndicatorClosed() + * @copydoc Dali::Internal::Adaptor::SceneHolder::OnPause */ - virtual void IndicatorClosed( IndicatorInterface* indicator); + void OnPause() override; /** - * @copydoc Dali::Internal::Adaptor::IndicatorInterface::Observer::IndicatorVisibilityChanged() + * @copydoc Dali::Internal::Adaptor::SceneHolder::OnResume */ - virtual void IndicatorVisibilityChanged( bool isVisible ); - -private: // Adaptor::Observer interface + void OnResume() override; /** - * @copydoc Dali::Internal::Adaptor::Adaptor::Observer::OnStart() + * @copydoc Dali::Internal::Adaptor::SceneHolder::RecalculateTouchPosition */ - virtual void OnStart(); + void RecalculateTouchPosition( Integration::Point& point ) override; + +private: // Dali::Internal::Adaptor::EventHandler::Observer /** - * @copydoc Dali::Internal::Adaptor::Adaptor::Observer::OnPause() + * @copydoc Dali::Internal::Adaptor::EventHandler::Observer::OnTouchPoint */ - virtual void OnPause(); + void OnTouchPoint( Dali::Integration::Point& point, int timeStamp ) override; /** - * @copydoc Dali::Internal::Adaptor::Adaptor::Observer::OnResume() + * @copydoc Dali::Internal::Adaptor::EventHandler::Observer::OnWheelEvent */ - virtual void OnResume(); + void OnWheelEvent( Dali::Integration::WheelEvent& wheelEvent ) override; /** - * @copydoc Dali::Internal::Adaptor::Adaptor::Observer::OnStop() + * @copydoc Dali::Internal::Adaptor::EventHandler::Observer::OnKeyEvent */ - virtual void OnStop(); + void OnKeyEvent( Dali::Integration::KeyEvent& keyEvent ) override; /** - * @copydoc Dali::Internal::Adaptor::Adaptor::Observer::OnDestroy() + * @copydoc Dali::Internal::Adaptor::EventHandler::Observer::OnRotation */ - virtual void OnDestroy(); + void OnRotation( const RotationEvent& rotation ) override; public: // Signals @@ -496,51 +462,59 @@ public: // Signals FocusSignalType& FocusChangedSignal() { return mFocusChangedSignal; } /** + * @copydoc Dali::Window::WindowFocusChangedSignal() + */ + FocusChangeSignalType& FocusChangeSignal() { return mFocusChangeSignal; } + /** * @copydoc Dali::Window::ResizedSignal() */ ResizedSignalType& ResizedSignal() { return mResizedSignal; } + /** + * @copydoc Dali::Window::ResizedSignal() + */ + ResizeSignalType& ResizeSignal() { return mResizeSignal; } /** * This signal is emitted when the window is requesting to be deleted */ SignalType& DeleteRequestSignal() { return mDeleteRequestSignal; } + /** + * @copydoc Dali::Window::SignalEventProcessingFinished() + */ + Dali::DevelWindow::EventProcessingFinishedSignalType& EventProcessingFinishedSignal() { return mScene.EventProcessingFinishedSignal(); } + private: - static uint32_t mWindowCounter; ///< A counter to track the window creation - uint32_t mId; ///< A unique ID to identify the window starting from 0 - std::unique_ptr< WindowRenderSurface > mSurface; - Dali::Integration::Scene mScene; + WindowRenderSurface* mWindowSurface; ///< The window rendering surface WindowBase* mWindowBase; - Dali::Window::IndicatorVisibleMode mIndicatorVisible; ///< public state - bool mIndicatorIsShown:1; ///< private state - bool mShowRotatedIndicatorOnClose:1; - bool mStarted:1; + std::string mName; + std::string mClassName; bool mIsTransparent:1; bool mIsFocusAcceptable:1; - bool mVisible:1; bool mIconified:1; bool mOpaqueState:1; bool mResizeEnabled:1; - std::unique_ptr< IndicatorInterface > mIndicator; - Dali::Window::WindowOrientation mIndicatorOrientation; - Dali::Window::WindowOrientation mNextIndicatorOrientation; - Dali::Window::IndicatorBgOpacity mIndicatorOpacityMode; - Adaptor* mAdaptor; - Dali::DragAndDropDetector mDragAndDropDetector; Dali::Window::Type mType; + Dali::Window mParentWindow; OrientationPtr mOrientation; std::vector mAvailableOrientations; Dali::Window::WindowOrientation mPreferredOrientation; - Vector4 mBackgroundColor; + int mRotationAngle; ///< The angle of the rotation + int mWindowWidth; ///< The width of the window + int mWindowHeight; ///< The height of the window + + EventHandlerPtr mEventHandler; ///< The window events handler // Signals - IndicatorSignalType mIndicatorVisibilityChangedSignal; - FocusSignalType mFocusChangedSignal; - ResizedSignalType mResizedSignal; - SignalType mDeleteRequestSignal; + IndicatorSignalType mIndicatorVisibilityChangedSignal; + FocusSignalType mFocusChangedSignal; + ResizedSignalType mResizedSignal; + SignalType mDeleteRequestSignal; + FocusChangeSignalType mFocusChangeSignal; + ResizeSignalType mResizeSignal; }; } // namespace Adaptor