using CommunityToolkit.Mvvm.ComponentModel;
using Cowain.Base.Models.Task;
using Ke.Bee.Localization.Localizer.Abstractions;
namespace Cowain.Base.ViewModels;
///
/// 任务类页面视图模型基类
///
public partial class TaskPageViewModelBase : PageViewModelBase
{
///
/// 本地化资源
///
protected ILocalizer L { get; }
///
/// 任务状态文本
///
[ObservableProperty]
private string? _taskStatusText;
public TaskPageViewModelBase(ILocalizer localizer)
{
L = localizer;
}
///
/// 设置任务准备状态
///
/// 任务总数
protected void SetPendingStatus(int tasksTotalCount)
{
SetTaskStatusText(TaskStatusEnum.Pending, tasksTotalCount);
}
///
/// 设置运行中状态
///
///
///
protected void SetRunningStatus(int currentTaskIndex, int tasksTotalCount)
{
SetTaskStatusText(TaskStatusEnum.Running, currentTaskIndex, tasksTotalCount);
}
///
/// 设置任务完成状态
///
protected void SetCompletedStatus()
{
SetTaskStatusText(TaskStatusEnum.Completed);
}
private void SetTaskStatusText(TaskStatusEnum taskStatusEnum, params object[] argments)
{
TaskStatusText = taskStatusEnum switch
{
TaskStatusEnum.Pending => string.Format(L["Task.TaskPendingStatusText"], argments),
TaskStatusEnum.Running => string.Format(L["Task.TaskRunningStatusText"], argments),
TaskStatusEnum.Completed => L["Task.TaskCompletedStatusText"],
_ => throw new InvalidTaskStatusException(nameof(taskStatusEnum))
};
}
}