using DownKyi.Core.BiliApi.VideoStream.Models; using DownKyi.Images; using DownKyi.Models; using DownKyi.Utils; using Prism.Commands; namespace DownKyi.ViewModels.DownloadManager { public class DownloadingItem : DownloadBaseItem { public DownloadingItem() : base() { // 暂停继续按钮 StartOrPause = ButtonIcon.Instance().Pause; StartOrPause.Fill = DictionaryResource.GetColor("ColorPrimary"); // 删除按钮 Delete = ButtonIcon.Instance().Delete; Delete.Fill = DictionaryResource.GetColor("ColorPrimary"); } // model数据 public Downloading Downloading { get; set; } // 视频流链接 public PlayUrl PlayUrl { get; set; } // 正在下载内容(音频、视频、弹幕、字幕、封面) public string DownloadContent { get => Downloading.DownloadContent; set { Downloading.DownloadContent = value; RaisePropertyChanged("DownloadContent"); } } // 下载状态显示 public string DownloadStatusTitle { get => Downloading.DownloadStatusTitle; set { Downloading.DownloadStatusTitle = value; RaisePropertyChanged("DownloadStatusTitle"); } } // 下载进度 public float Progress { get => Downloading.Progress; set { Downloading.Progress = value; RaisePropertyChanged("Progress"); } } // 已下载大小/文件大小 public string DownloadingFileSize { get => Downloading.DownloadingFileSize; set { Downloading.DownloadingFileSize = value; RaisePropertyChanged("DownloadingFileSize"); } } // 下载速度 public string SpeedDisplay { get => Downloading.SpeedDisplay; set { Downloading.SpeedDisplay = value; RaisePropertyChanged("SpeedDisplay"); } } #region 控制按钮 private VectorImage startOrPause; public VectorImage StartOrPause { get => startOrPause; set => SetProperty(ref startOrPause, value); } private VectorImage delete; public VectorImage Delete { get => delete; set => SetProperty(ref delete, value); } #endregion #region 命令申明 // 下载列表暂停继续事件 private DelegateCommand startOrPauseCommand; public DelegateCommand StartOrPauseCommand => startOrPauseCommand ?? (startOrPauseCommand = new DelegateCommand(ExecuteStartOrPauseCommand)); /// /// 下载列表暂停继续事件 /// private void ExecuteStartOrPauseCommand() { switch (Downloading.DownloadStatus) { case DownloadStatus.NOT_STARTED: case DownloadStatus.WAIT_FOR_DOWNLOAD: Downloading.DownloadStatus = DownloadStatus.PAUSE_STARTED; StartOrPause = ButtonIcon.Instance().Start; StartOrPause.Fill = DictionaryResource.GetColor("ColorPrimary"); break; case DownloadStatus.PAUSE_STARTED: Downloading.DownloadStatus = DownloadStatus.WAIT_FOR_DOWNLOAD; StartOrPause = ButtonIcon.Instance().Pause; StartOrPause.Fill = DictionaryResource.GetColor("ColorPrimary"); break; case DownloadStatus.PAUSE: Downloading.DownloadStatus = DownloadStatus.DOWNLOADING; StartOrPause = ButtonIcon.Instance().Pause; StartOrPause.Fill = DictionaryResource.GetColor("ColorPrimary"); break; case DownloadStatus.DOWNLOADING: Downloading.DownloadStatus = DownloadStatus.PAUSE; StartOrPause = ButtonIcon.Instance().Start; StartOrPause.Fill = DictionaryResource.GetColor("ColorPrimary"); break; case DownloadStatus.DOWNLOAD_SUCCEED: // 下载成功后会从下载列表中删除 // 不会出现此分支 break; case DownloadStatus.DOWNLOAD_FAILED: Downloading.DownloadStatus = DownloadStatus.WAIT_FOR_DOWNLOAD; StartOrPause = ButtonIcon.Instance().Pause; StartOrPause.Fill = DictionaryResource.GetColor("ColorPrimary"); break; default: break; } } // 下载列表删除事件 private DelegateCommand deleteCommand; public DelegateCommand DeleteCommand => deleteCommand ?? (deleteCommand = new DelegateCommand(ExecuteDeleteCommand)); /// /// 下载列表删除事件 /// private void ExecuteDeleteCommand() { App.DownloadingList.Remove(this); } #endregion } }