class GalleryScreenshotFullPreview extends inkGameController { private editable var m_buttonHintsManagerRef : inkWidgetRef; private editable var m_screenshotContainer : inkWidgetRef; private editable var m_screenshotMask : inkWidgetRef; private editable var m_screenshotPreview : inkImageRef; private editable var m_container : inkWidgetRef; private editable var m_windowWrapper : inkWidgetRef; private editable var m_favoriteIcon : inkWidgetRef; private var m_preloader : weak< inkCompoundWidget >; private var m_systemHandler : weak< inkISystemRequestsHandler >; private var m_data : GalleryScreenshotPreviewData; private var m_buttonHintsController : weak< ButtonHints >; private var m_deleteConfirmationToken : inkGameNotificationToken; protected event OnInitialize() { m_systemHandler = GetSystemRequestsHandler(); m_data = ( ( GalleryScreenshotPreviewData )( GetRootWidget().GetUserData( 'GalleryScreenshotPreviewData' ) ) ); m_buttonHintsController = ( ( ButtonHints )( SpawnFromExternal( inkWidgetRef.Get( m_buttonHintsManagerRef ), R"base\gameplay\gui\common\buttonhints.inkwidget", 'Root' ).GetController() ) ); m_buttonHintsController.AddButtonHint( 'back', GetLocalizedText( "Common-Access-Close" ) ); m_buttonHintsController.AddButtonHint( 'delete_screenshot', GetLocalizedText( "UI-Gallery-DeletePicture" ) ); RefreshFavoriteButtonHint(); RegisterToGlobalInputCallback( 'OnPostOnRelease', this, 'OnGlobalRelease' ); m_preloader = ( ( inkCompoundWidget )( SpawnFromExternal( inkWidgetRef.Get( m_container ), R"base\gameplay\gui\common\preloader\preloader.inkwidget", 'Root' ) ) ); m_preloader.SetAnchor( inkEAnchor.Fill ); m_preloader.SetAnchorPoint( Vector2( 0.5, 0.5 ) ); m_preloader.GetWidgetByPathName( 'border' ).SetVisible( false ); m_preloader.SetVisible( true ); inkWidgetRef.SetVisible( m_screenshotContainer, false ); LoadScreenshot(); m_data.galleryController.m_canInteract = false; } protected event OnUninitialize() { UnregisterFromGlobalInputCallback( 'OnPostOnRelease', this, 'OnGlobalRelease' ); } protected event OnGlobalRelease( evt : inkPointerEvent ) { var isFavorite : Bool; if( evt.IsAction( 'cancel' ) || evt.IsAction( 'click' ) ) { PlaySound( 'Button', 'OnPress' ); m_data.token.TriggerCallback( NULL ); m_data.galleryController.m_canInteract = true; } if( evt.IsAction( 'secondaryAction' ) ) { PlaySound( 'Button', 'OnPress' ); isFavorite = m_data.favoriteManager.IsFavorite( m_data.Hash ); m_data.favoriteManager.SetFavorite( m_data.Hash, !( isFavorite ) ); inkWidgetRef.SetVisible( m_favoriteIcon, !( isFavorite ) ); m_data.isFavorite = !( isFavorite ); m_data.screenshotItem.SetFavoriteDisplay( !( isFavorite ) ); RefreshFavoriteButtonHint(); evt.Handle(); } if( evt.IsAction( 'delete_screenshot' ) ) { PlaySound( 'Button', 'OnPress' ); m_data.token.TriggerCallback( NULL ); m_data.galleryController.DeleteScreenshot( m_data.screenshotIndex, m_data.canBeDeleted ); evt.Handle(); } } private function RefreshFavoriteButtonHint() { m_buttonHintsController.RemoveButtonHint( 'secondaryAction' ); m_buttonHintsController.AddButtonHint( 'secondaryAction', ( ( m_data.isFavorite ) ? ( GetLocalizedText( "UI-Gallery-RemoveFromFavorites" ) ) : ( GetLocalizedText( "UI-Gallery-AddToFavorites" ) ) ) ); } private function LoadScreenshot() { m_systemHandler.RequestGameScreenshot( m_data.screenshotIndex, GetPreviewImageWidget(), this, 'OnScreenshotLoaded' ); } public function OnScreenshotLoaded( screenshotSize : Vector2, errorCode : Int32 ) { var previewSize : Vector2; previewSize = GalleryUtils.FillScreenshotInPreview( screenshotSize, inkImageRef.GetSize( m_screenshotPreview ) ); inkImageRef.SetSize( m_screenshotPreview, previewSize ); inkWidgetRef.SetSize( m_screenshotContainer, previewSize ); inkImageRef.SetTintColor( m_screenshotPreview, HDRColor( 0.73000002, 0.73000002, 0.73000002, 1.0 ) ); m_preloader.SetVisible( false ); inkWidgetRef.SetVisible( m_favoriteIcon, m_data.isFavorite ); PlayLibraryAnimation( 'intro' ); } public function GetPreviewImageWidget() : weak< inkImage > { return ( ( inkImage )( inkImageRef.Get( m_screenshotPreview ) ) ); } }