Browse Source

Request for hotkeys for skipping +/-10 images and +/-100 images #172

Ruben 1 year ago
parent
commit
eb7f14314e

+ 25 - 15
src/PicView.Avalonia/Navigation/ImageIterator.cs

@@ -389,10 +389,17 @@ public sealed class ImageIterator : IDisposable
         await IterateToIndex(CurrentIndex).ConfigureAwait(false);
     }
 
-    public int GetIteration(int index, NavigateTo navigateTo, bool skip1 = false)
+    public int GetIteration(int index, NavigateTo navigateTo, bool skip1 = false, bool skip10 = false, bool skip100 = false)
     {
         int next;
-        var skipAmount = skip1 ? 2 : 1;
+
+        if (skip100)
+        {
+            PreLoader.Clear();
+        }
+    
+        // Determine skipAmount based on input flags
+        var skipAmount = skip100 ? 100 : skip10 ? 10 : skip1 ? 2 : 1;
 
         switch (navigateTo)
         {
@@ -403,26 +410,18 @@ public sealed class ImageIterator : IDisposable
 
                 if (SettingsHelper.Settings.UIProperties.Looping)
                 {
+                    // Calculate new index with looping
                     next = (index + indexChange + ImagePaths.Count) % ImagePaths.Count;
                 }
                 else
                 {
+                    // Calculate new index without looping and ensure bounds
                     var newIndex = index + indexChange;
-
-                    // Ensure the new index doesn't go out of bounds
-                    if (newIndex < 0)
-                    {
-                        return 0;
-                    }
-
-                    if (newIndex >= ImagePaths.Count)
-                    {
-                        return ImagePaths.Count - 1;
-                    }
+                    if (newIndex < 0) return 0;
+                    if (newIndex >= ImagePaths.Count) return ImagePaths.Count - 1;
 
                     next = newIndex;
                 }
-
                 break;
 
             case NavigateTo.First:
@@ -431,7 +430,6 @@ public sealed class ImageIterator : IDisposable
                 {
                     PreLoader.Clear();
                 }
-
                 next = navigateTo == NavigateTo.First ? 0 : ImagePaths.Count - 1;
                 break;
 
@@ -459,6 +457,18 @@ public sealed class ImageIterator : IDisposable
             await TimerIteration(index);
         }
     }
