Ruben 4 лет назад
Родитель
Сommit
c46b1d0305

+ 6 - 0
.editorconfig

@@ -11,3 +11,9 @@ csharp_style_var_elsewhere = true
 
 # Default severity for analyzer diagnostics with category 'Style'
 dotnet_analyzer_diagnostic.category-Style.severity = none
+
+# CS8602: Dereference of a possibly null reference.
+dotnet_diagnostic.CS8602.severity = silent
+
+# CS8622: Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes).
+dotnet_diagnostic.CS8622.severity = silent

+ 1 - 1
PicView/ChangeImage/Error_Handling.cs

@@ -64,7 +64,7 @@ namespace PicView.ChangeImage
                 return;
             }
 
-            string s;
+            string? s;
             if (Pics != null && Pics.Count > 0)
             {
                 s = fromBackup ? BackupPath : Pics[FolderIndex];

+ 7 - 2
PicView/ChangeImage/Navigation.cs

@@ -103,7 +103,7 @@ namespace PicView.ChangeImage
             }));
             if (!File.Exists(path))
             {
-                Uri uriResult;
+                Uri? uriResult;
                 bool result = Uri.TryCreate(path, UriKind.Absolute, out uriResult)
                     && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
 
@@ -488,9 +488,14 @@ namespace PicView.ChangeImage
             {
                 return;
             }
+            var b64 = Application.Current.Resources["Base64Image"] as string;
+            if (b64 == null)
+            {
+                return;
+            }
             await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
             {
-                UpdatePic(Application.Current.Resources["Base64Image"] as string, pic);
+                UpdatePic(b64, pic);
             }));
         }
 

+ 4 - 4
PicView/ChangeImage/Preloader.cs

@@ -40,14 +40,14 @@ namespace PicView.ChangeImage
         /// <param name="i">Index of Pics</param>
         internal static async Task AddAsync(int i)
         {
-            if (i < 0)
+            if (Pics == null || i >= Pics?.Count)
             {
-                i = Math.Abs(i);
+                return;
             }
 
-            if (i >= Pics?.Count)
+            if (i < 0)
             {
-                return;
+                i = Math.Abs(i);
             }
 
             var preloadValue = new PreloadValue(null, true);

+ 1 - 1
PicView/ChangeTitlebar/SetTitle.cs

@@ -19,7 +19,7 @@ namespace PicView.UILogic
         /// <param name="height"></param>
         /// <param name="index"></param>
         /// <returns></returns>
-        private static string[] TitleString(int width, int height, int index)
+        private static string[]? TitleString(int width, int height, int index)
         {
             FileInfo fileInfo;
             try

+ 1 - 1
PicView/ConfigureSettings/UpdateUIValues.cs

@@ -125,7 +125,7 @@ namespace PicView.ConfigureSettings
             }));
         }
 
