X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=internal%2Fwidget_view%2Fwidget_view_impl.cpp;h=166da2d505448d506e2aaf27467264b6e63de82f;hb=83a51b89cb51a0e1c56972647d7280aae05d8400;hp=9be9ba392f85bf9b03de232f6890776dd84eedf3;hpb=c1abb9a303c0ee114367accad6cace6f6101c632;p=platform%2Fcore%2Fuifw%2Fwidget-viewer-dali.git diff --git a/internal/widget_view/widget_view_impl.cpp b/internal/widget_view/widget_view_impl.cpp index 9be9ba3..166da2d 100644 --- a/internal/widget_view/widget_view_impl.cpp +++ b/internal/widget_view/widget_view_impl.cpp @@ -36,7 +36,9 @@ #include #include #include +#include #include +#include namespace Dali { @@ -50,6 +52,10 @@ namespace Internal namespace { +const int DEFAULT_FONT_PIXEL_SIZE = 30; // Referred platform widget viewer evas + +#define GET_LOCALE_TEXT(string) dgettext(PKGNAME, string) + #if defined(DEBUG_ENABLED) Integration::Log::Filter* gWidgetViewLogging = Integration::Log::Filter::New( Debug::Verbose, false, "LOG_WIDGET_VIEW" ); #endif @@ -71,6 +77,16 @@ DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "loadingText", MAP, LO DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "widgetStateFaulted", BOOLEAN, WIDGET_STATE_FAULTED ) DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "permanentDelete", BOOLEAN, PERMANENT_DELETE ) +// Internal property +// ToDo it should be changed public property. +const int TERMINATE_WIDGET = Dali::WidgetView::WidgetView::Property::PERMANENT_DELETE+1; +const int RETRY_TEXT = TERMINATE_WIDGET+1; +const int WIDGET_IMAGE = RETRY_TEXT+1; + +Dali::PropertyRegistration internalProperty1( typeRegistration, "terminateWidget", TERMINATE_WIDGET, Property::BOOLEAN, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); +Dali::PropertyRegistration internalProperty2( typeRegistration, "retryText", RETRY_TEXT, Property::MAP, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); +Dali::PropertyRegistration internalProperty3( typeRegistration, "widgetImage", WIDGET_IMAGE, Property::MAP, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); + // Signals DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetAdded", SIGNAL_WIDGET_ADDED ) DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetDeleted", SIGNAL_WIDGET_DELETED ) @@ -78,6 +94,7 @@ DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetCreationAborted", DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetContentUpdated", SIGNAL_WIDGET_CONTENT_UPDATED ) DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetUpdatePeriodChanged", SIGNAL_WIDGET_UPDATE_PERIOD_CHANGED ) DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetFaulted", SIGNAL_WIDGET_FAULTED ) +DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetTerminated", SIGNAL_WIDGET_TERMINATED ) // Actions DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "pauseWidget", ACTION_WIDGETVIEW_PAUSE_WIDGET ); @@ -88,10 +105,13 @@ DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "activateFaultedWidget", DALI_TYPE_REGISTRATION_END() struct wl_buffer* preBuffer; +struct tizen_remote_surface* remoteSurface; +const char* const STATE_TEXT( "stateText" ); const char* const FONT_STYLE( "fontStyle" ); const char* const TEXT_POINT_SIZE( "textPointSize" ); const char* const TEXT_COLOR( "textColor" ); +const char* const TEXT_VISIBLE( "textVisible" ); //ToDo: it should be removed after retry text property is public one static void OnBufferUpdated( struct tizen_remote_surface *surface, uint32_t type, struct wl_buffer *buffer, int32_t img_file_fd, uint32_t img_file_size, uint32_t time, struct wl_array *keys, @@ -117,8 +137,12 @@ static void OnBufferUpdated( struct tizen_remote_surface *surface, uint32_t type if( preBuffer != NULL && tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION ) { tizen_remote_surface_release( surface, preBuffer ); + tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer ); + tbm_surface_internal_unref( preTbmSurface ); + wl_buffer_destroy( preBuffer ); } + remoteSurface = surface; preBuffer = buffer; close( img_file_fd ); @@ -132,9 +156,10 @@ static void OnSurfaceRemoved( const char *appid, const char *instance_id, const { Dali::WidgetView::Internal::WidgetView* widgetView = static_cast< Dali::WidgetView::Internal::WidgetView* >( data ); - if( widgetView ) + if( widgetView && !widgetView->IsWidgetFaulted() ) { widgetView->CloseRemoteSurface(); + widgetView->RemoveWidgetImage(); } } @@ -166,7 +191,11 @@ WidgetView::WidgetView() mPid( 0 ), mUpdatePeriod( 0.0 ), mPreviewVisible( true ), - mStateTextVisible( true ), + mLoadingTextVisible( true ), + mLoadingTextString(), + mRetryTextVisible( true ), + mRetryTextString(), + mRetryState( false ), mPermanentDelete( false ), mWatcherHandle( NULL ), mRemoteSurface( NULL ) @@ -184,7 +213,11 @@ WidgetView::WidgetView( const std::string& widgetId, const std::string& contentI mPid( 0 ), mUpdatePeriod( updatePeriod ), mPreviewVisible( true ), - mStateTextVisible( true ), + mLoadingTextVisible( true ), + mLoadingTextString(), + mRetryTextVisible( true ), + mRetryTextString(), + mRetryState( false ), mPermanentDelete( false ), mWatcherHandle( NULL ), mRemoteSurface( NULL ) @@ -193,15 +226,6 @@ WidgetView::WidgetView( const std::string& widgetId, const std::string& contentI WidgetView::~WidgetView() { - if( !mWidgetId.empty() && !mInstanceId.empty() ) - { - widget_instance_terminate( mInstanceId.c_str() ); - - if( mPermanentDelete ) - { - widget_instance_destroy( mInstanceId.c_str() ); - } - } } bool WidgetView::PauseWidget() @@ -302,12 +326,12 @@ bool WidgetView::CancelTouchEvent() return false; } -void WidgetView::ShowPreview( bool show ) +void WidgetView::SetPreviewVisible( bool visible ) { - if( mPreviewImage && show != mPreviewVisible ) + if( mPreviewImage && mPreviewVisible != visible ) { - mPreviewVisible = show; - mPreviewImage.SetVisible( show ); + mPreviewVisible = visible; + mPreviewImage.SetVisible( visible ); } } @@ -316,34 +340,53 @@ bool WidgetView::IsPreviewVisible() return mPreviewVisible; } -void WidgetView::ShowStateText( bool show ) +void WidgetView::SetLoadingTextVisible( bool visible ) +{ + if( mLoadingText && mLoadingTextVisible != visible ) + { + mLoadingTextVisible = visible; + + if( visible ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, + ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); + } + mLoadingText.SetVisible( visible ); + } +} + +void WidgetView::SetRetryTextVisible( bool visible ) { - if( mStateText && mStateTextVisible != show ) + if( mRetryText && mRetryTextVisible != visible ) { - mStateTextVisible = show; - mStateText.SetVisible( show ); + mRetryTextVisible = visible; + + if( visible ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, + ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); + } + mRetryText.SetVisible( visible ); } } -bool WidgetView::IsStateTextVisible() +bool WidgetView::IsLoadingTextVisible() { - return mStateTextVisible; + return mLoadingTextVisible; +} + +bool WidgetView::IsRetryTextVisible() +{ + return mRetryTextVisible; } void WidgetView::ActivateFaultedWidget() { if( mPid < 0 ) { - // Esable preview and text - if( mPreviewVisible ) - { - mPreviewImage.SetVisible( true ); - } - - if( mStateTextVisible ) - { - mStateText.SetVisible( true ); - } + // Enable preview and loading text + ShowRetryState( false ); + ShowLoadingState( true ); // launch widget again mPid = widget_instance_launch( mInstanceId.c_str(), (char *)mContentInfo.c_str(), mWidth, mHeight ); @@ -351,6 +394,9 @@ void WidgetView::ActivateFaultedWidget() { DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ActivateFaultedWidget: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); + ShowLoadingState( false ); + ShowRetryState( true ); + // Emit signal Dali::WidgetView::WidgetView handle( GetOwner() ); mWidgetCreationAbortedSignal.Emit( handle ); @@ -358,6 +404,12 @@ void WidgetView::ActivateFaultedWidget() return; } + screen_connector_toolkit_ops ops; + ops.updated_cb = OnBufferUpdated; + ops.removed_cb = OnSurfaceRemoved; + ops.added_cb = OnBufferAdded; + mWatcherHandle = screen_connector_toolkit_add(&ops, (char *)mInstanceId.c_str(), SCREEN_CONNECTOR_SCREEEN_TYPE_WIDGET, this); + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ActivateFaultedWidget: widget_instance_launch is called. [%s, mPid = %d]\n", mWidgetId.c_str(), mPid ); } } @@ -389,49 +441,65 @@ void WidgetView::CreateWidgetImageView() mWidgetImageView.SetAnchorPoint( AnchorPoint::CENTER ); mWidgetImageView.SetSize( mWidth, mHeight ); + if( !mWidgetImagePropertyMap.Empty() ) + { + mWidgetImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, mWidgetImagePropertyMap ); + } + Self().Add( mWidgetImageView ); //EFL app should be pre multiplied image. mWidgetImageView.SetProperty( Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true ); // Disable preview and text - if( mPreviewVisible ) - { - mPreviewImage.SetVisible( false ); - } - - if( mStateTextVisible ) - { - mStateText.SetVisible( false ); - } + ShowLoadingState( false ); // Emit signal Dali::WidgetView::WidgetView handle( GetOwner() ); mWidgetAddedSignal.Emit( handle ); - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::AddObjectView: ObjectView is added.\n" ); + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::CreateWidgetImageView: Widget image is added.\n" ); } -void WidgetView::RemoveObjectView() +void WidgetView::RemoveWidgetImage() { - // Enable preview and text - if( mPreviewVisible ) + if( mWidgetImageView ) { - mPreviewImage.SetVisible( true ); + mWidgetImageView.SetVisible( false ); + mWidgetImageView.Reset(); + + ShowRetryState( true ); + + Dali::WidgetView::WidgetView handle( GetOwner() ); + mWidgetDeletedSignal.Emit( handle ); } - if( mStateTextVisible ) + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::RemoveWidgetImage: Widget image is removed.\n" ); +} + +void WidgetView::TerminateWidget() +{ + if( !mWidgetId.empty() && !mInstanceId.empty() ) { - mStateText.SetVisible( true ); - } + widget_instance_terminate( mInstanceId.c_str() ); - // Emit signal - Dali::WidgetView::WidgetView handle( GetOwner() ); - mWidgetDeletedSignal.Emit( handle ); + if( mPermanentDelete ) + { + widget_instance_destroy( mInstanceId.c_str() ); + } + + Dali::WidgetView::WidgetView handle( GetOwner() ); + mWidgetTerminatedSignal.Emit( handle ); + mWidgetDeletedSignal.Emit( handle ); - mWidgetImageView.Reset(); + mWidgetId.clear(); + mInstanceId.clear(); + + CloseRemoteSurface(); + } + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::TerminateWidget: Widget is terminated/destroyed and deleted signal is emitted.\n" ); - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::RemoveObjectView: ObjectView is removed.\n" ); } void WidgetView::SendWidgetEvent( int event ) @@ -457,6 +525,8 @@ void WidgetView::SendWidgetEvent( int event ) case WIDGET_INSTANCE_EVENT_FAULT: { mWidgetFaultedSignal.Emit( handle ); + CloseRemoteSurface(); + RemoveWidgetImage(); break; } default: @@ -560,7 +630,7 @@ void WidgetView::SetProperty( BaseObject* object, Property::Index index, const P if( value.Get( previewEnabled ) ) { - impl.ShowPreview( previewEnabled ); + impl.SetPreviewVisible( previewEnabled ); } break; } @@ -571,7 +641,7 @@ void WidgetView::SetProperty( BaseObject* object, Property::Index index, const P if( value.Get( textEnabled ) ) { - impl.ShowStateText( textEnabled ); + impl.SetLoadingTextVisible( textEnabled ); } else if( value.Get( map ) ) { @@ -581,10 +651,38 @@ void WidgetView::SetProperty( BaseObject* object, Property::Index index, const P } case Dali::WidgetView::WidgetView::Property::PERMANENT_DELETE: { - bool del; - if( value.Get( del ) ) + bool permanent; + if( value.Get( permanent ) ) + { + impl.SetPermanentDelete( permanent ); + } + break; + } + case TERMINATE_WIDGET: + { + bool del = false; + if( value.Get( del ) && del ) + { + impl.TerminateWidget(); + } + break; + } + case RETRY_TEXT: + { + Property::Map map; + + if( value.Get( map ) ) + { + impl.SetRetryTextPropertyMap( map ); + } + break; + } + case WIDGET_IMAGE: + { + Property::Map map; + if( value.Get( map ) ) { - impl.SetPermanentDelete( del ); + impl.SetWidgetImagePropertyMap( map ); } break; } @@ -635,7 +733,7 @@ Property::Value WidgetView::GetProperty( BaseObject* object, Property::Index ind } case Dali::WidgetView::WidgetView::Property::LOADING_TEXT: { - value = impl.IsStateTextVisible(); + value = impl.IsLoadingTextVisible(); break; } case Dali::WidgetView::WidgetView::Property::WIDGET_STATE_FAULTED: @@ -684,6 +782,11 @@ Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetFaultedSig return mWidgetFaultedSignal; } +Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetTerminatedSignal() +{ + return mWidgetTerminatedSignal; +} + void WidgetView::OnInitialize() { char* instanceId = NULL; @@ -742,23 +845,40 @@ void WidgetView::OnInitialize() mStateTextActor.SetAnchorPoint( AnchorPoint::CENTER ); mStateTextActor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - // State text - // TODO: use po files - mStateText = Toolkit::TextLabel::New( "Loading..." ); - mStateText.SetParentOrigin( ParentOrigin::CENTER ); - mStateText.SetAnchorPoint( AnchorPoint::CENTER ); - mStateText.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); - mStateText.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); - mStateText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Dali::Color::WHITE ); - mStateText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, "Bold" ); + // Loading text + mLoadingText = Toolkit::TextLabel::New( ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); + mLoadingText.SetParentOrigin( ParentOrigin::CENTER ); + mLoadingText.SetAnchorPoint( AnchorPoint::CENTER ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Dali::Color::WHITE ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, "Bold" ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, TextPixelToPointSize( DEFAULT_FONT_PIXEL_SIZE ) ); mPreviewActor.Add( mStateTextActor ); - mStateTextActor.Add( mStateText ); + mStateTextActor.Add( mLoadingText ); + + // Retry text + mRetryText = Toolkit::TextLabel::New( ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); + mRetryText.SetParentOrigin( ParentOrigin::CENTER ); + mRetryText.SetAnchorPoint( AnchorPoint::CENTER ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Dali::Color::WHITE ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, "Bold" ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, TextPixelToPointSize( DEFAULT_FONT_PIXEL_SIZE ) ); + + mStateTextActor.Add( mRetryText ); + mRetryText.SetVisible( false ); // launch widget mPid = widget_instance_launch( instanceId, (char *)mContentInfo.c_str(), mWidth, mHeight ); if( mPid < 0) { + + ShowLoadingState( false ); + ShowRetryState( true ); + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); // Emit signal @@ -821,7 +941,7 @@ bool WidgetView::OnTouch( Dali::Actor actor, const Dali::TouchData& event ) { tizen_remote_surface_event_type type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_NONE; - if( event.GetPointCount() == 0 || mRemoteSurface == NULL ) + if( event.GetPointCount() == 0 ) { return false; } @@ -831,6 +951,13 @@ bool WidgetView::OnTouch( Dali::Actor actor, const Dali::TouchData& event ) case Dali::PointState::UP: { type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_UP; + + if( mRetryState ) + { + ActivateFaultedWidget(); + return false; + } + break; } case Dali::PointState::DOWN: @@ -849,6 +976,11 @@ bool WidgetView::OnTouch( Dali::Actor actor, const Dali::TouchData& event ) } } + if( mRemoteSurface == NULL ) + { + return false; + } + int button = 1; if( type == TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_MOVE ) @@ -937,20 +1069,73 @@ float WidgetView::GetWidthForHeight( float height ) void WidgetView::CloseRemoteSurface() { - screen_connector_toolkit_remove( mWatcherHandle ); - mRemoteSurface = NULL; + if( mWatcherHandle != NULL ) + { + if( remoteSurface != NULL && preBuffer != NULL && tizen_remote_surface_get_version( remoteSurface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION ) + { + tizen_remote_surface_release( remoteSurface, preBuffer ); + tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer ); + tbm_surface_internal_unref( preTbmSurface ); + wl_buffer_destroy( preBuffer ); + preBuffer = NULL; + } + + screen_connector_toolkit_remove( mWatcherHandle ); + mWatcherHandle = NULL; + mRemoteSurface = NULL; + mPid = -1; + } +} + +void WidgetView::ShowLoadingState( bool show ) +{ + if( mPreviewImage && mPreviewVisible ) + { + mPreviewImage.SetVisible( show ); + } + + if( mLoadingText && mLoadingTextVisible ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, + ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); + mLoadingText.SetVisible( show ); + } +} + +void WidgetView::ShowRetryState( bool show ) +{ + if( mPreviewImage && mPreviewVisible ) + { + mPreviewImage.SetVisible( false ); + } + + if( mRetryText && mRetryTextVisible ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, + ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); + mRetryText.SetVisible( show ); + mRetryState = show; + } } void WidgetView::SetLoadingTextPropertyMap( Property::Map map ) { - if( mStateText ) + if( mLoadingText ) { + Property::Value* loadingText = map.Find( STATE_TEXT ); + std::string text; + if( loadingText && loadingText->Get( text ) ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, text ); + mLoadingTextString = text; + } + Property::Value* fontStyle = map.Find( FONT_STYLE ); std::string style; if( fontStyle && fontStyle->Get( style ) ) { - mStateText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, style ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, style ); } Property::Value* textPointSize = map.Find( TEXT_POINT_SIZE ); @@ -958,7 +1143,7 @@ void WidgetView::SetLoadingTextPropertyMap( Property::Map map ) if( textPointSize && textPointSize->Get( size ) ) { - mStateText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, size ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, size ); } Property::Value* textColor = map.Find( TEXT_COLOR ); @@ -966,11 +1151,73 @@ void WidgetView::SetLoadingTextPropertyMap( Property::Map map ) if( textColor && textColor->Get( color ) ) { - mStateText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, color ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, color ); } } } +void WidgetView::SetRetryTextPropertyMap( Property::Map map ) +{ + if( mRetryText ) + { + Property::Value* retryText = map.Find( STATE_TEXT ); + std::string text; + if( retryText && retryText->Get( text ) ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, text ); + mRetryTextString = text; + } + + Property::Value* fontStyle = map.Find( FONT_STYLE ); + std::string style; + + if( fontStyle && fontStyle->Get( style ) ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, style ); + } + + Property::Value* textPointSize = map.Find( TEXT_POINT_SIZE ); + float size = 0.f; + + if( textPointSize && textPointSize->Get( size ) ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, size ); + } + + Property::Value* textColor = map.Find( TEXT_COLOR ); + Vector4 color; + + if( textColor && textColor->Get( color ) ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, color ); + } + + Property::Value* textVisible = map.Find( TEXT_VISIBLE ); + bool visible = true; + if( textVisible && textVisible->Get( visible ) ) + { + SetRetryTextVisible( visible ); + } + } +} + +void WidgetView::SetWidgetImagePropertyMap( Property::Map map ) +{ + mWidgetImagePropertyMap = map; + if( mWidgetImageView ) + { + mWidgetImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, map ); + } +} + +float WidgetView::TextPixelToPointSize( int pixelSize ) +{ + Dali::Vector2 dpi = Dali::Stage::GetCurrent().GetDpi(); + float meanDpi = (dpi.height + dpi.width) / 2.0f; + + return (pixelSize * 72.0f) / meanDpi; +} + } // namespace Internal } // namespace WidgetView