Files
Libation/Source/LibationUiBase/BookDataViewModel.cs
2026-01-02 13:04:35 -07:00

47 lines
1.5 KiB
C#

using DataLayer;
using LibationUiBase.ProcessQueue;
namespace LibationUiBase;
public class BookDataViewModel : ReactiveObject
{
public LibraryBook LibraryBook { get; }
public BookDataViewModel(LibraryBook libraryBook)
{
LibraryBook = libraryBook;
Asin = libraryBook.Book.AudibleProductId;
Title = libraryBook.Book.Title;
}
public string Asin { get; }
public string Title { get; }
public string? FoundFile { get => field; set => RaiseAndSetIfChanged(ref field, value); }
public string? Codec { get => field; set => RaiseAndSetIfChanged(ref field, value); }
public string? AvailableCodec { get => field; set => RaiseAndSetIfChanged(ref field, value); }
public int Bitrate
{
get => field;
set
{
RaiseAndSetIfChanged(ref field, value);
BitrateString = GetBitrateString(value);
}
}
public int AvailableBitrate
{
get => field;
set
{
RaiseAndSetIfChanged(ref field, value);
AvailableBitrateString = GetBitrateString(value);
var diff = (double)AvailableBitrate / Bitrate;
IsSignificant = diff >= 1.15;
}
}
public string? BitrateString { get => field; private set => RaiseAndSetIfChanged(ref field, value); }
public string? AvailableBitrateString { get => field; private set => RaiseAndSetIfChanged(ref field, value); }
public bool IsSignificant { get => field; private set => RaiseAndSetIfChanged(ref field, value); }
public ProcessBookStatus ScanStatus { get => field; set => RaiseAndSetIfChanged(ref field, value); }
private static string? GetBitrateString(int bitrate) => bitrate > 0 ? $"{bitrate} kbps" : null;
}