-        internal static void SetScrolling(object sender, RoutedEventArgs e)
+        internal static void SetScrolling(object? sender, RoutedEventArgs? e)
         {
             if (GalleryFunctions.IsOpen) { return; }
 

+ 1 - 1
PicView/Editing/Crop/CropFunctions.cs

@@ -32,7 +32,7 @@ namespace PicView.Editing.Crop
             GetCropppingTool.Width = Rotateint == 0 || Rotateint == 180 ? XWidth : XHeight;
             GetCropppingTool.Height = Rotateint == 0 || Rotateint == 180 ? XHeight : XWidth;
 
-            ConfigureWindows.GetMainWindow.TitleText.Text = Application.Current.Resources["CropMessage"] as string;
+            ConfigureWindows.GetMainWindow.TitleText.Text = (string)Application.Current.Resources["CropMessage"];
 
             if (!ConfigureWindows.GetMainWindow.ParentContainer.Children.Contains(GetCropppingTool))
             {

+ 24 - 4
PicView/FileHandling/FileLists.cs

@@ -25,7 +25,7 @@ namespace PicView.FileHandling
         /// <summary>
         /// Sort and return list of supported files
         /// </summary>
-        internal static List<string> FileList()
+        internal static List<string>? FileList()
         {
             if (Properties.Settings.Default.IncludeSubDirectories)
             {
@@ -34,7 +34,15 @@ namespace PicView.FileHandling
                 if (args.Length > 1)
                 {
                     var originFolder = Path.GetDirectoryName(Path.GetDirectoryName(args[1]));
+                    if (string.IsNullOrWhiteSpace(originFolder) == false || Directory.Exists(originFolder) == false)
+                    {
+                        return null;
+                    }
                     var currentFolder = Path.GetDirectoryName(Path.GetDirectoryName(Navigation.Pics?[Navigation.FolderIndex]));
+                    if (string.IsNullOrWhiteSpace(currentFolder) == false || Directory.Exists(currentFolder) == false)
+                    {
+                        return null;
+                    }
                     if (originFolder != currentFolder)
                     {
                         return FileList(currentFolder);
@@ -49,7 +57,7 @@ namespace PicView.FileHandling
         /// <summary>
         /// Sort and return list of supported files
         /// </summary>
-        internal static List<string> FileList(string path) => Properties.Settings.Default.SortPreference switch
+        internal static List<string>? FileList(string path) => Properties.Settings.Default.SortPreference switch
         {
             0 => FileList(path, SortFilesBy.Name),
             1 => FileList(path, SortFilesBy.FileSize),
@@ -64,7 +72,7 @@ namespace PicView.FileHandling
         /// <summary>
         /// Sort and return list of supported files
         /// </summary>
-        private static List<string> FileList(string path, SortFilesBy sortFilesBy)
+        private static List<string>? FileList(string path, SortFilesBy sortFilesBy)
         {
             if (!Directory.Exists(path)) { return null; }
 
@@ -182,6 +190,11 @@ namespace PicView.FileHandling
         /// <returns></returns>
         internal static Task GetValues(string path) => Task.Run(async () =>
         {
+            if (string.IsNullOrWhiteSpace(path))
+            {
+                await Error_Handling.ReloadAsync(true).ConfigureAwait(false);
+                return;
+            }
             // Check if to load from archive
             if (SupportedFiles.IsSupportedArchives(path))
             {
@@ -191,11 +204,18 @@ namespace PicView.FileHandling
                 }
                 return;
             }
+            var directoryName = Path.GetDirectoryName(path);
+            if (string.IsNullOrWhiteSpace(directoryName) || Directory.Exists(directoryName) == false)
+            {
+                await Error_Handling.ReloadAsync(true).ConfigureAwait(false);
+                return;
+            }
 
             // Set files to Pics and get index
-            Navigation.Pics = FileList(Path.GetDirectoryName(path));
+            Navigation.Pics = FileList(directoryName);
             if (Navigation.Pics == null)
             {
+                await Error_Handling.ReloadAsync(true).ConfigureAwait(false);
                 return;
             }
 #if DEBUG

+ 3 - 3
PicView/FileHandling/WebFunctions.cs

@@ -123,7 +123,7 @@ namespace PicView.FileHandling
             private HttpClient _httpClient;
             private bool disposedValue;
 
-            public delegate void ProgressChangedHandler(long? totalFileSize, long totalBytesDownloaded, double? progressPercentage);
+            public delegate void ProgressChangedHandler(long? totalFileSize, long? totalBytesDownloaded, double? progressPercentage);
 
             public event ProgressChangedHandler ProgressChanged;
 
@@ -141,7 +141,7 @@ namespace PicView.FileHandling
                     await DownloadFileFromHttpResponseMessage(response).ConfigureAwait(false);
             }
 
-            public async Task DownloadFileFromHttpResponseMessage(HttpResponseMessage response)
+            public async Task DownloadFileFromHttpResponseMessage(HttpResponseMessage? response)
             {
                 response.EnsureSuccessStatusCode();
 
@@ -151,7 +151,7 @@ namespace PicView.FileHandling
                     await ProcessContentStream(totalBytes, contentStream).ConfigureAwait(false);
             }
 
-            public async Task ProcessContentStream(long? totalDownloadSize, Stream contentStream)
+            public async Task ProcessContentStream(long? totalDownloadSize, Stream? contentStream)
             {
                 var totalBytesRead = 0L;
                 var readCount = 0L;

+ 50 - 50
PicView/Views/Windows/EffectsWindows.xaml.cs

@@ -24,7 +24,7 @@ namespace PicView.Views.Windows
             ContentRendered += Window_ContentRendered;
         }
 
-        private void Window_ContentRendered(object sender, EventArgs e)
+        private void Window_ContentRendered(object? sender, EventArgs? e)
         {
             KeyDown += (_, e) => Shortcuts.GenericWindowShortcuts.KeysDown(null, e, this);
 
@@ -186,91 +186,91 @@ namespace PicView.Views.Windows
 
         private void IntensitySlider_ValueChanged()
         {
-            if (PixelateButton.IsChecked.Value)
+            if (PixelateButton.IsChecked.HasValue && PixelateButton.IsChecked.Value)
             {
                 PixelateEffect(null, null);
             }
-            else if (ColorToneButton.IsChecked.Value)
+            else if (ColorToneButton.IsChecked.HasValue && ColorToneButton.IsChecked.Value)
             {
                 ColorToneEffect(null, null);
             }
-            else if (RippleAltButton.IsChecked.Value)
+            else if (RippleAltButton.IsChecked.HasValue && RippleAltButton.IsChecked.Value)
             {
                 RippleEffect2(null, null);
             }
-            else if (BandedSwirlButton.IsChecked.Value)
+            else if (BandedSwirlButton.IsChecked.HasValue && BandedSwirlButton.IsChecked.Value)
             {
                 BandedSwirlEffect(null, null);
             }
-            else if (DirectionalBlurButton.IsChecked.Value)
+            else if (DirectionalBlurButton.IsChecked.HasValue && DirectionalBlurButton.IsChecked.Value)
             {
                 Dir_blur(null, null);
             }
-            else if (BandsButton.IsChecked.Value)
+            else if (BandsButton.IsChecked.HasValue && BandsButton.IsChecked.Value)
             {
                 Bands(null, null);
             }
-            else if (EmbossedButton.IsChecked.Value)
+            else if (EmbossedButton.IsChecked.HasValue && EmbossedButton.IsChecked.Value)
             {
                 Embossed(null, null);
             }
-            else if (GlasTileButton.IsChecked.Value)
+            else if (GlasTileButton.IsChecked.HasValue && GlasTileButton.IsChecked.Value)
             {
                 GlasTileEffect(null, null);
             }
-            else if (SmoothMagnifyButton.IsChecked.Value)
+            else if (SmoothMagnifyButton.IsChecked.HasValue && SmoothMagnifyButton.IsChecked.Value)
             {
                 MagnifySmoothEffect(null, null);
             }
-            else if (PaperfoldButton.IsChecked.Value)
+            else if (PaperfoldButton.IsChecked.HasValue && PaperfoldButton.IsChecked.Value)
             {
                 PaperFoldEffect(null, null);
             }
-            else if (PivotButton.IsChecked.Value)
+            else if (PivotButton.IsChecked.HasValue && PivotButton.IsChecked.Value)
             {
                 PivotEffect(null, null);
             }
-            else if (UnderwaterButton.IsChecked.Value)
+            else if (UnderwaterButton.IsChecked.HasValue && UnderwaterButton.IsChecked.Value)
             {
                 UnderWaterEffect(null, null);
             }
-            else if (WavewarperButton.IsChecked.Value)
+            else if (WavewarperButton.IsChecked.HasValue && WavewarperButton.IsChecked.Value)
             {
                 WaveWarperEffect(null, null);
             }
-            else if (FrostyOutlineButton.IsChecked.Value)
+            else if (FrostyOutlineButton.IsChecked.HasValue && FrostyOutlineButton.IsChecked.Value)
             {
                 FrostyOutlineEffect(null, null);
             }
-            else if (OldMovieButton.IsChecked.Value)
+            else if (OldMovieButton.IsChecked.HasValue && OldMovieButton.IsChecked.Value)
             {
                 OldMovieEffect(null, null);
             }
-            else if (SketchButton.IsChecked.Value)
+            else if (SketchButton.IsChecked.HasValue && SketchButton.IsChecked.Value)
             {
                 Sketch(null, null);
             }
-            else if (SwirlButton.IsChecked.Value)
+            else if (SwirlButton.IsChecked.HasValue && SwirlButton.IsChecked.Value)
             {
                 SwirlEffect(null, null);
             }
-            else if (BloomButton.IsChecked.Value)
+            else if (BloomButton.IsChecked.HasValue && BloomButton.IsChecked.Value)
             {
                 Bloom(null, null);
             }
-            else if (GloomButton.IsChecked.Value)
+            else if (GloomButton.IsChecked.HasValue && GloomButton.IsChecked.Value)
             {
                 Gloom(null, null);
             }
-            else if (TonemappingButton.IsChecked.Value)
+            else if (TonemappingButton.IsChecked.HasValue && TonemappingButton.IsChecked.Value)
             {
                 ToneMapping(null, null);
             }
-            else if (TelescopicBlurButton.IsChecked.Value)
+            else if (TelescopicBlurButton.IsChecked.HasValue && TelescopicBlurButton.IsChecked.Value)
             {
                 Teleskopisk_blur(null, null);
             }
-            else if (PencilSketchButton.IsChecked.Value)
+            else if (PencilSketchButton.IsChecked.HasValue && PencilSketchButton.IsChecked.Value)
             {
                 SketchPencilStrokeEffect(null, null);
             }
@@ -301,7 +301,7 @@ namespace PicView.Views.Windows
             }
         }
 
-        private void Negative(object sender, RoutedEventArgs e)
+        private void Negative(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -315,7 +315,7 @@ namespace PicView.Views.Windows
             NegativeButton.IsChecked = true;
         }
 
-        private void GraySceale(object sender, RoutedEventArgs e)
+        private void GraySceale(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -329,7 +329,7 @@ namespace PicView.Views.Windows
             GrayscaleButton.IsChecked = true;
         }
 
-        private void ColorToneEffect(object sender, RoutedEventArgs e)
+        private void ColorToneEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -343,7 +343,7 @@ namespace PicView.Views.Windows
             ColorToneButton.IsChecked = true;
         }
 
-        private void RippleEffect1(object sender, RoutedEventArgs e)
+        private void RippleEffect1(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -357,7 +357,7 @@ namespace PicView.Views.Windows
             RippleButton.IsChecked = true;
         }
 
-        private void RippleEffect2(object sender, RoutedEventArgs e)
+        private void RippleEffect2(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -371,7 +371,7 @@ namespace PicView.Views.Windows
             RippleAltButton.IsChecked = true;
         }
 
-        private void BandedSwirlEffect(object sender, RoutedEventArgs e)
+        private void BandedSwirlEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -385,7 +385,7 @@ namespace PicView.Views.Windows
             BandedSwirlButton.IsChecked = true;
         }
 
-        private void Monochrome(object sender, RoutedEventArgs e)
+        private void Monochrome(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -399,7 +399,7 @@ namespace PicView.Views.Windows
             MonochromeButton.IsChecked = true;
         }
 
-        private void SwirlEffect(object sender, RoutedEventArgs e)
+        private void SwirlEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -413,7 +413,7 @@ namespace PicView.Views.Windows
             SwirlButton.IsChecked = true;
         }
 
-        private void Bloom(object sender, RoutedEventArgs e)
+        private void Bloom(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -427,7 +427,7 @@ namespace PicView.Views.Windows
             BloomButton.IsChecked = true;
         }
 
-        private void Gloom(object sender, RoutedEventArgs e)
+        private void Gloom(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -441,7 +441,7 @@ namespace PicView.Views.Windows
             GloomButton.IsChecked = true;
         }
 
-        private void ToneMapping(object sender, RoutedEventArgs e)
+        private void ToneMapping(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -455,7 +455,7 @@ namespace PicView.Views.Windows
             TonemappingButton.IsChecked = true;
         }
 
-        private void Teleskopisk_blur(object sender, RoutedEventArgs e)
+        private void Teleskopisk_blur(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -469,7 +469,7 @@ namespace PicView.Views.Windows
             TelescopicBlurButton.IsChecked = true;
         }
 
-        private void BlurEffect(object sender, RoutedEventArgs e)
+        private void BlurEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -483,7 +483,7 @@ namespace PicView.Views.Windows
             BlurButton.IsChecked = true;
         }
 
-        private void Dir_blur(object sender, RoutedEventArgs e)
+        private void Dir_blur(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -497,7 +497,7 @@ namespace PicView.Views.Windows
             DirectionalBlurButton.IsChecked = true;
         }
 
-        private void Bands(object sender, RoutedEventArgs e)
+        private void Bands(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -511,7 +511,7 @@ namespace PicView.Views.Windows
             BandsButton.IsChecked = true;
         }
 
-        private void Embossed(object sender, RoutedEventArgs e)
+        private void Embossed(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -525,7 +525,7 @@ namespace PicView.Views.Windows
             EmbossedButton.IsChecked = true;
         }
 
-        private void GlasTileEffect(object sender, RoutedEventArgs e)
+        private void GlasTileEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -539,7 +539,7 @@ namespace PicView.Views.Windows
             GlasTileButton.IsChecked = true;
         }
 
-        private void MagnifySmoothEffect(object sender, RoutedEventArgs e)
+        private void MagnifySmoothEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -553,7 +553,7 @@ namespace PicView.Views.Windows
             SmoothMagnifyButton.IsChecked = true;
         }
 
-        private void PaperFoldEffect(object sender, RoutedEventArgs e)
+        private void PaperFoldEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -567,7 +567,7 @@ namespace PicView.Views.Windows
             PaperfoldButton.IsChecked = true;
         }
 
-        private void PivotEffect(object sender, RoutedEventArgs e)
+        private void PivotEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -581,7 +581,7 @@ namespace PicView.Views.Windows
             PivotButton.IsChecked = true;
         }
 
