X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fwindow-system%2Ftizen-wayland%2Fecore-wl%2Fwindow-base-ecore-wl.cpp;h=0eecbcc8d25f5fae755110083205de66f3431c81;hb=70189749d12fc175c530b8d852386e1c13088fbd;hp=af60d7ad55ede8c68c258489f07d1b5275e3f783;hpb=226c56add58165d1bdb62bb71351eaf7a0026d2f;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp b/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp index af60d7a..0eecbcc 100644 --- a/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp +++ b/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -178,7 +178,6 @@ void GetDeviceSubclass( Ecore_Device_Subclass ecoreDeviceSubclass, Device::Subcl deviceSubclass = Device::Subclass::TRACKBALL; break; } -#ifdef OVER_TIZEN_VERSION_4 case ECORE_DEVICE_SUBCLASS_REMOCON: { deviceSubclass = Device::Subclass::REMOCON; @@ -189,7 +188,6 @@ void GetDeviceSubclass( Ecore_Device_Subclass ecoreDeviceSubclass, Device::Subcl deviceSubclass = Device::Subclass::VIRTUAL_KEYBOARD; break; } -#endif default: { deviceSubclass = Device::Subclass::NONE; @@ -419,25 +417,6 @@ static Eina_Bool EcoreEventDataReceive( void* data, int type, void* event ) } ///////////////////////////////////////////////////////////////////////////////////////////////// -// Indicator Callbacks -///////////////////////////////////////////////////////////////////////////////////////////////// - -#if defined (DALI_PROFILE_MOBILE) - /** - * Called when the Ecore indicator event is received. - */ - static Eina_Bool EcoreEventIndicator( void* data, int type, void* event ) - { - WindowBaseEcoreWl* windowBase = static_cast< WindowBaseEcoreWl* >( data ); - if( windowBase ) - { - windowBase->OnIndicatorFlicked( data, type, event ); - } - return ECORE_CALLBACK_PASS_ON; - } -#endif // DALI_PROFILE_MOBILE - -///////////////////////////////////////////////////////////////////////////////////////////////// // Font Callbacks ///////////////////////////////////////////////////////////////////////////////////////////////// @@ -605,7 +584,10 @@ WindowBaseEcoreWl::WindowBaseEcoreWl( Dali::PositionSize positionSize, Any surfa mBrightness( 0 ), mBrightnessChangeState( 0 ), mBrightnessChangeDone( true ), - mOwnSurface( false ) + mOwnSurface( false ), + mWindowRotationAngle( 0 ), + mScreenRotationAngle( 0 ), + mSupportedPreProtation( 0 ) #ifdef DALI_ELDBUS_AVAILABLE , mSystemConnection( NULL ) #endif @@ -705,11 +687,6 @@ void WindowBaseEcoreWl::Initialize( PositionSize positionSize, Any surface, bool mEcoreEventHandler.PushBack( ecore_event_handler_add( ECORE_WL_EVENT_DATA_SOURCE_SEND, EcoreEventDataSend, this ) ); mEcoreEventHandler.PushBack( ecore_event_handler_add( ECORE_WL_EVENT_SELECTION_DATA_READY, EcoreEventDataReceive, this ) ); -#if defined (DALI_PROFILE_MOBILE) - // Register indicator event - mEcoreEventHandler.PushBack( ecore_event_handler_add( ECORE_WL_EVENT_INDICATOR_FLICK, EcoreEventIndicator, this ) ); -#endif - // Register Vconf notify - font name and size vconf_notify_key_changed( DALI_VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME, VconfNotifyFontNameChanged, this ); vconf_notify_key_changed( VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, VconfNotifyFontSizeChanged, this ); @@ -1107,11 +1084,6 @@ void WindowBaseEcoreWl::OnDataReceive( void* data, int type, void* event ) mSelectionDataReceivedSignal.Emit( event ); } -void WindowBaseEcoreWl::OnIndicatorFlicked( void* data, int type, void* event ) -{ - mIndicatorFlickedSignal.Emit(); -} - void WindowBaseEcoreWl::OnFontNameChanged() { mStyleChangedSignal.Emit( StyleChange::DEFAULT_FONT_CHANGE ); @@ -1347,9 +1319,10 @@ bool WindowBaseEcoreWl::IsEglWindowRotationSupported() wl_egl_window_capability capability = static_cast< wl_egl_window_capability >( wl_egl_window_get_capabilities( mEglWindow ) ); if( capability == WL_EGL_WINDOW_CAPABILITY_ROTATION_SUPPORTED ) { + mSupportedPreProtation = true; return true; } - + mSupportedPreProtation = false; return false; } @@ -1369,69 +1342,6 @@ void WindowBaseEcoreWl::MoveResize( PositionSize positionSize ) ecore_wl_window_update_size( mEcoreWindow, positionSize.width, positionSize.height ); } -void WindowBaseEcoreWl::ShowIndicator( Dali::Window::IndicatorVisibleMode visibleMode, Dali::Window::IndicatorBgOpacity opacityMode ) -{ - DALI_LOG_TRACE_METHOD_FMT( gWindowBaseLogFilter, "visible : %d\n", visibleMode ); - - if( visibleMode == Dali::Window::VISIBLE ) - { - // when the indicator is visible, set proper mode for indicator server according to bg mode - if( opacityMode == Dali::Window::OPAQUE ) - { - ecore_wl_window_indicator_opacity_set( mEcoreWindow, ECORE_WL_INDICATOR_OPAQUE ); - } - else if( opacityMode == Dali::Window::TRANSLUCENT ) - { - ecore_wl_window_indicator_opacity_set( mEcoreWindow, ECORE_WL_INDICATOR_TRANSLUCENT ); - } - else if( opacityMode == Dali::Window::TRANSPARENT ) - { - ecore_wl_window_indicator_opacity_set( mEcoreWindow, ECORE_WL_INDICATOR_OPAQUE ); - } - } - else - { - // when the indicator is not visible, set TRANSPARENT mode for indicator server - ecore_wl_window_indicator_opacity_set( mEcoreWindow, ECORE_WL_INDICATOR_TRANSPARENT); // it means hidden indicator - } -} - -void WindowBaseEcoreWl::SetIndicatorProperties( bool isShow, Dali::Window::WindowOrientation lastOrientation ) -{ - if( isShow ) - { - ecore_wl_window_indicator_state_set( mEcoreWindow, ECORE_WL_INDICATOR_STATE_ON ); - } - else - { - ecore_wl_window_indicator_state_set( mEcoreWindow, ECORE_WL_INDICATOR_STATE_OFF ); - } -} - -void WindowBaseEcoreWl::IndicatorTypeChanged( IndicatorInterface::Type type ) -{ -#if defined(DALI_PROFILE_MOBILE) - switch( type ) - { - case IndicatorInterface::INDICATOR_TYPE_1: - { - ecore_wl_indicator_visible_type_set( mEcoreWindow, ECORE_WL_INDICATOR_VISIBLE_TYPE_SHOWN ); - break; - } - case IndicatorInterface::INDICATOR_TYPE_2: - { - ecore_wl_indicator_visible_type_set( mEcoreWindow, ECORE_WL_INDICATOR_VISIBLE_TYPE_HIDDEN ); - break; - } - case IndicatorInterface::INDICATOR_TYPE_UNKNOWN: - default: - { - break; - } - } -#endif //MOBILE -} - void WindowBaseEcoreWl::SetClass( const std::string& name, const std::string& className ) { ecore_wl_window_title_set( mEcoreWindow, name.c_str() ); @@ -2153,6 +2063,16 @@ void WindowBaseEcoreWl::GetDpi( unsigned int& dpiHorizontal, unsigned int& dpiVe dpiVertical = int( yres + 0.5f ); } +int WindowBaseEcoreWl::GetOrientation() const +{ + int orientation = (mScreenRotationAngle + mWindowRotationAngle) % 360; + if( mSupportedPreProtation ) + { + orientation = 0; + } + return orientation; +} + int WindowBaseEcoreWl::GetScreenRotationAngle() { int transform = 0; @@ -2166,14 +2086,21 @@ int WindowBaseEcoreWl::GetScreenRotationAngle() transform = ecore_wl_output_transform_get( ecore_wl_window_output_find( mEcoreWindow ) ); } - return transform * 90; + mScreenRotationAngle = transform * 90; + return mScreenRotationAngle; } void WindowBaseEcoreWl::SetWindowRotationAngle( int degree ) { + mWindowRotationAngle = degree; ecore_wl_window_rotation_set( mEcoreWindow, degree ); } +int WindowBaseEcoreWl::GetWindowRotationAngle() +{ + return mWindowRotationAngle; +} + void WindowBaseEcoreWl::WindowRotationCompleted( int degree, int width, int height ) { ecore_wl_window_rotation_change_done_send( mEcoreWindow ); @@ -2226,6 +2153,37 @@ void WindowBaseEcoreWl::CreateWindow( PositionSize positionSize ) } } +void WindowBaseEcoreWl::SetParent( Any parent ) +{ + Ecore_Wl_Window* mEcoreParent; + if( parent.Empty() == false ) + { + // check we have a valid type + DALI_ASSERT_ALWAYS( ( parent.GetType() == typeid (Ecore_Wl_Window *) ) && "Parent's surface type is invalid" ); + mEcoreParent = AnyCast< Ecore_Wl_Window* >( parent ); + } + else + { + mEcoreParent = NULL; + } + ecore_wl_window_parent_set( mEcoreWindow, mEcoreParent ); +} + +bool WindowBaseEcoreWl::IsMatchedWindow( Any window ) +{ + bool ret = false; + if ( window.Empty() == false ) + { + // check we have a valid type + DALI_ASSERT_ALWAYS( ( window.GetType() == typeid (Ecore_Wl_Window *) ) && "Window's surface type is invalid" ); + if ( AnyCast< Ecore_Wl_Window* >( window ) == mEcoreWindow ) + { + ret = true; + } + } + return ret; +} + } // namespace Adaptor } // namespace Internal