53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
using DataLayer;
|
|
using LibationFileManager;
|
|
using System;
|
|
|
|
namespace LibationUiBase.GridView
|
|
{
|
|
public class LastDownloadStatus : IComparable
|
|
{
|
|
public bool IsValid => LastDownloadedVersion is not null && LastDownloaded.HasValue;
|
|
public AudioFormat LastDownloadedFormat { get; }
|
|
public string LastDownloadedFileVersion { get; }
|
|
public Version LastDownloadedVersion { get; }
|
|
public DateTime? LastDownloaded { get; }
|
|
public string ToolTipText => IsValid ? $"Double click to open v{LastDownloadedVersion.ToVersionString()} release notes" : "";
|
|
|
|
public LastDownloadStatus() { }
|
|
public LastDownloadStatus(UserDefinedItem udi)
|
|
{
|
|
LastDownloadedVersion = udi.LastDownloadedVersion;
|
|
LastDownloadedFormat = udi.LastDownloadedFormat;
|
|
LastDownloadedFileVersion = udi.LastDownloadedFileVersion;
|
|
LastDownloaded = udi.LastDownloaded;
|
|
}
|
|
|
|
public void OpenReleaseUrl()
|
|
{
|
|
if (IsValid)
|
|
Dinah.Core.Go.To.Url($"{AppScaffolding.LibationScaffolding.RepositoryUrl}/releases/tag/v{LastDownloadedVersion.ToVersionString()}");
|
|
}
|
|
|
|
public override string ToString()
|
|
=> IsValid ? $"""
|
|
{dateString()} {versionString()}
|
|
{LastDownloadedFormat}
|
|
Libation v{LastDownloadedVersion.ToVersionString()}
|
|
""" : "";
|
|
|
|
private string versionString() => LastDownloadedFileVersion is string ver ? $"(File v.{ver})" : "";
|
|
|
|
//Call ToShortDateString to use current culture's date format.
|
|
private string dateString() => $"{LastDownloaded.Value.ToShortDateString()} {LastDownloaded.Value:HH:mm}";
|
|
|
|
public int CompareTo(object obj)
|
|
{
|
|
if (obj is not LastDownloadStatus second) return -1;
|
|
else if (IsValid && !second.IsValid) return -1;
|
|
else if (!IsValid && second.IsValid) return 1;
|
|
else if (!IsValid && !second.IsValid) return 0;
|
|
else return LastDownloaded.Value.CompareTo(second.LastDownloaded.Value);
|
|
}
|
|
}
|
|
}
|