Skip to content

Commit

Permalink
#818 修复下载中页面部分错误
Browse files Browse the repository at this point in the history
  • Loading branch information
ywmoyue committed Oct 9, 2024
1 parent 4133047 commit 867bc22
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 54 deletions.
9 changes: 7 additions & 2 deletions src/BiliLite.UWP/Pages/DownloadPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,15 @@
</TextBlock>
</Grid>
</StackPanel>
<Button Grid.Column="1" Padding="0" Visibility="{x:Bind Path=ShowPause,Mode=OneWay}" Command="{x:Bind Path=PauseItemCommand}" CommandParameter="{x:Bind}" VerticalAlignment="Stretch" Background="Transparent" Width="36">
<Button Grid.Column="1" Padding="0" Visibility="{x:Bind Path=ShowPause,Mode=OneWay}"
Click="BtnPauseSubItem_OnClick"
VerticalAlignment="Stretch" Background="Transparent" Width="36">
<FontIcon FontSize="14" FontFamily="Segoe MDL2 Assets" Glyph="&#xE103;" />
</Button>
<Button Grid.Column="1" Padding="0" Visibility="{x:Bind Path=ShowStart,Mode=OneWay}" Command="{x:Bind Path=ResumeItemCommand}" CommandParameter="{x:Bind}" VerticalAlignment="Stretch" Background="Transparent" Width="36">
<Button Grid.Column="1" Padding="0"
Visibility="{x:Bind Path=ShowStart,Mode=OneWay}"
Click="BtnResumeSubItem_OnClick"
VerticalAlignment="Stretch" Background="Transparent" Width="36">
<FontIcon FontSize="14" FontFamily="Segoe MDL2 Assets" Glyph="&#xE118;" />
</Button>
</Grid>
Expand Down
16 changes: 16 additions & 0 deletions src/BiliLite.UWP/Pages/DownloadPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -334,5 +334,21 @@ private void SearchBox_OnQuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQue
m_downloadService.SearchDownloaded(keyword);
DownloadPivot.SelectedIndex = 1;
}

private void BtnPauseSubItem_OnClick(object sender, RoutedEventArgs e)
{
if (sender is Button { DataContext: DownloadingSubItemViewModel item })
{
m_downloadService.PauseItem(item);
}
}

private void BtnResumeSubItem_OnClick(object sender, RoutedEventArgs e)
{
if (sender is Button { DataContext: DownloadingSubItemViewModel item })
{
m_downloadService.ResumeItem(item);
}
}
}
}
82 changes: 42 additions & 40 deletions src/BiliLite.UWP/Services/DownloadService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,6 @@ public DownloadService(DownloadPageViewModel downloadPageViewModel, IMapper mapp
m_biliLiteDbContext = biliLiteDbContext;

m_downloadPageViewModel.RefreshDownloadedCommand = new RelayCommand(RefreshDownloaded);
m_downloadPageViewModel.PauseItemCommand = new RelayCommand<DownloadingSubItemViewModel>(PauseItem);
m_downloadPageViewModel.ResumeItemCommand = new RelayCommand<DownloadingSubItemViewModel>(ResumeItem);
m_downloadPageViewModel.DeleteItemCommand = new RelayCommand<DownloadingItemViewModel>(DeleteItem);
m_downloadPageViewModel.PauseCommand = new RelayCommand(PauseAll);
m_downloadPageViewModel.StartCommand = new RelayCommand(StartAll);
Expand Down Expand Up @@ -99,6 +97,7 @@ private async Task Handel(DownloadOperation downloadOperation, CancellationToken
var guid = downloadOperation.Guid.ToString();
var item = m_downloadPageViewModel.Downloadings.FirstOrDefault(x => x.Items.FirstOrDefault(y => y.GUID == guid) != null);
await Notify.ShowDialog("下载出现问题", $"失败视频:{item.Title ?? ""} {item.EpisodeTitle ?? ""}\r\n" + ex.Message);
// TODO: 启用重试策略
}
finally
{
Expand Down Expand Up @@ -176,40 +175,6 @@ private void RemoveItem(string guid, bool success = true)
}
}