+    
+    public async Task Next10Iteration(bool forwards)
+    {
+        var index = GetIteration(CurrentIndex, forwards ? NavigateTo.Next : NavigateTo.Previous, false, true);
+        await IterateToIndex(index).ConfigureAwait(false);
+    }
+    
+    public async Task Next100Iteration(bool forwards)
+    {
+        var index = GetIteration(CurrentIndex, forwards ? NavigateTo.Next : NavigateTo.Previous, false, false, true);
+        await IterateToIndex(index).ConfigureAwait(false);
+    }
 
     public async Task IterateToIndex(int index)
     {

+ 25 - 0
src/PicView.Avalonia/UI/FunctionsHelper.cs

@@ -37,6 +37,10 @@ public static class FunctionsHelper
             "Down" => Down,
             "Last" => Last,
             "First" => First,
+            "Next10" => Next10,
+            "Prev10" => Prev10,
+            "Next100" => Next100,
+            "Prev100" => Prev100,
             
             // Rotate
             "RotateLeft" => RotateLeft,
@@ -227,6 +231,27 @@ public static class FunctionsHelper
     {
         await NavigationHelper.NavigateFirstOrLast(last: false, Vm);
     }
+    
+    public static async Task Next10()
+    {
+        await Vm?.ImageIterator.Next10Iteration(true);
+    }
+    
+    public static async Task Next100()
+    {
+        await Vm?.ImageIterator.Next100Iteration(true);
+    }
+    
+    public static async Task Prev10()
+    {
+        await Vm?.ImageIterator.Next10Iteration(false);
+    }
+    
+    public static async Task Prev100()
+    {
+        await Vm?.ImageIterator.Next100Iteration(false);
+    }
+    
 
     public static async Task Up()
     {

+ 4 - 0
src/PicView.Avalonia/ViewModels/MainViewModel.cs

@@ -423,6 +423,10 @@ public class MainViewModel : ViewModelBase
     public ReactiveCommand<Unit, Unit>? PreviousFolderCommand { get; }
     public ReactiveCommand<Unit, Unit>? FirstCommand { get; }
     public ReactiveCommand<Unit, Unit>? LastCommand { get; }
+    public ReactiveCommand<Unit, Unit>? Skip10Command { get; }
+    public ReactiveCommand<Unit, Unit>? Prev10Command { get; }
+    public ReactiveCommand<Unit, Unit>? Skip100Command { get; }
+    public ReactiveCommand<Unit, Unit>? Prev100Command { get; }
     public ReactiveCommand<Unit, Unit>? OpenFileCommand { get; }
     public ReactiveCommand<Unit, Unit>? SaveFileCommand { get; }
     public ReactiveCommand<Unit, Unit>? SaveFileAsCommand { get; }

+ 36 - 0
src/PicView.Avalonia/ViewModels/ViewModelBase.cs

@@ -236,10 +236,46 @@ public class ViewModelBase : ReactiveObject
         Quality = TranslationHelper.Translation.Quality;
         SaveAs = TranslationHelper.Translation.SaveAs;
         Reset = TranslationHelper.Translation.Reset;
+        AdvanceBy10Images = TranslationHelper.Translation.AdvanceBy10Images;
+        AdvanceBy100Images = TranslationHelper.Translation.AdvanceBy100Images;
+        GoBackBy10Images = TranslationHelper.Translation.GoBackBy10Images;
+        GoBackBy100Images = TranslationHelper.Translation.GoBackBy100Images;
     }
 
     #region Strings
     
+    private string? _advanceBy10Images;
+    
+    public string? AdvanceBy10Images
+    {
+        get => _advanceBy10Images;
+        set => this.RaiseAndSetIfChanged(ref _advanceBy10Images, value);
+    }
+    
+    private string? _advanceBy100Images;
+    
+    public string? AdvanceBy100Images
+    {
+        get => _advanceBy100Images;
+        set => this.RaiseAndSetIfChanged(ref _advanceBy100Images, value);
+    }
+    
+    private string? _goBackBy10Images;
+    
+    public string? GoBackBy10Images
+    {
+        get => _goBackBy10Images;
+        set => this.RaiseAndSetIfChanged(ref _goBackBy10Images, value);
+    }
+    
+    private string? _goBackBy100Images;
+    
+    public string? GoBackBy100Images
+    {
+        get => _goBackBy100Images;
+        set => this.RaiseAndSetIfChanged(ref _goBackBy100Images, value);
+    }
+    
     private string? _reset;
     
     public string? Reset

+ 97 - 6
src/PicView.Avalonia/Views/ShortcutsView.axaml

@@ -47,6 +47,7 @@
             TextAlignment="Center"
             x:Name="NavigationTextBlock" />
 
+        <!--  Next image  -->
         <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
             <TextBlock
                 Classes="txt"
@@ -67,46 +68,49 @@
                 Width="140" />
         </StackPanel>
 
+        <!--  Next 10 images  -->
         <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
             <TextBlock
                 Classes="txt"
                 FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
-                Text="{CompiledBinding LastImage}"
+                Text="{CompiledBinding AdvanceBy10Images}"
                 Width="170" />
             <customControls:KeybindTextBox
                 Alt="False"
                 Classes="hover TStyle"
-                MethodName="Last"
+                MethodName="Next10"
                 ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
                 Width="140" />
             <customControls:KeybindTextBox
                 Alt="True"
                 Classes="hover TStyle"
-                MethodName="Last"
+                MethodName="Next10"
                 ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
                 Width="140" />
         </StackPanel>
 
+        <!--  Next 100 images  -->
         <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
             <TextBlock
                 Classes="txt"
                 FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
-                Text="{CompiledBinding NextFolder}"
+                Text="{CompiledBinding AdvanceBy100Images}"
                 Width="170" />
             <customControls:KeybindTextBox
                 Alt="False"
                 Classes="hover TStyle"
-                MethodName="NextFolder"
+                MethodName="Next100"
                 ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
                 Width="140" />
             <customControls:KeybindTextBox
                 Alt="True"
                 Classes="hover TStyle"
-                MethodName="NextFolder"
+                MethodName="Next100"
                 ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
                 Width="140" />
         </StackPanel>
 
+        <!--  Previous image  -->
         <StackPanel Margin="15,5,10,10" Orientation="Horizontal">
             <TextBlock
                 Classes="txt"
@@ -126,6 +130,70 @@
                 Width="140" />
         </StackPanel>
 
+        <!--  Previous 10 images  -->
+        <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
+            <TextBlock
+                Classes="txt"
+                FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
+                Text="{CompiledBinding GoBackBy10Images}"
+                Width="170" />
+            <customControls:KeybindTextBox
+                Alt="False"
+                Classes="hover TStyle"
+                MethodName="Prev10"
+                ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
+                Width="140" />
+            <customControls:KeybindTextBox
+                Alt="True"
+                Classes="hover TStyle"
+                MethodName="Prev10"
+                ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
+                Width="140" />
+        </StackPanel>
+
+        <!--  Previous 100 images  -->
+        <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
+            <TextBlock
+                Classes="txt"
+                FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
+                Text="{CompiledBinding GoBackBy100Images}"
+                Width="170" />
+            <customControls:KeybindTextBox
+                Alt="False"
+                Classes="hover TStyle"
+                MethodName="Prev100"
+                ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
+                Width="140" />
+            <customControls:KeybindTextBox
+                Alt="True"
+                Classes="hover TStyle"
+                MethodName="Prev100"
+                ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
+                Width="140" />
+        </StackPanel>
+
+        <!--  Last image  -->
+        <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
+            <TextBlock
+                Classes="txt"
+                FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
+                Text="{CompiledBinding LastImage}"
+                Width="170" />
+            <customControls:KeybindTextBox
+                Alt="False"
+                Classes="hover TStyle"
+                MethodName="Last"
+                ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
+                Width="140" />
+            <customControls:KeybindTextBox
+                Alt="True"
+                Classes="hover TStyle"
+                MethodName="Last"
+                ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
+                Width="140" />
+        </StackPanel>
+
+        <!--  First image  -->
         <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
             <TextBlock
                 Classes="txt"
@@ -145,6 +213,29 @@
                 Width="140" />
         </StackPanel>
 
+        <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
+            <TextBlock
+                Classes="txt"
+                FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
+                Text="{CompiledBinding NextFolder}"
+                Width="170" />
+            <customControls:KeybindTextBox
+                Alt="False"
+                Classes="hover TStyle"
+                MethodName="NextFolder"
+                ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
+                Width="140" />
+            <customControls:KeybindTextBox
+                Alt="True"
+                Classes="hover TStyle"
+                MethodName="NextFolder"
+                ToolTip.Tip="{CompiledBinding ChangeKeybindingTooltip}"
+                Width="140" />
+        </StackPanel>
+
+
+
+
         <StackPanel Margin="15,0,10,10" Orientation="Horizontal">
             <TextBlock
                 Classes="txt"

+ 4 - 0
src/PicView.Core/Config/Languages/da.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Juster timing for slideshowet",
   "AdjustTimingForZoom": "Justér zooming hastighed",
   "AdjustZoomLevel": "Juster zoom niveau",
+  "AdvanceBy100Images": "Gå 100 billeder frem",
+  "AdvanceBy10Images": "Gå 10 billeder frem",
   "AllowZoomOut": "Undgå at zoome ud på billedet, når det allerede er i maksimal størrelse",
   "Alt": "Alt",
   "Altitude": "Højde",
@@ -151,6 +153,8 @@
   "GlassTheme": "Glas tema",
   "GlassTile": "Glasflise",
   "Gloom": "Gloom",
+  "GoBackBy100Images": "Gå 100 billeder tilbage",
+  "GoBackBy10Images": "Gå 10 billeder tilbage",
   "GoToImageAtSpecifiedIndex": "Indlæs billede ved bestemt numerisk placering",
   "Hard": "Hård",
   "Height": "Højde",

+ 5 - 1
src/PicView.Core/Config/Languages/de.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Timing für Diashow anpassen",
   "AdjustTimingForZoom": "Zoomgeschwindigkeit anpassen",
   "AdjustZoomLevel": "Zoomstufe anpassen",
+  "AdvanceBy100Images": "100 Bilder vorwärts gehen",
+  "AdvanceBy10Images": "10 Bilder vorwärts gehen",
   "AllowZoomOut": "Herauszoomen des Bildes vermeiden, wenn es bereits maximale Größe hat",
   "Alt": "Alt",
   "Altitude": "Höhe",
@@ -151,6 +153,8 @@
   "GlassTheme": "Glas",
   "GlassTile": "Glaskachel",
   "Gloom": "Dunkelheit",
+  "GoBackBy100Images": "100 Bilder zurück gehen",
+  "GoBackBy10Images": "10 Bilder zurück gehen",
   "GoToImageAtSpecifiedIndex": "Zu Bild mit angegebenen Index gehen",
   "Hard": "Hart",
   "Height": "Höhe",
@@ -280,8 +284,8 @@
   "ScrollToBottom": "Zum Ende scrollen",
   "ScrollToTop": "Zum Anfang scrollen",
   "ScrollToZoom": "Mit Mausrad zoomen, mit Strg navigieren",
-  "ScrollUp": "Nach unten scrollen",
   "ScrollUp": "Nach oben scrollen",
+  "ScrollUp": "Nach unten scrollen",
   "Scrolling": "Scrollen",
   "ScrollingDisabled": "Scrollen deaktiviert",
   "ScrollingEnabled": "Scrollen aktiviert",

+ 4 - 0
src/PicView.Core/Config/Languages/en.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Adjust timing for slideshow",
   "AdjustTimingForZoom": "Adjust zooming speed",
   "AdjustZoomLevel": "Adjust zoom level",
+  "AdvanceBy100Images": "Advance by 100 Images",
+  "AdvanceBy10Images": "Advance by 10 Images",
   "AllowZoomOut": "Avoid zooming out the image when it is already at the maximum size",
   "Alt": "Alt",
   "Altitude": "Altitude",
@@ -151,6 +153,8 @@
   "GlassTheme": "Glass Theme",
   "GlassTile": "Glass Tile",
   "Gloom": "Gloom",
+  "GoBackBy100Images": "Go Back by 100 Images",
+  "GoBackBy10Images": "Go Back by 10 Images",
   "GoToImageAtSpecifiedIndex": "Go to image at specified index",
   "Hard": "Hard",
   "Height": "Height",

+ 4 - 0
src/PicView.Core/Config/Languages/es.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Ajustar velocidad de presentación",
   "AdjustTimingForZoom": "Ajustar velocidad de acercado/alejado",
   "AdjustZoomLevel": "Ajustar nivel de zoom",
+  "AdvanceBy100Images": "Avanzar 100 imágenes",
+  "AdvanceBy10Images": "Avanzar 10 imágenes",
   "AllowZoomOut": "Evite hacer zoom out en la imagen cuando ya esté en tamaño máximo",
   "Alt": "Alt",
   "Altitude": "Altitud",
@@ -151,6 +153,8 @@
   "GlassTheme": "Tema de vidrio",
   "GlassTile": "Cubos de Cristal",
   "Gloom": "Oscuridad",
+  "GoBackBy100Images": "Retroceder 100 imágenes",
+  "GoBackBy10Images": "Retroceder 10 imágenes",
   "GoToImageAtSpecifiedIndex": "Ir a imagen en índice especificado",
   "Hard": "Duro",
   "Height": "Alto",

+ 4 - 0
src/PicView.Core/Config/Languages/fr.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Ajuster le durée pour le diaporama",
   "AdjustTimingForZoom": "Ajuster la vitesse du zoom",
   "AdjustZoomLevel": "Ajuster le niveau de zoom",
+  "AdvanceBy100Images": "Avancer de 100 images",
+  "AdvanceBy10Images": "Avancer de 10 images",
   "AllowZoomOut": "Évitez de zoomer sur l'image lorsqu'elle est déjà à sa taille maximale",
   "Alt": "Alt",
   "Altitude": "Altitude",
@@ -151,6 +153,8 @@
   "GlassTheme": "Thème en verre",
   "GlassTile": "Tuile en verre",
   "Gloom": "Sombre",
+  "GoBackBy100Images": "Reculer de 100 images",
+  "GoBackBy10Images": "Reculer de 10 images",
   "GoToImageAtSpecifiedIndex": "Aller à l'image à l'index spécifié",
   "Hard": "Dur",
   "Height": "Hauteur",

+ 4 - 0
src/PicView.Core/Config/Languages/it.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Regola i tempi per la presentazione",
   "AdjustTimingForZoom": "Regola la velocità del zoom",
   "AdjustZoomLevel": "Regola il livello di zoom",
+  "AdvanceBy100Images": "Avanza di 100 immagini",
+  "AdvanceBy10Images": "Avanza di 10 immagini",
   "AllowZoomOut": "Evitare lo zoom dell'immagine quando è già alla dimensione massima",
   "Alt": "Alt",
   "Altitude": "Altitudine",
@@ -151,6 +153,8 @@
   "GlassTheme": "Tema di vetro",
   "GlassTile": "Piastrella di vetro",
   "Gloom": "BuioGloom",
+  "GoBackBy100Images": "Torna indietro di 100 immagini",
+  "GoBackBy10Images": "Torna indietro di 10 immagini",
   "GoToImageAtSpecifiedIndex": "Vai all'immagine all'indice specificato",
   "Hard": "Duro",
   "Height": "Altezza",

+ 4 - 0
src/PicView.Core/Config/Languages/ko.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "슬라이드쇼 시간 조정",
   "AdjustTimingForZoom": "확대/축소 속도 조정",
   "AdjustZoomLevel": "확대/축소 수준 조정",
+  "AdvanceBy100Images": "이미지 100개 앞으로 이동",
+  "AdvanceBy10Images": "이미지 10개 앞으로 이동",
   "AllowZoomOut": "이미지가 이미 최대 크기일 때는 축소하지 않음",
   "Alt": "Alt",
   "Altitude": "고도",
@@ -151,6 +153,8 @@
   "GlassTheme": "유리 테마",
   "GlassTile": "유리 타일",
   "Gloom": "우울",
+  "GoBackBy100Images": "이미지 100개 뒤로 이동",
+  "GoBackBy10Images": "이미지 10개 뒤로 이동",
   "GoToImageAtSpecifiedIndex": "지정된 인덱스에서 이미지로 이동",
   "Hard": "단단함",
   "Height": "높이",

+ 5 - 1
src/PicView.Core/Config/Languages/pl.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Zmień czas na zdjęcie podczas pokazu",
   "AdjustTimingForZoom": "Zmień prędkość przybliżania",
   "AdjustZoomLevel": "Dostosuj poziom przybliżenia",
+  "AdvanceBy100Images": "Przejdź o 100 obrazów do przodu",
+  "AdvanceBy10Images": "Przejdź o 10 obrazów do przodu",
   "AllowZoomOut": "Unikaj zmniejszania obrazu: gdy jest już w maksymalnym rozmiarze",
   "Alt": "Alt",
   "Altitude": "Wysokość",
@@ -151,6 +153,8 @@
   "GlassTheme": "Motyw szklany",
   "GlassTile": "Szklane kafelki",
   "Gloom": "Przyciemniony",
+  "GoBackBy100Images": "Przejdź o 100 obrazów do tyłu",
+  "GoBackBy10Images": "Przejdź o 10 obrazów do tyłu",
   "GoToImageAtSpecifiedIndex": "Przejdź do zdjęcia o określonym indeksie",
   "Hard": "Twardy",
   "Height": "Wysokość",
@@ -286,8 +290,8 @@
   "ScrollingDisabled": "Przewijanie wyłączone",
   "ScrollingEnabled": "Przewijanie włączone",
   "SearchSubdirectory": "Przeszukaj podkatalogi",
-  "SelectAll": "Zaznacz wszystko",
   "SecAbbreviation": "Sek.",
+  "SelectAll": "Zaznacz wszystko",
   "SelectGalleryThumb": "Wybierz miniaturę galerii",
   "SendCurrentImageToRecycleBin": "Przenieś obecne zdjęcie do kosza",
   "SentFileToRecycleBin": "Przenieś plik do kosza",

+ 4 - 0
src/PicView.Core/Config/Languages/ro.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Ajustare viteză de transfocare",
   "AdjustTimingForZoom": "Adjust zooming speed",
   "AdjustZoomLevel": "Ajustare nivel de transfocare",
+  "AdvanceBy100Images": "Avansează cu 100 imagini",
+  "AdvanceBy10Images": "Avansează cu 10 imagini",
   "AllowZoomOut": "Evitați micșorarea imaginii când aceasta este deja la dimensiunea maximă",
   "Alt": "Alt",
   "Altitude": "Altitudine",
@@ -151,6 +153,8 @@
   "GlassTheme": "Temă de sticlă",
   "GlassTile": "Dale din sticlă",
   "Gloom": "Întunecare",
+  "GoBackBy100Images": "Mergi înapoi cu 100 imagini",
+  "GoBackBy10Images": "Mergi înapoi cu 10 imagini",
   "GoToImageAtSpecifiedIndex": "Mergi la imagine la indexul specificat",
   "Hard": "Tare",
   "Height": "Înălțime",

+ 4 - 0
src/PicView.Core/Config/Languages/ru.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "Отрегулировать время для слайд-шоу",
   "AdjustTimingForZoom": "Отрегулировать скорость масштабирования",
   "AdjustZoomLevel": "Отрегулировать уровень масштабирования",
+  "AdvanceBy100Images": "Продвинуться на 100 изображений вперед",
+  "AdvanceBy10Images": "Продвинуться на 10 изображений вперед",
   "AllowZoomOut": "Избегайте уменьшения изображения, когда оно уже находится в максимальном размере",
   "Alt": "Alt",
   "Altitude": "Высота",
@@ -151,6 +153,8 @@
   "GlassTheme": "Стеклянная тема",
   "GlassTile": "Стеклянная плитка",
   "Gloom": "Мрак",
+  "GoBackBy100Images": "Вернуться на 100 изображений назад",
+  "GoBackBy10Images": "Вернуться на 10 изображений назад",
   "GoToImageAtSpecifiedIndex": "Перейти к изображению по указанному индексу",
   "Hard": "Жесткий",
   "Height": "Высота",

+ 4 - 0
src/PicView.Core/Config/Languages/zh-CN.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "调整幻灯片切换时间",
   "AdjustTimingForZoom": "调整缩放动画速度",
   "AdjustZoomLevel": "调整缩放级别",
+  "AdvanceBy100Images": "前进 100 张图片",
+  "AdvanceBy10Images": "前进 10 张图片",
   "AllowZoomOut": "在最大尺寸时避免缩小图像",
   "Alt": "Alt",
   "Altitude": "海拔",
@@ -151,6 +153,8 @@
   "GlassTheme": "玻璃主题",
   "GlassTile": "平铺瓷砖",
   "Gloom": "暗淡",
+  "GoBackBy100Images": "后退 100 张图片",
+  "GoBackBy10Images": "后退 10 张图片",
   "GoToImageAtSpecifiedIndex": "跳转至指定图片",
   "Hard": "硬",
   "Height": "高度",

+ 4 - 0
src/PicView.Core/Config/Languages/zh-TW.json

@@ -7,6 +7,8 @@
   "AdjustTimingForSlideshow": "調整幻燈片切換時間",
   "AdjustTimingForZoom": "調整縮放動畫速度",
   "AdjustZoomLevel": "調整縮放級別",
+  "AdvanceBy100Images": "前進 100 張圖片",
+  "AdvanceBy10Images": "前進 10 張圖片",
   "AllowZoomOut": "在圖片已達最大尺寸時,不要縮小圖片",
   "Alt": "Alt",
   "Altitude": "海拔",
@@ -151,6 +153,8 @@
   "GlassTheme": "玻璃主題",
   "GlassTile": "毛玻璃",
   "Gloom": "暗淡",
+  "GoBackBy100Images": "後退 100 張圖片",
+  "GoBackBy10Images": "後退 10 張圖片",
   "GoToImageAtSpecifiedIndex": "跳轉至指定圖片",
   "Hard": "硬",
   "Height": "高度",

+ 4 - 0
src/PicView.Core/Localization/LanguageModel.cs

@@ -383,4 +383,8 @@ public record LanguageModel
     public string? GlassTheme { get; set; }
     
     public string? Reset { get; set; }
+    public string? AdvanceBy10Images { get; set; }
+    public string? AdvanceBy100Images { get; set; }
+    public string? GoBackBy10Images { get; set; }
+    public string? GoBackBy100Images { get; set; }
 }