-        private void UnderWaterEffect(object sender, RoutedEventArgs e)
+        private void UnderWaterEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -595,7 +595,7 @@ namespace PicView.Views.Windows
             UnderwaterButton.IsChecked = true;
         }
 
-        private void WaveWarperEffect(object sender, RoutedEventArgs e)
+        private void WaveWarperEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -609,7 +609,7 @@ namespace PicView.Views.Windows
             WavewarperButton.IsChecked = true;
         }
 
-        private void FrostyOutlineEffect(object sender, RoutedEventArgs e)
+        private void FrostyOutlineEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -623,7 +623,7 @@ namespace PicView.Views.Windows
             FrostyOutlineButton.IsChecked = true;
         }
 
-        private void OldMovieEffect(object sender, RoutedEventArgs e)
+        private void OldMovieEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -637,7 +637,7 @@ namespace PicView.Views.Windows
             OldMovieButton.IsChecked = true;
         }
 
-        private void PixelateEffect(object sender, RoutedEventArgs e)
+        private void PixelateEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -651,7 +651,7 @@ namespace PicView.Views.Windows
             PixelateButton.IsChecked = true;
         }
 
-        private void Sketch(object sender, RoutedEventArgs e)
+        private void Sketch(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -665,7 +665,7 @@ namespace PicView.Views.Windows
             SketchButton.IsChecked = true;
         }
 
-        private void SketchPencilStrokeEffect(object sender, RoutedEventArgs e)
+        private void SketchPencilStrokeEffect(object? sender, RoutedEventArgs? e)
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {