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)) }; } }