mirror of
https://github.com/real-zony/ZonyLrcToolsX.git
synced 2025-07-01 12:11:13 +00:00
feat: Completed the download lyrics feature.
This commit is contained in:
parent
81bf6ebe3f
commit
3b0c55ac00
@ -1,4 +1,5 @@
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Interactivity;
|
||||
@ -7,6 +8,7 @@ using DynamicData;
|
||||
using FluentAvalonia.UI.Controls;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using ZonyLrcTools.Common;
|
||||
using ZonyLrcTools.Common.Lyrics;
|
||||
using ZonyLrcTools.Desktop.Pages;
|
||||
using ZonyLrcTools.Desktop.ViewModels;
|
||||
|
||||
@ -41,6 +43,34 @@ public partial class MainView : UserControl
|
||||
_openFolderButton = this.FindControl<Button>("OpenFolderButton");
|
||||
if (_openFolderButton != null) _openFolderButton.Click += OnOpenFolderButtonClick;
|
||||
_downloadButton = this.FindControl<Button>("DownloadButton");
|
||||
if (_downloadButton != null) _downloadButton.Click += OnDownloadButtonClick;
|
||||
}
|
||||
|
||||
private async void OnDownloadButtonClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var downloader = App.Current.Services.GetRequiredService<ILyricsDownloader>();
|
||||
if (DataContext is HomeViewModel vm)
|
||||
{
|
||||
var needDownloadMusicInfos = vm.Songs
|
||||
.Where(x => x.DownloadStatus == DownloadStatus.NotStarted)
|
||||
.Select(x => x.Info)
|
||||
.ToList();
|
||||
|
||||
vm.DownloadProgress = 0;
|
||||
vm.MaxProgress = needDownloadMusicInfos.Count;
|
||||
|
||||
await downloader.DownloadAsync(needDownloadMusicInfos, callback: info =>
|
||||
{
|
||||
var song = vm.Songs.FirstOrDefault(x => x.Info == info);
|
||||
if (song != null)
|
||||
{
|
||||
song.DownloadStatus = DownloadStatus.Completed;
|
||||
}
|
||||
|
||||
vm.DownloadProgress++;
|
||||
return Task.CompletedTask;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private async void OnOpenFolderButtonClick(object? sender, RoutedEventArgs e)
|
||||
@ -55,6 +85,7 @@ public partial class MainView : UserControl
|
||||
SuggestedStartLocation = await storage.TryGetWellKnownFolderAsync(WellKnownFolder.Music)
|
||||
};
|
||||
var folders = await storage.OpenFolderPickerAsync(options);
|
||||
if (folders.Count == 0) return;
|
||||
var folderPath = folders[0].Path.LocalPath;
|
||||
var musicInfos = await musicInfoLoader.LoadAsync(folderPath);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user