X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=adaptors%2Fecore%2Fwayland%2Fwindow-impl-ecore-wl.cpp;h=4738eecf21c3bc81374814ac2e297d0313b8db6d;hb=d3512b31357c03a714ec76024df3b89b83e85475;hp=0202d5f649893a686460de4f42ba494bbde852cc;hpb=e5ce3fa5c2d60e9494dd34ddd2d1d12c94ad5cb7;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/adaptors/ecore/wayland/window-impl-ecore-wl.cpp b/adaptors/ecore/wayland/window-impl-ecore-wl.cpp index 0202d5f..4738eec 100644 --- a/adaptors/ecore/wayland/window-impl-ecore-wl.cpp +++ b/adaptors/ecore/wayland/window-impl-ecore-wl.cpp @@ -34,7 +34,6 @@ #include #include #include - namespace { const float INDICATOR_ANIMATION_DURATION( 0.18f ); // 180 milli seconds @@ -63,8 +62,17 @@ struct Window::EventHandler */ EventHandler( Window* window ) : mWindow( window ), + mWindowPropertyHandler( NULL ), + mClientMessageHandler( NULL ), mEcoreWindow( 0 ) { + // store ecore window handle + ECore::WindowRenderSurface* wlWindow( dynamic_cast< ECore::WindowRenderSurface * >( mWindow->mSurface ) ); + if( wlWindow ) + { + mEcoreWindow = wlWindow->GetWlWindow(); + } + DALI_ASSERT_ALWAYS( mEcoreWindow != 0 && "There is no ecore Wl window"); } /** @@ -76,9 +84,9 @@ struct Window::EventHandler { ecore_event_handler_del( mWindowPropertyHandler ); } - if ( mClientMessagehandler ) + if ( mClientMessageHandler ) { - ecore_event_handler_del( mClientMessagehandler ); + ecore_event_handler_del( mClientMessageHandler ); } } @@ -99,7 +107,7 @@ struct Window::EventHandler // Data Window* mWindow; Ecore_Event_Handler* mWindowPropertyHandler; - Ecore_Event_Handler* mClientMessagehandler; + Ecore_Event_Handler* mClientMessageHandler; Ecore_Wl_Window* mEcoreWindow; }; @@ -153,6 +161,34 @@ void Window::ShowIndicator( Dali::Window::IndicatorVisibleMode visibleMode ) DALI_LOG_TRACE_METHOD_FMT( gWindowLogFilter, "visible : %d\n", visibleMode ); DALI_ASSERT_DEBUG(mOverlay); + ECore::WindowRenderSurface* wlSurface( dynamic_cast< ECore::WindowRenderSurface * >( mSurface ) ); + DALI_ASSERT_DEBUG(wlSurface); + Ecore_Wl_Window* wlWindow = wlSurface->GetWlWindow(); + + mIndicatorVisible = visibleMode; + + if ( mIndicatorVisible == Dali::Window::VISIBLE ) + { + // when the indicator is visible, set proper mode for indicator server according to bg mode + if ( mIndicatorOpacityMode == Dali::Window::OPAQUE ) + { + ecore_wl_window_indicator_opacity_set(wlWindow, ECORE_WL_INDICATOR_OPAQUE); + } + else if ( mIndicatorOpacityMode == Dali::Window::TRANSLUCENT ) + { + ecore_wl_window_indicator_opacity_set(wlWindow, ECORE_WL_INDICATOR_TRANSLUCENT); + } + else if ( mIndicatorOpacityMode == Dali::Window::TRANSPARENT ) + { + ecore_wl_window_indicator_opacity_set(wlWindow, ECORE_WL_INDICATOR_OPAQUE); + } + } + else + { + // when the indicator is not visible, set TRANSPARENT mode for indicator server + ecore_wl_window_indicator_opacity_set(wlWindow, ECORE_WL_INDICATOR_TRANSPARENT); // it means hidden indicator + } + DoShowIndicator( mIndicatorOrientation ); } @@ -226,6 +262,11 @@ void Window::Initialize(const PositionSize& windowPosition, const std::string& n mSurface = windowSurface; + std::string appId; + mAdaptor->GetAppId( appId ); + Ecore_Wl_Window* wlWindow = windowSurface ->GetWlWindow(); + ecore_wl_window_class_name_set(wlWindow, appId.c_str()); + mOrientation = Orientation::New(this); // create event handler for Wayland window @@ -290,10 +331,46 @@ void Window::DoRotateIndicator( Dali::Window::WindowOrientation orientation ) void Window::SetIndicatorProperties( bool isShow, Dali::Window::WindowOrientation lastOrientation ) { + ECore::WindowRenderSurface* wlSurface( dynamic_cast< ECore::WindowRenderSurface * >( mSurface ) ); + + if( wlSurface ) + { + Ecore_Wl_Window* wlWindow = wlSurface->GetWlWindow(); + if ( isShow ) + { + ecore_wl_window_indicator_state_set(wlWindow, ECORE_WL_INDICATOR_STATE_ON); + } + else + { + ecore_wl_window_indicator_state_set(wlWindow, ECORE_WL_INDICATOR_STATE_OFF); + } + } } void Window::IndicatorTypeChanged(Indicator::Type type) { +#if defined(DALI_PROFILE_MOBILE) + ECore::WindowRenderSurface* wlSurface( dynamic_cast< ECore::WindowRenderSurface * >( mSurface ) ); + + if( wlSurface ) + { + Ecore_Wl_Window* wlWindow = wlSurface->GetWlWindow(); + switch(type) + { + case Indicator::INDICATOR_TYPE_1: + ecore_wl_indicator_visible_type_set(wlWindow, ECORE_WL_INDICATOR_VISIBLE_TYPE_SHOWN); + break; + + case Indicator::INDICATOR_TYPE_2: + ecore_wl_indicator_visible_type_set(wlWindow, ECORE_WL_INDICATOR_VISIBLE_TYPE_HIDDEN); + break; + + case Indicator::INDICATOR_TYPE_UNKNOWN: + default: + break; + } + } +#endif //MOBILE } void Window::IndicatorClosed( IndicatorInterface* indicator )