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=4258b7f57cb626fa2f49e490e6da31b8208991ae;hb=f110d85fb0606f3cfac47ad8d760168078d83148;hp=6af5474f1a786fb837e9d1e11e4d02b934bcb954;hpb=116fbd0c8799b78ecfe44724bd0ee24b3d8d9340;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 6af5474..4258b7f 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; @@ -270,6 +268,7 @@ static Eina_Bool EcoreEventRotate( void* data, int type, void* event ) WindowBaseEcoreWl* windowBase = static_cast< WindowBaseEcoreWl* >( data ); if( windowBase ) { + DALI_LOG_RELEASE_INFO( "WindowBaseEcoreWl::EcoreEventRotate\n" ); windowBase->OnRotation( data, type, event ); } return ECORE_CALLBACK_PASS_ON; @@ -419,25 +418,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 +585,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 +688,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 ); @@ -835,7 +813,7 @@ void WindowBaseEcoreWl::OnRotation( void* data, int type, void* event ) if( ev->win == static_cast< unsigned int >( ecore_wl_window_id_get( mEcoreWindow ) ) ) { - DALI_LOG_INFO( gWindowBaseLogFilter, Debug::Concise, "WindowBaseEcoreWl::OnRotation\n" ); + DALI_LOG_RELEASE_INFO( "WindowBaseEcoreWl::OnRotation, angle: %d, width: %d, height: %d\n", ev->angle, ev->w, ev->h ); RotationEvent rotationEvent; rotationEvent.angle = ev->angle; @@ -998,6 +976,7 @@ void WindowBaseEcoreWl::OnKeyDown( void* data, int type, void* event ) DALI_LOG_INFO( gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl::OnKeyDown\n" ); std::string keyName( keyEvent->keyname ); + std::string logicalKey( "" ); std::string keyString( "" ); std::string compose( "" ); @@ -1007,6 +986,12 @@ void WindowBaseEcoreWl::OnKeyDown( void* data, int type, void* event ) compose = keyEvent->compose; } + // Ensure key symbol is not NULL as keys like SHIFT have a null string. + if( keyEvent->key ) + { + logicalKey = keyEvent->key; + } + int keyCode = KeyLookup::GetDaliKeyCode( keyEvent->keyname ); keyCode = ( keyCode == -1 ) ? 0 : keyCode; int modifier( keyEvent->modifiers ); @@ -1030,7 +1015,7 @@ void WindowBaseEcoreWl::OnKeyDown( void* data, int type, void* event ) GetDeviceClass( ecore_device_class_get( keyEvent->dev ), deviceClass ); GetDeviceSubclass( ecore_device_subclass_get( keyEvent->dev ), deviceSubclass ); - Integration::KeyEvent keyEvent( keyName, keyString, keyCode, modifier, time, Integration::KeyEvent::Down, compose, deviceName, deviceClass, deviceSubclass ); + Integration::KeyEvent keyEvent( keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::Down, compose, deviceName, deviceClass, deviceSubclass ); mKeyEventSignal.Emit( keyEvent ); } @@ -1045,6 +1030,7 @@ void WindowBaseEcoreWl::OnKeyUp( void* data, int type, void* event ) DALI_LOG_INFO( gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl::OnKeyUp\n" ); std::string keyName( keyEvent->keyname ); + std::string logicalKey( "" ); std::string keyString( "" ); std::string compose( "" ); @@ -1054,6 +1040,12 @@ void WindowBaseEcoreWl::OnKeyUp( void* data, int type, void* event ) compose = keyEvent->compose; } + // Ensure key symbol is not NULL as keys like SHIFT have a null string. + if( keyEvent->key ) + { + logicalKey = keyEvent->key; + } + int keyCode = KeyLookup::GetDaliKeyCode( keyEvent->keyname ); keyCode = ( keyCode == -1 ) ? 0 : keyCode; int modifier( keyEvent->modifiers ); @@ -1077,7 +1069,7 @@ void WindowBaseEcoreWl::OnKeyUp( void* data, int type, void* event ) GetDeviceClass( ecore_device_class_get( keyEvent->dev ), deviceClass ); GetDeviceSubclass( ecore_device_subclass_get( keyEvent->dev ), deviceSubclass ); - Integration::KeyEvent keyEvent( keyName, keyString, keyCode, modifier, time, Integration::KeyEvent::Up, compose, deviceName, deviceClass, deviceSubclass ); + Integration::KeyEvent keyEvent( keyName, logicalKey, keyString, keyCode, modifier, time, Integration::KeyEvent::Up, compose, deviceName, deviceClass, deviceSubclass ); mKeyEventSignal.Emit( keyEvent ); } @@ -1093,11 +1085,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 ); @@ -1333,9 +1320,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; } @@ -1355,69 +1343,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() ); @@ -1440,19 +1365,21 @@ void WindowBaseEcoreWl::Activate() ecore_wl_window_activate( mEcoreWindow ); } -void WindowBaseEcoreWl::SetAvailableOrientations( const std::vector< Dali::Window::WindowOrientation >& orientations ) +void WindowBaseEcoreWl::SetAvailableAnlges( const std::vector< int >& angles ) { int rotations[4] = { 0 }; - for( std::size_t i = 0; i < orientations.size(); ++i ) + DALI_LOG_RELEASE_INFO( "WindowBaseEcoreWl::SetAvailableAnlges, angle's count: %d\n", angles.size() ); + for( std::size_t i = 0; i < angles.size(); ++i ) { - rotations[i] = static_cast< int >( orientations[i] ); + rotations[i] = static_cast< int >( angles[i] ); + DALI_LOG_RELEASE_INFO( "%d ", rotations[i] ); } - ecore_wl_window_rotation_available_rotations_set( mEcoreWindow, rotations, orientations.size() ); + ecore_wl_window_rotation_available_rotations_set( mEcoreWindow, rotations, angles.size() ); } -void WindowBaseEcoreWl::SetPreferredOrientation( Dali::Window::WindowOrientation orientation ) +void WindowBaseEcoreWl::SetPreferredAngle( int angle ) { - ecore_wl_window_rotation_preferred_rotation_set( mEcoreWindow, orientation ); + ecore_wl_window_rotation_preferred_rotation_set( mEcoreWindow, angle ); } void WindowBaseEcoreWl::SetAcceptFocus( bool accept ) @@ -2139,8 +2066,14 @@ void WindowBaseEcoreWl::GetDpi( unsigned int& dpiHorizontal, unsigned int& dpiVe dpiVertical = int( yres + 0.5f ); } -void WindowBaseEcoreWl::SetViewMode( ViewMode viewMode ) +int WindowBaseEcoreWl::GetOrientation() const { + int orientation = (mScreenRotationAngle + mWindowRotationAngle) % 360; + if( mSupportedPreProtation ) + { + orientation = 0; + } + return orientation; } int WindowBaseEcoreWl::GetScreenRotationAngle() @@ -2156,14 +2089,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 ); @@ -2216,6 +2156,17 @@ void WindowBaseEcoreWl::CreateWindow( PositionSize positionSize ) } } +void WindowBaseEcoreWl::SetParent( WindowBase* parentWinBase ) +{ + Ecore_Wl_Window* ecoreParent = NULL; + if( parentWinBase ) + { + WindowBaseEcoreWl* winBaseEcore = static_cast( parentWinBase ); + ecoreParent = winBaseEcore->mEcoreWindow; + } + ecore_wl_window_parent_set( mEcoreWindow, ecoreParent ); +} + } // namespace Adaptor } // namespace Internal