Browse Source

File deletion and LoadPicFromFile() fixes

Ruben 1 year ago
parent
commit
55234ca34d

+ 9 - 42
src/PicView.Avalonia/Navigation/ImageIterator.cs

@@ -191,50 +191,25 @@ public sealed class ImageIterator : IDisposable
         {
             return;
         }
-
-        if (IsRunning)
-        {
-            return;
-        }
-
-        IsRunning = true;
+        
         var index = ImagePaths.IndexOf(e.FullPath);
         if (index < 0)
         {
             return;
         }
-
-        var nextIndex = index + 1;
-        if (index >= ImagePaths.Count)
-        {
-            nextIndex = 0;
-        }
-
-        var prevIndex = index - 1;
-        if (prevIndex < 0)
-        {
-            prevIndex = ImagePaths.Count - 1;
-        }
-
-        var cleared = false;
-        if (PreLoader.Contains(index, ImagePaths) || PreLoader.Contains(nextIndex, ImagePaths) ||
-            PreLoader.Contains(prevIndex, ImagePaths))
-        {
-            PreLoader.Clear();
-            cleared = true;
-        }
-        else
-        {
-            PreLoader.Remove(index, ImagePaths);
-        }
-
-        var sameFile = CurrentIndex == index;
+        var isSameFile = CurrentIndex == index;
+        
+        PreLoader.Remove(index, ImagePaths);
+        
         if (!ImagePaths.Remove(e.FullPath))
         {
+#if DEBUG
+            Console.WriteLine($"Failed to remove {e.FullPath}");
+#endif
             return;
         }
 
-        if (sameFile)
+        if (isSameFile)
         {
             if (ImagePaths.Count <= 0)
             {
@@ -266,15 +241,7 @@ public sealed class ImageIterator : IDisposable
             GalleryNavigation.CenterScrollToSelectedItem(_vm);
         }
 
-
         FileHistoryNavigation.Remove(e.FullPath);
-        IsRunning = false;
-
-        SetTitleHelper.SetTitle(_vm);
-        if (cleared)
-        {
-            await Preload();
-        }
     }
 
     private async Task OnFileRenamed(RenamedEventArgs e)

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

@@ -262,6 +262,7 @@ public static class NavigationHelper
         {
             vm.PlatformService.StopTaskbarProgress();
         }
+
         if (vm.ImageIterator is not null)
         {
             if (fileInfo.DirectoryName == vm.ImageIterator.InitialFileInfo.DirectoryName)
@@ -278,20 +279,26 @@ public static class NavigationHelper
                         return;
                     }
                 }
+
                 var index = vm.ImageIterator.ImagePaths.IndexOf(fileName);
                 if (index != -1)
                 {
-                   await vm.ImageIterator.IterateToIndex(index);
+                    await vm.ImageIterator.IterateToIndex(index);
                 }
                 else
                 {
                     await ErrorHandling.ReloadAsync(vm);
-                    return;
                 }
             }
+            else
+            {
+                await PreviewPicAndLoadGallery(fileInfo, vm);
+            }
+        }
+        else
+        {
+            await PreviewPicAndLoadGallery(fileInfo, vm);
         }
-
-        await PreviewPicAndLoadGallery(fileInfo, vm);
     }
 
     /// <summary>
@@ -544,9 +551,10 @@ public static class NavigationHelper
     /// <returns>A task representing the asynchronous operation.</returns>
     private static async Task CheckAndReloadGallery(FileInfo fileInfo, MainViewModel vm)
     {
-        GalleryFunctions.Clear();
         if (SettingsHelper.Settings.Gallery.IsBottomGalleryShown || GalleryFunctions.IsFullGalleryOpen)
         {
+            GalleryFunctions.Clear();
+            
             // Check if the bottom gallery should be shown
             if (!GalleryFunctions.IsFullGalleryOpen)
             {

+ 5 - 3
src/PicView.Avalonia/UI/FunctionsHelper.cs

@@ -638,10 +638,12 @@ public static class FunctionsHelper
         {
             return;
         }
-        await Task.Run(() =>
+        var errorMsg = await Task.FromResult(FileDeletionHelper.DeleteFileWithErrorMsg(Vm.FileInfo?.FullName, true));
+
+        if (!string.IsNullOrEmpty(errorMsg))
         {
-            FileDeletionHelper.DeleteFileWithErrorMsg(Vm.FileInfo?.FullName, true);
-        });
+            await TooltipHelper.ShowTooltipMessageAsync(errorMsg, true);
+        }
     }
 
     public static async Task Rename()