Files
FileTime/src/GuiApp/FileTime.Avalonia/Models/RootDriveInfo.cs
2022-02-04 00:49:25 +01:00

56 lines
1.4 KiB
C#

using FileTime.Core.Models;
using FileTime.Providers.Local;
using MvvmGen;
using System.IO;
using System.Runtime.InteropServices;
namespace FileTime.Avalonia.Models
{
[ViewModel]
public partial class RootDriveInfo
{
private readonly DriveInfo _driveInfo;
private readonly IContainer _container;
[Property]
private string _name;
[Property]
private string _fullName;
[Property]
private string _label;
[Property]
private long _size;
[Property]
private long _free;
[Property]
private long _used;
[PropertyInvalidate(nameof(Used))]
[PropertyInvalidate(nameof(Size))]
public long UsedPercentage => Size == 0 ? 0 : Used * 100 / Size;
public RootDriveInfo(DriveInfo driveInfo, IContainer container)
{
_driveInfo = driveInfo;
_container = container;
Refresh();
}
private void Refresh()
{
Name = _container.Name;
FullName = _container is LocalContentProvider ? "/" : _container.FullName;
Label = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? _driveInfo.VolumeLabel : null;
Size = _driveInfo.TotalSize;
Free = _driveInfo.AvailableFreeSpace;
Used = _driveInfo.TotalSize - _driveInfo.AvailableFreeSpace;
}
}
}