Browse Source

Show both image titles in side by side mode

Ruben 1 year ago
parent
commit
89ccce244a

+ 2 - 0
src/PicView.Avalonia/Navigation/ImageIterator.cs

@@ -22,6 +22,8 @@ public sealed class ImageIterator : IDisposable
     public List<string> ImagePaths { get; private set; }
 
     public int CurrentIndex { get; private set; }
+    
+    public int NextIndex => GetIteration(CurrentIndex, NavigateTo.Next);
 
     public FileInfo InitialFileInfo { get; private set; } = null!;
     public bool IsReversed { get; private set; }

+ 9 - 2
src/PicView.Avalonia/Navigation/QuickLoad.cs

@@ -63,8 +63,15 @@ public static class QuickLoad
         ExifHandling.UpdateExifValues(imageModel, vm);
         vm.ImageIterator ??= new ImageIterator(fileInfo, vm);
         vm.GetIndex = vm.ImageIterator.CurrentIndex + 1;
-            
-        SetTitleHelper.SetTitle(vm, imageModel);
+
+        if (SettingsHelper.Settings.ImageScaling.ShowImageSideBySide)
+        {
+            SetTitleHelper.SetSideBySideTitle(vm, imageModel, secondaryPreloadValue?.ImageModel);
+        }
+        else
+        {
+            SetTitleHelper.SetTitle(vm, imageModel);
+        }
         
         if (SettingsHelper.Settings.UIProperties.IsTaskbarProgressEnabled)
         {

+ 9 - 1
src/PicView.Avalonia/Navigation/UpdateImage.cs

@@ -74,8 +74,16 @@ public static class UpdateImage
         }, DispatcherPriority.Send);
 
         vm.IsLoading = false;
-        SetTitleHelper.SetTitle(vm, preLoadValue.ImageModel);
 
+        if (SettingsHelper.Settings.ImageScaling.ShowImageSideBySide)
+        {
+            SetTitleHelper.SetSideBySideTitle(vm, preLoadValue.ImageModel, nextPreloadValue?.ImageModel);
+        }
+        else
+        {
+            SetTitleHelper.SetTitle(vm, preLoadValue.ImageModel);
+        }
+        
         if (SettingsHelper.Settings.WindowProperties.KeepCentered)
         {
             await Dispatcher.UIThread.InvokeAsync(() => { WindowFunctions.CenterWindowOnScreen(); });

+ 35 - 0
src/PicView.Avalonia/UI/SetTitleHelper.cs

@@ -88,6 +88,41 @@ public static class SetTitleHelper
                     vm.TitleTooltip = TranslationHelper.GetTranslation("UnableToRender");
         }
     }
+    
+    public static void SetSideBySideTitle(MainViewModel vm, ImageModel? imageModel1, ImageModel? imageModel2)
+    {
+        if (imageModel1 is null || imageModel2 is null)
+        {
+            ReturnError();
+            return;
+        }
+
+        if (imageModel1.FileInfo is null || imageModel2.FileInfo is null)
+        {
+            ReturnError();
+            return;
+        }
+
+        var firstWindowTitles = ImageTitleFormatter.GenerateTitleStrings(imageModel1.PixelWidth, imageModel1.PixelHeight,  vm.ImageIterator.CurrentIndex,
+            imageModel1.FileInfo,  vm.ZoomValue,  vm.ImageIterator.ImagePaths);
+        var secondWindowTitles = ImageTitleFormatter.GenerateTitleStrings(imageModel2.PixelWidth, imageModel2.PixelHeight,  vm.ImageIterator.NextIndex,
+            imageModel2.FileInfo,  vm.ZoomValue,  vm.ImageIterator.ImagePaths);
+        var windowTitle = $"{firstWindowTitles.BaseTitle} \u21dc || \u21dd {secondWindowTitles.BaseTitle} - PicView";
+        var title = $"{firstWindowTitles.BaseTitle} \u21dc || \u21dd  {secondWindowTitles.BaseTitle}";
+        var titleTooltip = $"{firstWindowTitles.FilePathTitle} \u21dc || \u21dd  {secondWindowTitles.FilePathTitle}";
+        vm.WindowTitle = windowTitle;
+        vm.Title = title;
+        vm.TitleTooltip = titleTooltip;
+
+        return;
+
+        void ReturnError()
+        {
+            vm.WindowTitle =
+                vm.Title =
+                    vm.TitleTooltip = TranslationHelper.GetTranslation("UnableToRender");
+        }
+    }
 
     public static void ResetTitle(MainViewModel vm)
     {