From 552362c6b303c7794282e07a16b4830b966b851e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81d=C3=A1m=20Kov=C3=A1cs?= Date: Tue, 8 Feb 2022 11:26:35 +0100 Subject: [PATCH] Dispose -> Destroy, windows icon color fix --- src/Core/FileTime.Core/Components/Tab.cs | 2 +- src/Core/FileTime.Core/Models/IItem.cs | 5 +- .../FileTime.Core/Models/VirtualContainer.cs | 6 +- .../FileTime.Core/Providers/TopContainer.cs | 4 +- .../FileTime.Core/Timeline/TimeContainer.cs | 4 +- .../FileTime.Core/Timeline/TimeElement.cs | 4 +- .../FileTime.Core/Timeline/TimeProvider.cs | 4 +- src/GuiApp/FileTime.Avalonia/App.axaml | 20 +++-- .../FileTime.Avalonia.csproj | 4 + .../IconProviders/WindowsSystemIconHelper.cs | 77 +++++++++++++------ src/GuiApp/FileTime.Avalonia/Program.cs | 5 +- .../Services/WindowsContextMenuProvider.cs | 45 +++++++---- .../ViewModels/ContainerViewModel.cs | 17 +--- .../ViewModels/MainPageViewModel.cs | 4 +- .../ViewModels/ParalellCommandsViewModel.cs | 21 +---- .../ViewModels/ParallelCommandViewModel.cs | 17 +--- .../LocalContentProvider.cs | 4 +- .../FileTime.Providers.Local/LocalFile.cs | 4 +- .../FileTime.Providers.Local/LocalFolder.cs | 8 +- .../SmbContentProvider.cs | 4 +- .../FileTime.Providers.Smb/SmbFile.cs | 4 +- .../FileTime.Providers.Smb/SmbFolder.cs | 6 +- .../FileTime.Providers.Smb/SmbServer.cs | 4 +- .../FileTime.Providers.Smb/SmbShare.cs | 6 +- 24 files changed, 153 insertions(+), 126 deletions(-) diff --git a/src/Core/FileTime.Core/Components/Tab.cs b/src/Core/FileTime.Core/Components/Tab.cs index 9cbba11..641ba32 100644 --- a/src/Core/FileTime.Core/Components/Tab.cs +++ b/src/Core/FileTime.Core/Components/Tab.cs @@ -287,7 +287,7 @@ namespace FileTime.Core.Components foreach (var lastLocationItem in currentLocationItems.OfType()) { - lastLocationItem.Dispose(); + lastLocationItem.Destroy(); } } } diff --git a/src/Core/FileTime.Core/Models/IItem.cs b/src/Core/FileTime.Core/Models/IItem.cs index a462702..9446825 100644 --- a/src/Core/FileTime.Core/Models/IItem.cs +++ b/src/Core/FileTime.Core/Models/IItem.cs @@ -2,15 +2,16 @@ using FileTime.Core.Providers; namespace FileTime.Core.Models { - public interface IItem : IDisposable + public interface IItem { string Name { get; } string? FullName { get; } bool IsHidden { get; } - bool IsDisposed { get; } + bool IsDestroyed { get; } SupportsDelete CanDelete { get; } bool CanRename { get; } IContentProvider Provider { get; } + void Destroy(); Task Delete(bool hardDelete = false); Task Rename(string newName); IContainer? GetParent(); diff --git a/src/Core/FileTime.Core/Models/VirtualContainer.cs b/src/Core/FileTime.Core/Models/VirtualContainer.cs index fd0f62d..07c59a8 100644 --- a/src/Core/FileTime.Core/Models/VirtualContainer.cs +++ b/src/Core/FileTime.Core/Models/VirtualContainer.cs @@ -35,7 +35,7 @@ namespace FileTime.Core.Models public AsyncEventHandler Refreshed { get; } - public bool IsDisposed => BaseContainer.IsDisposed; + public bool IsDestroyed => BaseContainer.IsDestroyed; private void RefreshAddBase(Func handler) { @@ -171,9 +171,9 @@ namespace FileTime.Core.Models public async Task Rename(string newName) => await BaseContainer.Rename(newName); public async Task CanOpen() => await BaseContainer.CanOpen(); - public void Dispose() + public void Destroy() { - BaseContainer.Dispose(); + BaseContainer.Destroy(); } public void Unload() diff --git a/src/Core/FileTime.Core/Providers/TopContainer.cs b/src/Core/FileTime.Core/Providers/TopContainer.cs index 4a15dfa..1cfe812 100644 --- a/src/Core/FileTime.Core/Providers/TopContainer.cs +++ b/src/Core/FileTime.Core/Providers/TopContainer.cs @@ -33,7 +33,7 @@ namespace FileTime.Core.Providers public bool SupportsDirectoryLevelSoftDelete => false; - public bool IsDisposed => false; + public bool IsDestroyed => false; public TopContainer(IEnumerable contentProviders) { @@ -71,7 +71,7 @@ namespace FileTime.Core.Providers public Task CanOpen() => Task.FromResult(true); - public void Dispose() { } + public void Destroy() { } public void Unload() { } } diff --git a/src/Core/FileTime.Core/Timeline/TimeContainer.cs b/src/Core/FileTime.Core/Timeline/TimeContainer.cs index 93018ad..9ef9b4b 100644 --- a/src/Core/FileTime.Core/Timeline/TimeContainer.cs +++ b/src/Core/FileTime.Core/Timeline/TimeContainer.cs @@ -29,7 +29,7 @@ namespace FileTime.Core.Timeline public bool SupportsDirectoryLevelSoftDelete => false; - public bool IsDisposed { get; private set; } + public bool IsDestroyed { get; private set; } public TimeContainer(string name, IContainer parent, IContentProvider contentProvider, IContentProvider virtualContentProvider, PointInTime pointInTime) { @@ -124,7 +124,7 @@ namespace FileTime.Core.Timeline } public Task CanOpen() => Task.FromResult(true); - public void Dispose() => IsDisposed = true; + public void Destroy() => IsDestroyed = true; public void Unload() { } } } \ No newline at end of file diff --git a/src/Core/FileTime.Core/Timeline/TimeElement.cs b/src/Core/FileTime.Core/Timeline/TimeElement.cs index 08510a2..226e93b 100644 --- a/src/Core/FileTime.Core/Timeline/TimeElement.cs +++ b/src/Core/FileTime.Core/Timeline/TimeElement.cs @@ -31,7 +31,7 @@ namespace FileTime.Core.Timeline public IContentProvider Provider { get; } public IContentProvider VirtualProvider { get; } - public bool IsDisposed { get; private set; } + public bool IsDestroyed { get; private set; } public Task Delete(bool hardDelete = false) => Task.CompletedTask; @@ -44,6 +44,6 @@ namespace FileTime.Core.Timeline public Task GetContent(CancellationToken token = default) => Task.FromResult(""); public Task GetElementSize(CancellationToken token = default) => Task.FromResult(-1L); - public void Dispose() => IsDisposed = true; + public void Destroy() => IsDestroyed = true; } } \ No newline at end of file diff --git a/src/Core/FileTime.Core/Timeline/TimeProvider.cs b/src/Core/FileTime.Core/Timeline/TimeProvider.cs index a81392e..43c07cb 100644 --- a/src/Core/FileTime.Core/Timeline/TimeProvider.cs +++ b/src/Core/FileTime.Core/Timeline/TimeProvider.cs @@ -28,7 +28,7 @@ namespace FileTime.Core.Timeline public bool SupportsDirectoryLevelSoftDelete => false; - public bool IsDisposed => false; + public bool IsDestroyed => false; public TimeProvider(PointInTime pointInTime) { @@ -93,7 +93,7 @@ namespace FileTime.Core.Timeline public void SetParent(IContainer container) { } public Task CanOpen() => Task.FromResult(true); - public void Dispose() { } + public void Destroy() { } public void Unload() { } } diff --git a/src/GuiApp/FileTime.Avalonia/App.axaml b/src/GuiApp/FileTime.Avalonia/App.axaml index 80eccfb..ae519f3 100644 --- a/src/GuiApp/FileTime.Avalonia/App.axaml +++ b/src/GuiApp/FileTime.Avalonia/App.axaml @@ -37,8 +37,8 @@ - - + + - - + + + diff --git a/src/GuiApp/FileTime.Avalonia/FileTime.Avalonia.csproj b/src/GuiApp/FileTime.Avalonia/FileTime.Avalonia.csproj index 951a285..912d6c1 100644 --- a/src/GuiApp/FileTime.Avalonia/FileTime.Avalonia.csproj +++ b/src/GuiApp/FileTime.Avalonia/FileTime.Avalonia.csproj @@ -33,6 +33,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/src/GuiApp/FileTime.Avalonia/IconProviders/WindowsSystemIconHelper.cs b/src/GuiApp/FileTime.Avalonia/IconProviders/WindowsSystemIconHelper.cs index aaafb11..df80010 100644 --- a/src/GuiApp/FileTime.Avalonia/IconProviders/WindowsSystemIconHelper.cs +++ b/src/GuiApp/FileTime.Avalonia/IconProviders/WindowsSystemIconHelper.cs @@ -1,4 +1,5 @@ using System; +using System.Drawing.Imaging; using System.IO; using Avalonia.Media.Imaging; using FileTime.Avalonia.Misc; @@ -18,32 +19,64 @@ namespace FileTime.Avalonia.IconProviders if (Array.Find(lines, l => l.StartsWith("iconresource", StringComparison.OrdinalIgnoreCase)) is string iconLine) { var nameLineValue = string.Join('=', iconLine.Split('=')[1..]); - var environemntVariables = Environment.GetEnvironmentVariables(); - foreach (var keyo in environemntVariables.Keys) - { - if (keyo is string key && environemntVariables[key] is string value) - { - nameLineValue = nameLineValue.Replace($"%{key}%", value); - } - } - - var parts = nameLineValue.Split(','); - if (parts.Length >= 2 && long.TryParse(parts[^1], out var parsedResourceId)) - { - if (parsedResourceId < 0) parsedResourceId *= -1; - - var extractedIcon = NativeMethodHelpers.GetIconResource(string.Join(',', parts[..^1]), (uint)parsedResourceId); - - var extractedIconAsStream = new MemoryStream(); - extractedIcon.Save(extractedIconAsStream); - extractedIconAsStream.Position = 0; - - return new ImagePath(ImagePathType.Raw, new Bitmap(extractedIconAsStream)); - } + return GetImagePathByIconPath(nameLineValue); } } return null; } + + public static ImagePath GetImagePathByIconPath(string path) + { + var environemntVariables = Environment.GetEnvironmentVariables(); + foreach (var keyo in environemntVariables.Keys) + { + if (keyo is string key && environemntVariables[key] is string value) + { + path = path.Replace($"%{key}%", value); + } + } + + var parts = path.Split(','); + (var parsedResourceId, var path2) = parts.Length >= 2 && long.TryParse(parts[^1], out var id) + ? (id, NormalizePath(string.Join(',', parts[..^1]))) + : (0, NormalizePath(path)); + + if (parsedResourceId == 0) + { + using var extractedIconAsStream = new MemoryStream(); + using var extractedIcon = System.Drawing.Icon.ExtractAssociatedIcon(path2).ToBitmap(); + extractedIcon.Save(extractedIconAsStream, ImageFormat.Png); + extractedIconAsStream.Position = 0; +#pragma warning disable IDISP004 // Don't ignore created IDisposable + return new ImagePath(ImagePathType.Raw, new Bitmap(extractedIconAsStream)); +#pragma warning restore IDISP004 // Don't ignore created IDisposable + } + else + { + if (parsedResourceId < 0) parsedResourceId *= -1; + + using var extractedIcon = NativeMethodHelpers.GetIconResource(path2, (uint)parsedResourceId).ToBitmap(); + + using var extractedIconAsStream = new MemoryStream(); + extractedIcon.Save(extractedIconAsStream, ImageFormat.Png); + extractedIconAsStream.Position = 0; + +#pragma warning disable IDISP004 // Don't ignore created IDisposable + return new ImagePath(ImagePathType.Raw, new Bitmap(extractedIconAsStream)); +#pragma warning restore IDISP004 // Don't ignore created IDisposable + + } + } + + private static string NormalizePath(string path) + { + if (path.StartsWith('\"') && path.EndsWith('\"')) + { + return path[1..^1]; + } + + return path; + } } } \ No newline at end of file diff --git a/src/GuiApp/FileTime.Avalonia/Program.cs b/src/GuiApp/FileTime.Avalonia/Program.cs index dce3676..b24088b 100644 --- a/src/GuiApp/FileTime.Avalonia/Program.cs +++ b/src/GuiApp/FileTime.Avalonia/Program.cs @@ -61,10 +61,7 @@ namespace FileTime.Avalonia BuildAvaloniaApp().StartWithClassicDesktopLifetime(args); } #if DEBUG - catch - { - throw; - } + finally { } #else catch (Exception e) { diff --git a/src/GuiApp/FileTime.Avalonia/Services/WindowsContextMenuProvider.cs b/src/GuiApp/FileTime.Avalonia/Services/WindowsContextMenuProvider.cs index 696cff3..b174e90 100644 --- a/src/GuiApp/FileTime.Avalonia/Services/WindowsContextMenuProvider.cs +++ b/src/GuiApp/FileTime.Avalonia/Services/WindowsContextMenuProvider.cs @@ -6,10 +6,12 @@ using FileTime.Providers.Local; using System.Runtime.InteropServices; using System.Linq; using System.Collections.Generic; -using System.Text; using System.Diagnostics; using System.IO; using FileTime.Avalonia.Misc; +using FileTime.Avalonia.IconProviders; +using Avalonia.Svg.Skia; +using Avalonia.Media; #pragma warning disable CA1416 namespace FileTime.Avalonia.Services @@ -24,15 +26,16 @@ namespace FileTime.Avalonia.Services if (container is LocalFolder localFolder) { - ProcessKey(Registry.ClassesRoot.OpenSubKey("Directory"), menuItems, localFolder.Directory.FullName); + using var directoryKey = Registry.ClassesRoot.OpenSubKey("Directory"); + ProcessRegistryKey(directoryKey, menuItems, localFolder.Directory.FullName); } return menuItems; } - private void ProcessKey(RegistryKey? contextMenuContainer, List menuItems, string folderPath) + private void ProcessRegistryKey(RegistryKey? contextMenuContainer, List menuItems, string folderPath) { - var shell = contextMenuContainer?.OpenSubKey("shell"); + using var shell = contextMenuContainer?.OpenSubKey("shell"); if (shell == null) return; var shellSubKeys = shell.GetSubKeyNames(); @@ -63,18 +66,36 @@ namespace FileTime.Avalonia.Services { text = text.Replace("&", ""); - if (shellKey.GetSubKeyNames().Contains("command") && shellKey.OpenSubKey("command")?.GetValue(null) is string commandString) + object? image = null; + try { - var item = new MenuItem() { Header = text }; + if (shellKey.GetValue("Icon") is string iconPath) + { + var imagePath = WindowsSystemIconHelper.GetImagePathByIconPath(iconPath); + if (imagePath.Type == Models.ImagePathType.Raw) + { + image = new Image() + { + Source = (IImage)imagePath.Image! + }; + } + } + } + catch { } + + using var commandKey = shellKey.OpenSubKey("command"); + if (shellKey.GetSubKeyNames().Contains("command") && commandKey?.GetValue(null) is string commandString) + { + var item = new MenuItem() { Header = text, Icon = image }; item.Click += (o, e) => MenuItemClick(folderPath, commandString); menuItems.Add(item); } else if (shellKey.GetValue("ExtendedSubCommandsKey") is string extendedCommands) { - var rootMenu = new MenuItem() { Header = text }; + var rootMenu = new MenuItem() { Header = text, Icon = image }; var rootMenuItems = new List(); - ProcessKey(Registry.ClassesRoot.OpenSubKey(extendedCommands), rootMenuItems, folderPath); + ProcessRegistryKey(Registry.ClassesRoot.OpenSubKey(extendedCommands), rootMenuItems, folderPath); rootMenu.Items = rootMenuItems.ToArray(); menuItems.Add(rootMenu); @@ -104,10 +125,6 @@ namespace FileTime.Avalonia.Services { for (var i2 = 0; i2 < commandParts[i].Count; i2++) { - /*var commandPart = commandParts[i][i2]; - - if (commandPart == "%1" || commandPart == "%V") commandParts[i][i2] = folderPath;*/ - commandParts[i][i2] = commandParts[i][i2].Replace("%1", folderPath).Replace("%V", folderPath); } } @@ -145,7 +162,7 @@ namespace FileTime.Avalonia.Services try { - var process = new Process(); + using var process = new Process(); process.StartInfo.FileName = commandPartsWithoutEmpty[0]; process.StartInfo.Arguments = arguments; process.Start(); @@ -170,7 +187,7 @@ namespace FileTime.Avalonia.Services var (paramStartX, paramStartY) = GetCoordinatesFrom(commandParts, 1, 0, lastExecutablePart); arguments = SumList(commandParts, paramStartX, paramStartY); - var process = new Process(); + using var process = new Process(); process.StartInfo.FileName = executable; process.StartInfo.Arguments = arguments; process.Start(); diff --git a/src/GuiApp/FileTime.Avalonia/ViewModels/ContainerViewModel.cs b/src/GuiApp/FileTime.Avalonia/ViewModels/ContainerViewModel.cs index 5218482..9d5c5b7 100644 --- a/src/GuiApp/FileTime.Avalonia/ViewModels/ContainerViewModel.cs +++ b/src/GuiApp/FileTime.Avalonia/ViewModels/ContainerViewModel.cs @@ -16,7 +16,7 @@ namespace FileTime.Avalonia.ViewModels { [ViewModel] [Inject(typeof(ItemNameConverterService))] - public partial class ContainerViewModel : IItemViewModel, IDisposable + public partial class ContainerViewModel : IItemViewModel { private bool _disposed; private bool _isRefreshing; @@ -321,20 +321,9 @@ namespace FileTime.Avalonia.ViewModels return _items; } - ~ContainerViewModel() + private void Dispose() { - Dispose(false); - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - private void Dispose(bool disposing) - { - if (!_disposed && disposing) + if (!_disposed) { Container.Refreshed.Remove(Container_Refreshed); } diff --git a/src/GuiApp/FileTime.Avalonia/ViewModels/MainPageViewModel.cs b/src/GuiApp/FileTime.Avalonia/ViewModels/MainPageViewModel.cs index 871650e..a553135 100644 --- a/src/GuiApp/FileTime.Avalonia/ViewModels/MainPageViewModel.cs +++ b/src/GuiApp/FileTime.Avalonia/ViewModels/MainPageViewModel.cs @@ -236,7 +236,7 @@ namespace FileTime.Avalonia.ViewModels for (var i = 0; i < itemsToRemove.Count; i++) { - itemsToRemove[i].Dispose(); + itemsToRemove[i].Destroy(); TimelineCommands.Remove(itemsToRemove[i]); } @@ -262,7 +262,7 @@ namespace FileTime.Avalonia.ViewModels for (var i = 0; i < commandVMsToRemove.Count; i++) { - commandVMsToRemove[i].Dispose(); + commandVMsToRemove[i].Destroy(); parallelCommandsVM.ParallelCommands.Remove(commandVMsToRemove[i]); } } diff --git a/src/GuiApp/FileTime.Avalonia/ViewModels/ParalellCommandsViewModel.cs b/src/GuiApp/FileTime.Avalonia/ViewModels/ParalellCommandsViewModel.cs index d3b7907..dc49720 100644 --- a/src/GuiApp/FileTime.Avalonia/ViewModels/ParalellCommandsViewModel.cs +++ b/src/GuiApp/FileTime.Avalonia/ViewModels/ParalellCommandsViewModel.cs @@ -1,6 +1,4 @@ using System.Linq; -using System.Collections.Generic; -using System; using FileTime.Core.Timeline; using MvvmGen; using System.Collections.ObjectModel; @@ -8,7 +6,7 @@ using System.Collections.ObjectModel; namespace FileTime.Avalonia.ViewModels { [ViewModel] - public partial class ParallelCommandsViewModel : IDisposable + public partial class ParallelCommandsViewModel { private bool _disposed; @@ -22,24 +20,13 @@ namespace FileTime.Avalonia.ViewModels Id = parallelCommands.Id; } - ~ParallelCommandsViewModel() + public void Destroy() { - Dispose(false); - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - private void Dispose(bool disposing) - { - if (!_disposed && disposing) + if (!_disposed) { foreach(var commandVm in ParallelCommands) { - commandVm.Dispose(); + commandVm.Destroy(); } } _disposed = true; diff --git a/src/GuiApp/FileTime.Avalonia/ViewModels/ParallelCommandViewModel.cs b/src/GuiApp/FileTime.Avalonia/ViewModels/ParallelCommandViewModel.cs index 706fb68..3d1e83d 100644 --- a/src/GuiApp/FileTime.Avalonia/ViewModels/ParallelCommandViewModel.cs +++ b/src/GuiApp/FileTime.Avalonia/ViewModels/ParallelCommandViewModel.cs @@ -9,7 +9,7 @@ using MvvmGen; namespace FileTime.Avalonia.ViewModels { [ViewModel] - public partial class ParallelCommandViewModel : IDisposable + public partial class ParallelCommandViewModel { private bool _disposed; @@ -39,20 +39,9 @@ namespace FileTime.Avalonia.ViewModels return Task.CompletedTask; } - ~ParallelCommandViewModel() + public void Destroy() { - Dispose(false); - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - private void Dispose(bool disposing) - { - if (!_disposed && disposing) + if (!_disposed) { _commandTimeState.Command.ProgressChanged.Remove(HandleProgressChange); } diff --git a/src/Providers/FileTime.Providers.Local/LocalContentProvider.cs b/src/Providers/FileTime.Providers.Local/LocalContentProvider.cs index b3ca6b2..1b0bf59 100644 --- a/src/Providers/FileTime.Providers.Local/LocalContentProvider.cs +++ b/src/Providers/FileTime.Providers.Local/LocalContentProvider.cs @@ -33,7 +33,7 @@ namespace FileTime.Providers.Local public bool SupportsDirectoryLevelSoftDelete => false; - public bool IsDisposed => false; + public bool IsDestroyed => false; public LocalContentProvider(ILogger logger) { @@ -103,7 +103,7 @@ namespace FileTime.Providers.Local public Task Rename(string newName) => throw new NotSupportedException(); public Task CanOpen() => Task.FromResult(true); - public void Dispose() + public void Destroy() { foreach (var c in _rootContainers) { diff --git a/src/Providers/FileTime.Providers.Local/LocalFile.cs b/src/Providers/FileTime.Providers.Local/LocalFile.cs index 924c3b8..661d8f6 100644 --- a/src/Providers/FileTime.Providers.Local/LocalFile.cs +++ b/src/Providers/FileTime.Providers.Local/LocalFile.cs @@ -30,7 +30,7 @@ namespace FileTime.Providers.Local private readonly LocalFolder _parent; - public bool IsDisposed { get; private set; } + public bool IsDestroyed { get; private set; } public LocalFile(FileInfo file, LocalFolder parent, IContentProvider contentProvider) { @@ -86,6 +86,6 @@ namespace FileTime.Providers.Local public async Task GetContent(CancellationToken token = default) => await System.IO.File.ReadAllTextAsync(File.FullName, token); public Task GetElementSize(CancellationToken token = default) => Task.FromResult(File.Length); - public void Dispose() => IsDisposed = true; + public void Destroy() => IsDestroyed = true; } } \ No newline at end of file diff --git a/src/Providers/FileTime.Providers.Local/LocalFolder.cs b/src/Providers/FileTime.Providers.Local/LocalFolder.cs index 7cf0c4b..a54df4d 100644 --- a/src/Providers/FileTime.Providers.Local/LocalFolder.cs +++ b/src/Providers/FileTime.Providers.Local/LocalFolder.cs @@ -34,7 +34,7 @@ namespace FileTime.Providers.Local public DateTime CreatedAt => Directory.CreationTime; public IReadOnlyList Exceptions { get; } - public bool IsDisposed { get; private set; } + public bool IsDestroyed { get; private set; } public bool SupportsDirectoryLevelSoftDelete { get; } @@ -67,7 +67,7 @@ namespace FileTime.Providers.Local { foreach (var item in _items) { - item.Dispose(); + item.Destroy(); } } @@ -185,12 +185,12 @@ namespace FileTime.Providers.Local } public Task CanOpen() => Task.FromResult(true); - public void Dispose() + public void Destroy() { _items = null; _containers = null; _elements = null; - IsDisposed = true; + IsDestroyed = true; Refreshed = new AsyncEventHandler(); } diff --git a/src/Providers/FileTime.Providers.Smb/SmbContentProvider.cs b/src/Providers/FileTime.Providers.Smb/SmbContentProvider.cs index bf69da4..a23e619 100644 --- a/src/Providers/FileTime.Providers.Smb/SmbContentProvider.cs +++ b/src/Providers/FileTime.Providers.Smb/SmbContentProvider.cs @@ -31,7 +31,7 @@ namespace FileTime.Providers.Smb public bool SupportsDirectoryLevelSoftDelete => false; - public bool IsDisposed => false; + public bool IsDestroyed => false; public SmbContentProvider(IInputInterface inputInterface) { @@ -105,7 +105,7 @@ namespace FileTime.Providers.Smb public Task Rename(string newName) => throw new NotSupportedException(); public Task CanOpen() => Task.FromResult(true); - public void Dispose() { } + public void Destroy() { } public void Unload() { } } diff --git a/src/Providers/FileTime.Providers.Smb/SmbFile.cs b/src/Providers/FileTime.Providers.Smb/SmbFile.cs index 60da44a..14403de 100644 --- a/src/Providers/FileTime.Providers.Smb/SmbFile.cs +++ b/src/Providers/FileTime.Providers.Smb/SmbFile.cs @@ -19,7 +19,7 @@ namespace FileTime.Providers.Smb public IContentProvider Provider { get; } private IContainer _parent; - public bool IsDisposed { get; private set; } + public bool IsDestroyed { get; private set; } public SmbFile(string name, SmbContentProvider provider, IContainer parent) { @@ -48,6 +48,6 @@ namespace FileTime.Providers.Smb public Task GetContent(CancellationToken token = default) => Task.FromResult("NotImplemented"); public Task GetElementSize(CancellationToken token = default) => Task.FromResult(-1L); - public void Dispose() => IsDisposed = true; + public void Destroy() => IsDestroyed = true; } } \ No newline at end of file diff --git a/src/Providers/FileTime.Providers.Smb/SmbFolder.cs b/src/Providers/FileTime.Providers.Smb/SmbFolder.cs index 3f748be..c820f00 100644 --- a/src/Providers/FileTime.Providers.Smb/SmbFolder.cs +++ b/src/Providers/FileTime.Providers.Smb/SmbFolder.cs @@ -29,7 +29,7 @@ namespace FileTime.Providers.Smb public AsyncEventHandler Refreshed { get; } = new(); public IReadOnlyList Exceptions { get; } = new List().AsReadOnly(); - public bool IsDisposed { get; private set; } + public bool IsDestroyed { get; private set; } public bool SupportsDirectoryLevelSoftDelete => false; @@ -109,7 +109,7 @@ namespace FileTime.Providers.Smb { foreach (var item in _items) { - item.Dispose(); + item.Destroy(); } } @@ -134,7 +134,7 @@ namespace FileTime.Providers.Smb } public Task CanOpen() => Task.FromResult(true); - public void Dispose() => IsDisposed = true; + public void Destroy() => IsDestroyed = true; public void Unload() { diff --git a/src/Providers/FileTime.Providers.Smb/SmbServer.cs b/src/Providers/FileTime.Providers.Smb/SmbServer.cs index e8c672b..87b45b3 100644 --- a/src/Providers/FileTime.Providers.Smb/SmbServer.cs +++ b/src/Providers/FileTime.Providers.Smb/SmbServer.cs @@ -40,7 +40,7 @@ namespace FileTime.Providers.Smb public bool SupportsDirectoryLevelSoftDelete => false; - public bool IsDisposed => false; + public bool IsDestroyed => false; public SmbServer(string path, SmbContentProvider contentProvider, IInputInterface inputInterface) { @@ -193,7 +193,7 @@ namespace FileTime.Providers.Smb public Task Rename(string newName) => throw new NotSupportedException(); public Task CanOpen() => Task.FromResult(true); - public void Dispose() { } + public void Destroy() { } public void Unload() { } } diff --git a/src/Providers/FileTime.Providers.Smb/SmbShare.cs b/src/Providers/FileTime.Providers.Smb/SmbShare.cs index e5a2142..0cd65b3 100644 --- a/src/Providers/FileTime.Providers.Smb/SmbShare.cs +++ b/src/Providers/FileTime.Providers.Smb/SmbShare.cs @@ -29,7 +29,7 @@ namespace FileTime.Providers.Smb public AsyncEventHandler Refreshed { get; } = new(); public IReadOnlyList Exceptions { get; } = new List().AsReadOnly(); - public bool IsDisposed => false; + public bool IsDestroyed => false; public bool SupportsDirectoryLevelSoftDelete => false; @@ -117,7 +117,7 @@ namespace FileTime.Providers.Smb { foreach (var item in _items) { - item.Dispose(); + item.Destroy(); } } @@ -171,7 +171,7 @@ namespace FileTime.Providers.Smb public Task Rename(string newName) => throw new NotSupportedException(); public Task CanOpen() => Task.FromResult(true); - public void Dispose() { } + public void Destroy() { } public void Unload() {