Browse Source

[Avalonia] Refactor, rename, update file history navigation

Ruben 1 year ago
parent
commit
d18fafa5bd

+ 2 - 2
src/PicView.Avalonia/Gallery/GalleryFunctions.cs

@@ -207,7 +207,7 @@ public static class GalleryFunctions
                     return;
                 }
             }
-            vm.SelectedGalleryItemIndex = files.IndexOf(files[vm.ImageIterator.Index]);
+            vm.SelectedGalleryItemIndex = files.IndexOf(files[vm.ImageIterator.CurrentIndex]);
             GalleryNavigation.CenterScrollToSelectedItem(vm);
         }
         catch (TaskCanceledException)
@@ -253,7 +253,7 @@ public static class GalleryFunctions
          galleryListBox.Items.RemoveAt(index);
          if (vm != null)
          {
-             vm.SelectedGalleryItemIndex = vm.ImageIterator.Index;
+             vm.SelectedGalleryItemIndex = vm.ImageIterator.CurrentIndex;
          }
      }
 

+ 4 - 4
src/PicView.Avalonia/Gallery/GalleryLoad.cs

@@ -58,7 +58,7 @@ public static class GalleryLoad
         _cancellationTokenSource = new CancellationTokenSource();
         _currentDirectory = currentDirectory;
         IsLoading = true;
-        var index = vm.ImageIterator.Index;
+        var index = vm.ImageIterator.CurrentIndex;
         var galleryItemSize = Math.Max(vm.GetBottomGalleryItemHeight, vm.GetFullGalleryItemHeight);
         var loading = TranslationHelper.Translation.Loading;
         var endIndex = vm.ImageIterator.ImagePaths.Count;
@@ -105,7 +105,7 @@ public static class GalleryLoad
                         await vm.ImageIterator.IterateToIndex(i1);
                     };
                     galleryListBox.Items.Add(galleryItem);
-                    if (i != vm.ImageIterator?.Index)
+                    if (i != vm.ImageIterator?.CurrentIndex)
                     {
                         return;
                     }
@@ -126,7 +126,7 @@ public static class GalleryLoad
                     return;
                 }
                 var horizontalItems = (int)Math.Floor(galleryListBox.Bounds.Width / galleryItem.ImageBorder.MinWidth);
-                index = (vm.ImageIterator.Index - horizontalItems) % vm.ImageIterator.ImagePaths.Count;
+                index = (vm.ImageIterator.CurrentIndex - horizontalItems) % vm.ImageIterator.ImagePaths.Count;
             });
 
             index = index < 0 ? 0 : index;
@@ -214,7 +214,7 @@ public static class GalleryLoad
                         return;
                     }
 
-                    if (i == vm.ImageIterator.Index)
+                    if (i == vm.ImageIterator.CurrentIndex)
                     {
                         galleryListBox.ScrollToCenterOfItem(galleryItem);
                     }

+ 1 - 1
src/PicView.Avalonia/Gallery/GalleryNavigation.cs

@@ -174,7 +174,7 @@ public static class GalleryNavigation
             return;
         }
         await GalleryFunctions.ToggleGallery(vm);
-        if (vm.SelectedGalleryItemIndex != vm.ImageIterator.Index) 
+        if (vm.SelectedGalleryItemIndex != vm.ImageIterator.CurrentIndex) 
         {
             await vm.ImageIterator.IterateToIndex(vm.SelectedGalleryItemIndex);
         }

+ 2 - 2
src/PicView.Avalonia/Navigation/FileHistoryNavigation.cs

@@ -89,7 +89,7 @@ public static class FileHistoryNavigation
             return;
         }
 
-        var index = vm.ImageIterator.Index;
+        var index = vm.ImageIterator.CurrentIndex;
         await LoadEntryAsync(vm, index, true).ConfigureAwait(false);
     }
 
@@ -107,7 +107,7 @@ public static class FileHistoryNavigation
             return;
         }
 
-        var index = vm.ImageIterator.Index;
+        var index = vm.ImageIterator.CurrentIndex;
         await LoadEntryAsync(vm, index, false).ConfigureAwait(false);
     }
 

+ 31 - 31
src/PicView.Avalonia/Navigation/ImageIterator.cs

@@ -25,9 +25,9 @@ public sealed class ImageIterator : IDisposable
 
     public bool IsRenamingInProgress { get; set; }
 
-    public int Index{ get; private set; }
+    public int CurrentIndex{ get; private set; }
     
-    public FileInfo FileInfo{ get; private set; } = null!;
+    public FileInfo InitialFileInfo{ get; private set; } = null!;
     public bool IsReversed { get; private set; }
     private PreLoader PreLoader { get; } = new();
 
@@ -44,16 +44,16 @@ public sealed class ImageIterator : IDisposable
         ArgumentNullException.ThrowIfNull(fileInfo);
         _vm = vm;
         ImagePaths = vm.PlatformService.GetFiles(fileInfo);
-        Index = Directory.Exists(fileInfo.FullName) ? 0 : ImagePaths.IndexOf(fileInfo.FullName);
+        CurrentIndex = Directory.Exists(fileInfo.FullName) ? 0 : ImagePaths.IndexOf(fileInfo.FullName);
         InitiateFileSystemWatcher(fileInfo);
     }
     
-    public ImageIterator(FileInfo fileInfo, List<string> imagePaths, int index, MainViewModel vm)
+    public ImageIterator(FileInfo fileInfo, List<string> imagePaths, int currentIndex, MainViewModel vm)
     {
         ArgumentNullException.ThrowIfNull(fileInfo);
         _vm = vm;
         ImagePaths = imagePaths;
-        Index = index;
+        CurrentIndex = currentIndex;
         InitiateFileSystemWatcher(fileInfo);
     }
 
@@ -63,7 +63,7 @@ public sealed class ImageIterator : IDisposable
     
     private void InitiateFileSystemWatcher(FileInfo fileInfo)
     {
-        FileInfo = fileInfo;
+        InitialFileInfo = fileInfo;
         if (_watcher is not null)
         {
             _watcher.Dispose();
@@ -152,7 +152,7 @@ public sealed class ImageIterator : IDisposable
             }
             var indexOf = ImagePaths.IndexOf(_vm.FileInfo.FullName);
             _vm.SelectedGalleryItemIndex = indexOf; // Fixes deselection bug
-            Index = indexOf;
+            CurrentIndex = indexOf;
             GalleryNavigation.CenterScrollToSelectedItem(_vm);
         }
 
@@ -182,7 +182,7 @@ public sealed class ImageIterator : IDisposable
         if (_isRunning) { return; }
         _isRunning = true;
         var index = ImagePaths.IndexOf(e.FullPath);
