Refactor, Design, ContextMenu
This commit is contained in:
@@ -8,9 +8,7 @@ namespace FileTime.Providers.Local
|
||||
{
|
||||
public class LocalFile : IElement
|
||||
{
|
||||
private readonly FileInfo _file;
|
||||
|
||||
public FileInfo File => _file;
|
||||
public FileInfo File { get; }
|
||||
|
||||
public string Name { get; }
|
||||
|
||||
@@ -18,26 +16,46 @@ namespace FileTime.Providers.Local
|
||||
|
||||
public IContentProvider Provider { get; }
|
||||
|
||||
public bool IsHidden => (_file.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden;
|
||||
public bool IsHidden => (File.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden;
|
||||
public bool IsSpecial =>
|
||||
RuntimeInformation.IsOSPlatform(OSPlatform.Linux)
|
||||
&& (new UnixFileInfo(_file.FullName).FileAccessPermissions & FileAccessPermissions.UserExecute) == FileAccessPermissions.UserExecute;
|
||||
&& (new UnixFileInfo(File.FullName).FileAccessPermissions & FileAccessPermissions.UserExecute) == FileAccessPermissions.UserExecute;
|
||||
|
||||
public string Attributes => GetAttributes();
|
||||
|
||||
public DateTime CreatedAt => File.CreationTime;
|
||||
|
||||
public LocalFile(FileInfo file, IContentProvider contentProvider)
|
||||
{
|
||||
_file = file;
|
||||
File = file;
|
||||
|
||||
Name = file.Name;
|
||||
FullName = file.FullName;
|
||||
Provider = contentProvider;
|
||||
}
|
||||
|
||||
public string GetPrimaryAttributeText() => _file.Length.ToSizeString();
|
||||
public string GetPrimaryAttributeText() => File.Length.ToSizeString();
|
||||
|
||||
public Task Delete()
|
||||
{
|
||||
_file.Delete();
|
||||
File.Delete();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public string GetAttributes()
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "-"
|
||||
+ ((File.Attributes & FileAttributes.Archive) == FileAttributes.Archive ? "a" : "-")
|
||||
+ ((File.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly ? "r" : "-")
|
||||
+ ((File.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden ? "h" : "-")
|
||||
+ ((File.Attributes & FileAttributes.System) == FileAttributes.System ? "s" : "-");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Runtime.InteropServices;
|
||||
using AsyncEvent;
|
||||
using FileTime.Core.Models;
|
||||
using FileTime.Core.Providers;
|
||||
@@ -21,6 +22,9 @@ namespace FileTime.Providers.Local
|
||||
public string FullName { get; }
|
||||
|
||||
public AsyncEventHandler Refreshed { get; } = new();
|
||||
public string Attributes => GetAttributes();
|
||||
|
||||
public DateTime CreatedAt => Directory.CreationTime;
|
||||
|
||||
public LocalFolder(DirectoryInfo directory, LocalContentProvider contentProvider, IContainer? parent)
|
||||
{
|
||||
@@ -111,5 +115,21 @@ namespace FileTime.Providers.Local
|
||||
Directory.Delete(true);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public string GetAttributes()
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "d"
|
||||
+ ((Directory.Attributes & FileAttributes.Archive) == FileAttributes.Archive ? "a" : "-")
|
||||
+ ((Directory.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly ? "r" : "-")
|
||||
+ ((Directory.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden ? "h" : "-")
|
||||
+ ((Directory.Attributes & FileAttributes.System) == FileAttributes.System ? "s" : "-");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user