Files
client/Models/Printer.cs

82 lines
2.0 KiB
C#
Raw Normal View History

2026-05-23 18:16:50 +08:00
using CloudPrint.Client.Infrastructure;
namespace CloudPrint.Client.Models;
public enum PrinterStatus
{
Idle = 0,
Printing = 1,
Offline = 2,
Error = 3,
Unknown = 99
}
public sealed class PrinterInfo : ObservableObject
{
private PrinterStatus _status;
private int _queueCount;
private string _statusMessage = string.Empty;
public int Id { get; init; }
public string Name { get; init; } = string.Empty;
public string DisplayName { get; init; } = string.Empty;
public bool IsActive { get; init; } = true;
public string ApiKey { get; init; } = string.Empty;
public DateTime? LastHeartbeat { get; set; }
public int QueueCount
{
get => _queueCount;
set
{
if (SetProperty(ref _queueCount, Math.Max(0, value)))
{
OnPropertyChanged(nameof(DisplayText));
}
}
}
public string StatusMessage
{
get => _statusMessage;
set
{
if (SetProperty(ref _statusMessage, value))
{
OnPropertyChanged(nameof(DisplayText));
}
}
}
public PrinterStatus Status
{
get => _status;
set
{
if (SetProperty(ref _status, value))
{
OnPropertyChanged(nameof(StatusText));
OnPropertyChanged(nameof(DisplayText));
}
}
}
public string StatusText => Status switch
{
PrinterStatus.Idle => "空闲",
PrinterStatus.Printing => "打印中",
PrinterStatus.Offline => "离线",
PrinterStatus.Error => "异常",
_ => "未知"
};
public string DisplayText
{
get
{
var queueText = QueueCount > 0 ? $",队列 {QueueCount}" : string.Empty;
var messageText = string.IsNullOrWhiteSpace(StatusMessage) ? string.Empty : $"{StatusMessage}";
return $"{DisplayName}{StatusText}{queueText}{messageText}";
}
}
}