public void DisposesTheLogger() { var disposableLogger = new DisposableLogger(); Log.Logger = disposableLogger; Log.CloseAndFlush(); Assert.True(disposableLogger.Disposed); }
public void DisposesTheLogger() { var disposableLogger = new DisposableLogger(); using (SwappedLogger(disposableLogger)) { Log.CloseAndFlush(); Assert.True(disposableLogger.Disposed); } }
public void DisposesTheLogger() { var disposableLogger = new DisposableLogger(); using (SwappedLogger(disposableLogger)) { Log.CloseAndFlush(); Assert.True(disposableLogger.Disposed); } }
/// <summary> /// Initializes a new instance of the <see cref="Bootstrapper" /> class. /// </summary> /// <param name="application">The application.</param> /// <param name="logger">The logger.</param> public Bootstrapper(IApplication application, ILogger logger) { this.application = application; this.logger = logger.ForContext <Bootstrapper>(); this.disposableLogger = new DisposableLogger(this.logger); }
protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); var bitmapLoadLogger = new DisposableLogger(UILog.BitmapLoadBegin, UILog.BitmapLoadEnd); #region Stuff from ViewModel var vm = DataContext as DetailsPageViewModel; vm.MediaDataKey = e.Parameter?.ToString(); StorageFile mediaFile; // Log deserialization of media file. using (new DisposableLogger(DatabaseLog.DeserializationBegin, (sw) => DatabaseLog.DeserializationEnd(sw, 1))) { var SerializationService = Template10.Services.SerializationService.SerializationService.Json; mediaFile = App.Files[SerializationService.Deserialize(vm.MediaDataKey)?.ToString()]; } var mediaData = App.Gallery.GetMediaDataFromPath(mediaFile.Path, App.Gallery.MediaDatas); vm.MediaData = mediaData; #endregion Frame.Background = new SolidColorBrush(Windows.UI.Color.FromArgb(255, 0, 0, 0)); var imageAnimation = ConnectedAnimationService.GetForCurrentView().GetAnimation("detailsImage1"); var gifAnimation = ConnectedAnimationService.GetForCurrentView().GetAnimation("detailsGif1"); var videoAnimation = ConnectedAnimationService.GetForCurrentView().GetAnimation("detailsVideo1"); /* var compositor = ElementCompositionPreview.GetElementVisual(BackgroundPanel).Compositor; * var fadeAnimation = compositor.CreateScalarKeyFrameAnimation(); * fadeAnimation.InsertKeyFrame(0, 0f); * fadeAnimation.InsertKeyFrame(1, 1f); * fadeAnimation.Duration = TimeSpan.FromMilliseconds(500); * fadeAnimation.Target = "Opacity"; * * ElementCompositionPreview.SetImplicitShowAnimation(BackgroundPanel, fadeAnimation); * await Task.Delay(100);*/ // Set ViewBox, GenericMediaDataElement, VideoElement and ImageElement size to viewbox size or native size. MediaScrollViewer.UpdateLayout(); MediaViewBox.Width = Math.Min(MediaScrollViewer.ViewportWidth, mediaData.Meta.Width); MediaViewBox.Height = Math.Min(MediaScrollViewer.ViewportHeight, mediaData.Meta.Height); GenericMediaDataElement.Width = Math.Min(MediaScrollViewer.ViewportWidth, mediaData.Meta.Width); GenericMediaDataElement.Height = Math.Min(MediaScrollViewer.ViewportHeight, mediaData.Meta.Height); GenericMediaDataElement.ImageElement.Width = Math.Min(MediaScrollViewer.ViewportWidth, mediaData.Meta.Width); GenericMediaDataElement.ImageElement.Height = Math.Min(MediaScrollViewer.ViewportHeight, mediaData.Meta.Height); GenericMediaDataElement.VideoElement.Width = Math.Min(MediaScrollViewer.ViewportWidth, mediaData.Meta.Width); GenericMediaDataElement.VideoElement.Height = Math.Min(MediaScrollViewer.ViewportHeight, mediaData.Meta.Height); if (imageAnimation != null) { _image = true; imageAnimation.Completed += (sender, arg) => _animFinished = true; // Start connected animation. imageAnimation.TryStart(GenericMediaDataElement.ImageElement); // Set up image loaded action. GenericMediaDataElement.ImageElement.ImageLoadedAction = () => { ZoomToFit(); App.Current.NavigationService.Frame.SizeChanged += MediaScrollViewer_SizeChanged; MediaScrollViewer.RegisterPropertyChangedCallback(ScrollViewer.ZoomFactorProperty, ScrollViewerZoomFactorChanged); // Log bitmap load. bitmapLoadLogger.Dispose(); imageAnimation.Completed += (anim, obj) => vm.SearchForHigherResolutionOnlineAsync(); }; } if (gifAnimation != null) { _gif = true; gifAnimation.Completed += (sender, arg) => _animFinished = true; // Start connected animation. gifAnimation.TryStart(GenericMediaDataElement.ImageElement); // Set up image loaded action. GenericMediaDataElement.ImageElement.ImageLoadedAction = () => { ZoomToFit(); App.Current.NavigationService.Frame.SizeChanged += MediaScrollViewer_SizeChanged; MediaScrollViewer.RegisterPropertyChangedCallback(ScrollViewer.ZoomFactorProperty, ScrollViewerZoomFactorChanged); // Log bitmap load. bitmapLoadLogger.Dispose(); gifAnimation.Completed += (anim, obj) => vm.SearchForHigherResolutionOnlineAsync(); }; } if (videoAnimation != null) { _video = true; videoAnimation.Completed += (sender, arg) => _animFinished = true; // Start connected animation on UI thread. await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () => videoAnimation.TryStart(GenericMediaDataElement.VideoElement)); // Set up video loaded action. GenericMediaDataElement.VideoElement.VideoLoadedAction += () => { ZoomToFit(); App.Current.NavigationService.Frame.SizeChanged += MediaScrollViewer_SizeChanged; MediaScrollViewer.RegisterPropertyChangedCallback(ScrollViewer.ZoomFactorProperty, ScrollViewerZoomFactorChanged); // Log bitmap load. bitmapLoadLogger.Dispose(); }; GenericMediaDataElement.VideoElement.Detailed = true; } //TODO: Create File Memory Cache system by copying https://github.com/Microsoft/WindowsCommunityToolkit/blob/master/Microsoft.Toolkit.Uwp.UI/Cache/CacheBase.cs //TODO: General tips about file performance and property fetching: https://docs.microsoft.com/en-us/windows/uwp/files/fast-file-properties //TODO: Make transition to detailsPage smoother, step 1 try making it into a Modal, step 2 try this https://www.eternalcoding.com/?p=2723 // Pick up on property changes inside of GenericMediaDataElement. /*GenericMediaDataElement.PropertyChanged += (sender, args) => * { * if (args.PropertyName == nameof(GenericMediaDataElement.ImageMediaData.Meta)) * { * // Update width and height of local media datas based on new values of ImageMediaData.Meta. * mediaData.Meta.Height = GenericMediaDataElement.ImageMediaData.Meta.Height; * mediaData.Meta.Width = GenericMediaDataElement.ImageMediaData.Meta.Width; * vm.MediaData.Meta.Height = GenericMediaDataElement.ImageMediaData.Meta.Height; * vm.MediaData.Meta.Width = GenericMediaDataElement.ImageMediaData.Meta.Width; * vm.RaisePropertyChanged(nameof(vm.Dimensions)); * } * };*/ // If there is dominant color data. if (mediaData?.Meta?.AnnotationData?.ImagePropertiesAnnotation?.DominantColors?.Colors != null) { var dominantColor = mediaData.Meta.AnnotationData.ImagePropertiesAnnotation.DominantColors.Colors.OrderBy(ci => ci.PixelFraction).LastOrDefault(); if (dominantColor != null && dominantColor.Color != null) { // Turn Google Color into Windows Color. var color = dominantColor.Color.GetColor(); var brightness = color.GetBrightness(); // If color is not bright. if (brightness < 0.4f) { // Set page background to dominant color. Background = new SolidColorBrush(dominantColor.Color.GetColor()); } } } // Allow back-navigation if all animations are null. if (imageAnimation == null && gifAnimation == null && videoAnimation == null) { _animFinished = true; } }