/// <summary>
/// 暂停下载
/// </summary>
/// <param name="item"></param>
private void PauseItem(DownloadingSubItemViewModel item)
{
try
{
var downloadOperation = m_downloadOperations.FirstOrDefault(x => x.Guid.ToString().Equals(item.GUID));
downloadOperation.Pause();
}
catch (Exception ex)
{
_logger.Warn("暂停下载,未知错误", ex);
}
}

/// <summary>
/// 开始下载
/// </summary>
/// <param name="item"></param>
private void ResumeItem(DownloadingSubItemViewModel item)
{
try
{
var downloadOperation = m_downloadOperations.FirstOrDefault(x => x.Guid.ToString().Equals(item.GUID));
downloadOperation.Resume();
}
catch (Exception ex)
{
_logger.Warn("继续下载,未知错误", ex);
}
}

/// <summary>
/// 删除
/// </summary>
Expand All @@ -223,8 +188,13 @@ private async void DeleteItem(DownloadingItemViewModel data)
return;
}
m_loadDownloadingCts[data.EpisodeID].Cancel();
var folder = await StorageFolder.GetFolderFromPathAsync(data.Path);
await folder.DeleteAsync(StorageDeleteOption.PermanentDelete);
if (Directory.Exists(data.Path))
{
var folder = await StorageFolder.GetFolderFromPathAsync(data.Path);
await folder.DeleteAsync(StorageDeleteOption.PermanentDelete);
}

m_downloadPageViewModel.Downloadings.Remove(data);
RemoveDbSubItem(data.EpisodeID);
}
catch (Exception ex)
Expand Down Expand Up @@ -314,8 +284,6 @@ private void LoadDownloadingAddSubItemFromDownloadOperation(IList<DownloadingSub
Path = data.Path,
CID = data.CID,
GUID = data.GUID,
PauseItemCommand = m_downloadPageViewModel.PauseItemCommand,
ResumeItemCommand = m_downloadPageViewModel.ResumeItemCommand
});
}

Expand Down Expand Up @@ -398,6 +366,40 @@ public int CheckExist(string id, bool isSeason = false)
return 0;
}

/// <summary>
/// 暂停下载
/// </summary>
/// <param name="item"></param>
public void PauseItem(DownloadingSubItemViewModel item)
{
try
{
var downloadOperation = m_downloadOperations.FirstOrDefault(x => x.Guid.ToString().Equals(item.GUID));
downloadOperation.Pause();
}
catch (Exception ex)
{
_logger.Warn("暂停下载,未知错误", ex);
}
}

/// <summary>
/// 开始下载
/// </summary>
/// <param name="item"></param>
public void ResumeItem(DownloadingSubItemViewModel item)
{
try
{
var downloadOperation = m_downloadOperations.FirstOrDefault(x => x.Guid.ToString().Equals(item.GUID));
downloadOperation.Resume();
}
catch (Exception ex)
{
_logger.Warn("继续下载,未知错误", ex);
}
}

public void RemoveDbItem(string id)
{
var entity = m_biliLiteDbContext.DownloadedItems
Expand Down
6 changes: 0 additions & 6 deletions src/BiliLite.UWP/ViewModels/Download/DownloadPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,6 @@ public DownloadPageViewModel(IMapper mapper)
[DoNotNotify]
public ICommand DeleteItemCommand { get; set; }

[DoNotNotify]
public ICommand PauseItemCommand { get; set; }

[DoNotNotify]
public ICommand ResumeItemCommand { get; set; }

[DoNotNotify]
public ICommand RefreshDownloadedCommand { get; set; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,5 @@ public class DownloadingSubItemViewModel : BaseViewModel

[DependsOn(nameof(TotalBytes))]
public bool ShowStart { get { return Status != BackgroundTransferStatus.Running; } }

[DoNotNotify]
public ICommand PauseItemCommand { get; set; }

[DoNotNotify]
public ICommand ResumeItemCommand { get; set; }
}
}

0 comments on commit 867bc22

Please sign in to comment.