-        var sameFile = Index == index;
+        var sameFile = CurrentIndex == index;
         if (!ImagePaths.Remove(e.FullPath))
         {
             return;
@@ -264,7 +264,7 @@ public sealed class ImageIterator : IDisposable
         await PreLoader.RefreshFileInfo(oldIndex, ImagePaths);
 
         _isRunning = false;
-        //FileHistoryNavigation.Rename(e.OldFullPath, e.FullPath);
+        FileHistoryNavigation.Rename(e.OldFullPath, e.FullPath);
         GalleryFunctions.RemoveGalleryItem(oldIndex, _vm);
         await GalleryFunctions.AddGalleryItem(index,fileInfo, _vm);
         await GalleryFunctions.SortGalleryItems(ImagePaths, _vm);
@@ -281,7 +281,7 @@ public sealed class ImageIterator : IDisposable
     
     public async Task Preload()
     {
-        await PreLoader.PreLoadAsync(Index, ImagePaths.Count, IsReversed, ImagePaths).ConfigureAwait(false);
+        await PreLoader.PreLoadAsync(CurrentIndex, ImagePaths.Count, IsReversed, ImagePaths).ConfigureAwait(false);
     }
 
     public async Task AddAsync(int index, ImageModel imageModel)
@@ -296,7 +296,7 @@ public sealed class ImageIterator : IDisposable
     
     public PreLoader.PreLoadValue? GetCurrentPreLoadValue()
     {
-        return PreLoader.Get(Index, ImagePaths);
+        return PreLoader.Get(CurrentIndex, ImagePaths);
     }
     
     public void RemoveItemFromPreLoader(int index)
@@ -306,7 +306,7 @@ public sealed class ImageIterator : IDisposable
     
     public void RemoveCurrentItemFromPreLoader()
     {
-        PreLoader.Remove(Index, ImagePaths);
+        PreLoader.Remove(CurrentIndex, ImagePaths);
     }
     
     #endregion
@@ -315,9 +315,9 @@ public sealed class ImageIterator : IDisposable
     
     public async Task ReloadFileList()
     {
-        ImagePaths = await Task.FromResult(_vm.PlatformService.GetFiles(FileInfo)).ConfigureAwait(false);
-        Index = ImagePaths.IndexOf(FileInfo.FullName);
-        InitiateFileSystemWatcher(FileInfo);
+        ImagePaths = await Task.FromResult(_vm.PlatformService.GetFiles(InitialFileInfo)).ConfigureAwait(false);
+        CurrentIndex = ImagePaths.IndexOf(InitialFileInfo.FullName);
+        InitiateFileSystemWatcher(InitialFileInfo);
     }
 
     public int GetIteration(int index, NavigateTo navigateTo)
@@ -363,7 +363,7 @@ public sealed class ImageIterator : IDisposable
 
     public async Task NextIteration(NavigateTo navigateTo)
     {
-        var index = GetIteration(Index, navigateTo);
+        var index = GetIteration(CurrentIndex, navigateTo);
         if (index < 0)
         {
             return;
@@ -388,7 +388,7 @@ public sealed class ImageIterator : IDisposable
         }
         try
         {
-            Index = index;
+            CurrentIndex = index;
 
             var preLoadValue = PreLoader.Get(index, ImagePaths);
             if (preLoadValue is not null)
@@ -399,19 +399,19 @@ public sealed class ImageIterator : IDisposable
                     preLoadValue.ImageLoaded += async (_, e) =>
                     {
                         await Task.Delay(20);
-                        if (Index != index)
+                        if (CurrentIndex != index)
                         {
                             // Fix loading bug
                             if (_vm.Title == TranslationHelper.Translation.Loading)
                             { 
-                                var nextIndex = IsReversed ? Math.Min(index,Index) : Math.Max(index,Index); 
+                                var nextIndex = IsReversed ? Math.Min(index,CurrentIndex) : Math.Max(index,CurrentIndex); 
                                 await IterateToIndex(nextIndex);
                                 return;
                             }
                             return;
                         }
                         UpdateSource(e.PreLoadValue);
-                        await AddAsync(Index, preLoadValue.ImageModel);
+                        await AddAsync(CurrentIndex, preLoadValue.ImageModel);
                         await Preload();
                     };
                     return;
@@ -421,7 +421,7 @@ public sealed class ImageIterator : IDisposable
             {
                 LoadingPreview(index);
                 var added = await PreLoader.AddAsync(index, ImagePaths);
-                if (Index != index)
+                if (CurrentIndex != index)
                 {
                     // Skip loading if user went to next value
                     return;
@@ -432,7 +432,7 @@ public sealed class ImageIterator : IDisposable
                 }
             }
 
-            if (Index != index || preLoadValue is null)
+            if (CurrentIndex != index || preLoadValue is null)
             {
                 return;
             }
@@ -444,7 +444,7 @@ public sealed class ImageIterator : IDisposable
             {
                 FileHistoryNavigation.Add(ImagePaths[index]);
             }
-            await AddAsync(Index, preLoadValue.ImageModel);
+            await AddAsync(CurrentIndex, preLoadValue.ImageModel);
             await Preload();
         }
         catch (OperationCanceledException)
@@ -495,7 +495,7 @@ public sealed class ImageIterator : IDisposable
     public void UpdateFileListAndIndex(List<string> fileList, int index)
     {
         ImagePaths = fileList;
-        Index = index;
+        CurrentIndex = index;
     }
     
     #endregion
@@ -514,15 +514,15 @@ public sealed class ImageIterator : IDisposable
             _vm.ImageViewer.Rotate(_vm.RotationAngle);
         }
         SetTitleHelper.SetTitle(_vm, preLoadValue.ImageModel);
-        _vm.GetIndex = Index + 1;
+        _vm.GetIndex = CurrentIndex + 1;
         if (SettingsHelper.Settings.WindowProperties.KeepCentered)
         {
             WindowHelper.CenterWindowOnScreen(false);
         }
 
-        if (_vm.SelectedGalleryItemIndex != Index)
+        if (_vm.SelectedGalleryItemIndex != CurrentIndex)
         {
-            _vm.SelectedGalleryItemIndex = Index;
+            _vm.SelectedGalleryItemIndex = CurrentIndex;
             if (GalleryFunctions.IsBottomGalleryOpen)
             {
                 GalleryNavigation.CenterScrollToSelectedItem(_vm);
@@ -535,7 +535,7 @@ public sealed class ImageIterator : IDisposable
     
     public void LoadingPreview(int index)
     {
-        if (index != Index)
+        if (index != CurrentIndex)
         {
             return;
         }
@@ -550,7 +550,7 @@ public sealed class ImageIterator : IDisposable
         var thumb = image.GetExifProfile()?.CreateThumbnail();
         if (thumb is null)
         {
-            if (index == Index)
+            if (index == CurrentIndex)
             {
                 _vm.IsLoading = true;
                 _vm.ImageSource = null;
@@ -561,7 +561,7 @@ public sealed class ImageIterator : IDisposable
         var byteArray = thumb.ToByteArray();
         if (byteArray is null)
         {
-            if (index == Index)
+            if (index == CurrentIndex)
             {
                 _vm.IsLoading = true;
                 _vm.ImageSource = null;
@@ -569,7 +569,7 @@ public sealed class ImageIterator : IDisposable
             return;
         }
         var stream = new MemoryStream(byteArray);
-        if (index != Index)
+        if (index != CurrentIndex)
         {
             return;
         }

+ 5 - 5
src/PicView.Avalonia/Navigation/NavigationHelper.cs

@@ -224,7 +224,7 @@ public static class NavigationHelper
         }
         if (vm.ImageIterator is not null)
         {
-            if (fileInfo.DirectoryName == vm.ImageIterator.FileInfo.DirectoryName)
+            if (fileInfo.DirectoryName == vm.ImageIterator.InitialFileInfo.DirectoryName)
             {
                 var index = vm.ImageIterator.ImagePaths.IndexOf(fileName);
                 if (index != -1)
@@ -291,7 +291,7 @@ public static class NavigationHelper
         vm.FileInfo = fileInfo;
         ExifHandling.SetImageModel(imageModel, vm);
         ExifHandling.UpdateExifValues(imageModel, vm);
-        //FileHistoryNavigation.Add(url);
+        FileHistoryNavigation.Add(url);
     }
     
     /// <summary>
@@ -363,7 +363,7 @@ public static class NavigationHelper
         vm.ImageType = imageModel.ImageType;
         WindowHelper.SetSize(imageModel.PixelWidth, imageModel.PixelHeight, imageModel.Rotation, vm);
         vm.ImageIterator = new ImageIterator(fileInfo, vm);
-        await vm.ImageIterator.IterateToIndex(vm.ImageIterator.Index);
+        await vm.ImageIterator.IterateToIndex(vm.ImageIterator.CurrentIndex);
         await CheckAndReloadGallery(fileInfo, vm);
     }
     
@@ -429,7 +429,7 @@ public static class NavigationHelper
         return await Task.Run(() =>
         {
             var indexChange = next ? 1 : -1;
-            var currentFolder = Path.GetDirectoryName(vm.ImageIterator?.ImagePaths[vm.ImageIterator.Index]);
+            var currentFolder = Path.GetDirectoryName(vm.ImageIterator?.ImagePaths[vm.ImageIterator.CurrentIndex]);
             var parentFolder = Path.GetDirectoryName(currentFolder);
             var directories = Directory.GetDirectories(parentFolder, "*", SearchOption.TopDirectoryOnly);
             var directoryIndex = Array.IndexOf(directories, currentFolder);
@@ -475,7 +475,7 @@ public static class NavigationHelper
         }
         else
         {
-            vm.ImageIterator = new ImageIterator(fileInfo, files, index: 0, vm);
+            vm.ImageIterator = new ImageIterator(fileInfo, files, currentIndex: 0, vm);
             await vm.ImageIterator.IterateToIndex(0);
         }
         await CheckAndReloadGallery(fileInfo, vm);

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

@@ -78,13 +78,13 @@ public static class QuickLoad
                 vm.ImageIterator = new ImageIterator(fileInfo, vm);
                 
                 SetTitleHelper.SetTitle(vm, imageModel);
-                vm.GetIndex = vm.ImageIterator.Index + 1;
+                vm.GetIndex = vm.ImageIterator.CurrentIndex + 1;
                 if (SettingsHelper.Settings.WindowProperties.KeepCentered)
                 {
                     WindowHelper.CenterWindowOnScreen(false);
                 }
                 
-                _ = vm.ImageIterator.AddAsync(vm.ImageIterator.Index, imageModel);
+                _ = vm.ImageIterator.AddAsync(vm.ImageIterator.CurrentIndex, imageModel);
                 _ = vm.ImageIterator.Preload();
             }
 

+ 2 - 2
src/PicView.Avalonia/UI/SetTitleHelper.cs

@@ -36,7 +36,7 @@ public static class SetTitleHelper
             return;
         }
 
-        var getTitle = TitleHelper.GetTitle((int)vm.ImageWidth, (int)vm.ImageHeight, vm.ImageIterator.Index,
+        var getTitle = TitleHelper.GetTitle((int)vm.ImageWidth, (int)vm.ImageHeight, vm.ImageIterator.CurrentIndex,
             vm.FileInfo, vm.ZoomValue, vm.ImageIterator.ImagePaths);
         vm.WindowTitle = getTitle[0];
         vm.Title = getTitle[1];
@@ -75,7 +75,7 @@ public static class SetTitleHelper
             return;
         }
 
-        var titleString = TitleHelper.GetTitle(imageModel.PixelWidth, imageModel.PixelHeight,  vm.ImageIterator.Index,
+        var titleString = TitleHelper.GetTitle(imageModel.PixelWidth, imageModel.PixelHeight,  vm.ImageIterator.CurrentIndex,
             imageModel.FileInfo,  vm.ZoomValue,  vm.ImageIterator.ImagePaths);
         vm.WindowTitle = titleString[0];
         vm.Title = titleString[1];

+ 1 - 1
src/PicView.Avalonia/ViewModels/MainViewModel.cs

@@ -1335,7 +1335,7 @@ public class MainViewModel : ViewModelBase
         if (success)
         {
             ImageIterator?.RemoveCurrentItemFromPreLoader();
-            await ImageIterator?.IterateToIndex(ImageIterator.Index);
+            await ImageIterator?.IterateToIndex(ImageIterator.CurrentIndex);
         }
         else
         {

+ 2 - 2
src/PicView.Avalonia/Views/ExifView.axaml.cs

@@ -44,7 +44,7 @@ public partial class ExifView : UserControl
             if (success)
             {
                 vm.ImageIterator?.RemoveCurrentItemFromPreLoader();
-                await vm.ImageIterator?.IterateToIndex(vm.ImageIterator.Index);
+                await vm.ImageIterator?.IterateToIndex(vm.ImageIterator.CurrentIndex);
             }
         }
     }
@@ -78,7 +78,7 @@ public partial class ExifView : UserControl
             if (success)
             {
                 vm.ImageIterator?.RemoveCurrentItemFromPreLoader();
-                await vm.ImageIterator?.IterateToIndex(vm.ImageIterator.Index);
+                await vm.ImageIterator?.IterateToIndex(vm.ImageIterator.CurrentIndex);
             }
         }
     }

+ 5 - 2
src/PicView.Core/Navigation/FileHistory.cs

@@ -32,12 +32,15 @@ public class FileHistory
             {
                 _fileLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Ruben2776/PicView/Config/recent.txt");
             }
-            catch (Exception)
+            catch (Exception exception)
             {
 #if DEBUG
-                Trace.WriteLine($"{nameof(FileHistory)} exception, \n{e.Message}");
+                Trace.WriteLine($"{nameof(FileHistory)} exception, \n{exception.Message}");
 #endif
             }
+#if DEBUG
+            Trace.WriteLine($"{nameof(FileHistory)} exception, \n{e.Message}");
+#endif
         }
         ReadFromFile();
     }