diff --git a/PicView/ChangeImage/LoadPic.cs b/PicView/ChangeImage/LoadPic.cs index 9944a95d6..5aa0dd9b7 100644 --- a/PicView/ChangeImage/LoadPic.cs +++ b/PicView/ChangeImage/LoadPic.cs @@ -4,8 +4,10 @@ using PicView.UILogic; using System.Diagnostics; using System.IO; +using System.Windows; using System.Windows.Input; using System.Windows.Threading; +using PicView.UILogic.Loading; using static PicView.ChangeImage.ErrorHandling; using static PicView.ChangeImage.Navigation; using static PicView.ChangeTitlebar.SetTitle; @@ -324,15 +326,8 @@ internal static async Task LoadPicAtIndexAsync(int index, FileInfo? fileInfo = n /// internal static void LoadingPreview(FileInfo fileInfo, bool showLoading = true) { - var isLogo = false; var thumb = Thumbnails.GetThumb(FolderIndex, fileInfo); - if (thumb is null) - { - thumb = ImageFunctions.ShowLogo() ?? ImageFunctions.ImageErrorMessage(); - isLogo = true; - } - var bitmapSourceHolder = new Thumbnails.LogoOrThumbHolder(thumb, isLogo); ConfigureWindows.GetMainWindow.Dispatcher.Invoke(DispatcherPriority.Send, () => { if (showLoading) @@ -342,12 +337,9 @@ internal static void LoadingPreview(FileInfo fileInfo, bool showLoading = true) } ConfigureWindows.GetMainWindow.MainImage.Cursor = Cursors.Wait; + GetSpinWaiter.Visibility = Visibility.Visible; - ConfigureWindows.GetMainWindow.MainImage.Source = bitmapSourceHolder.Thumb; - // Set to logo size or don't allow image size to stretch the whole screen, fixes when opening new image from unloaded status - if (!bitmapSourceHolder.isLogo && !(XWidth < 1)) return; - ConfigureWindows.GetMainWindow.MainImage.Width = Thumbnails.LogoOrThumbHolder.Size; - ConfigureWindows.GetMainWindow.MainImage.Height = Thumbnails.LogoOrThumbHolder.Size; + ConfigureWindows.GetMainWindow.MainImage.Source = thumb; }); } diff --git a/PicView/ChangeImage/QuickLoad.cs b/PicView/ChangeImage/QuickLoad.cs index 98d60df22..22286bad9 100644 --- a/PicView/ChangeImage/QuickLoad.cs +++ b/PicView/ChangeImage/QuickLoad.cs @@ -4,6 +4,7 @@ using PicView.SystemIntegration; using PicView.UILogic; using System.IO; +using System.Windows; using System.Windows.Input; using System.Windows.Media; using System.Windows.Threading; @@ -66,6 +67,14 @@ await ConfigureWindows.GetMainWindow.Dispatcher.InvokeAsync(() => ConfigureWindows.GetMainWindow.MainImage.Source = errorImage); } + await ConfigureWindows.GetMainWindow.Dispatcher.InvokeAsync(() => + { + if (UC.GetSpinWaiter is { IsVisible: true }) + { + UC.GetSpinWaiter.Visibility = Visibility.Collapsed; + } + }); + Pics = FileList(fileInfo); FolderIndex = Pics.IndexOf(fileInfo.FullName); diff --git a/PicView/ChangeImage/UpdateImage.cs b/PicView/ChangeImage/UpdateImage.cs index 5cd093813..63526a1dd 100644 --- a/PicView/ChangeImage/UpdateImage.cs +++ b/PicView/ChangeImage/UpdateImage.cs @@ -44,6 +44,11 @@ await ConfigureWindows.GetMainWindow.Dispatcher.InvokeAsync(() => { ConfigureWindows.GetMainWindow.MainImage.Source = preLoadValue.BitmapSource; } + + if (GetSpinWaiter is {IsVisible: true}) + { + GetSpinWaiter.Visibility = Visibility.Collapsed; + } }, DispatcherPriority.Send); var titleString = TitleString(preLoadValue.BitmapSource.PixelWidth, preLoadValue.BitmapSource.PixelHeight, diff --git a/PicView/UILogic/Loading/LoadControls.cs b/PicView/UILogic/Loading/LoadControls.cs index 12e66c84c..217052726 100644 --- a/PicView/UILogic/Loading/LoadControls.cs +++ b/PicView/UILogic/Loading/LoadControls.cs @@ -305,4 +305,10 @@ internal static void LoadQuickResize() Trace.WriteLine(nameof(GetQuickResize) + " loaded "); #endif } + + internal static void LoadSpinWaiter() + { + GetSpinWaiter = new SpinWaiter(); + ConfigureWindows.GetMainWindow.ParentContainer.Children.Add(GetSpinWaiter); + } } \ No newline at end of file diff --git a/PicView/UILogic/Loading/StartLoading.cs b/PicView/UILogic/Loading/StartLoading.cs index b4f5b8c1a..e7fd055ed 100644 --- a/PicView/UILogic/Loading/StartLoading.cs +++ b/PicView/UILogic/Loading/StartLoading.cs @@ -137,8 +137,8 @@ internal static void AddUiElementsAndUpdateValues() LoadImageSettingsMenu(); LoadQuickSettingsMenu(); LoadToolsAndEffectsMenu(); - LoadAutoScrollSign(); LoadTooltipStyle(); + LoadSpinWaiter(); // Initialize things! InitializeZoom(); diff --git a/PicView/UILogic/TransformImage/Scroll.cs b/PicView/UILogic/TransformImage/Scroll.cs index e5360cf7c..1b51b916e 100644 --- a/PicView/UILogic/TransformImage/Scroll.cs +++ b/PicView/UILogic/TransformImage/Scroll.cs @@ -5,6 +5,7 @@ using System.Windows.Controls; using System.Windows.Input; using System.Windows.Threading; +using PicView.UILogic.Loading; using static PicView.UILogic.Sizing.ScaleImage; using static PicView.UILogic.Tooltip; using static PicView.UILogic.UC; @@ -67,6 +68,10 @@ internal static void ShowAutoScrollSign() { return; } + if (GetAutoScrollSign is null) + { + LoadControls.LoadAutoScrollSign(); + } Canvas.SetTop(GetAutoScrollSign, AutoScrollOrigin.Value.Y); Canvas.SetLeft(GetAutoScrollSign, AutoScrollOrigin.Value.X); GetAutoScrollSign.Visibility = Visibility.Visible; diff --git a/PicView/UILogic/UC.cs b/PicView/UILogic/UC.cs index a3029b650..9f4ef725b 100644 --- a/PicView/UILogic/UC.cs +++ b/PicView/UILogic/UC.cs @@ -32,6 +32,7 @@ internal static class UC internal static ColorPicker? GetColorPicker { get; set; } internal static GripButton? GetGripButton { get; set; } internal static QuickResize? GetQuickResize { get; set; } + internal static SpinWaiter? GetSpinWaiter { get; set; } private static bool _imageSettingsMenuOpen; private static bool _fileMenuOpen;