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.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
@ -7,6 +8,7 @@ using DynamicData;
|
|||||||
using FluentAvalonia.UI.Controls;
|
using FluentAvalonia.UI.Controls;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using ZonyLrcTools.Common;
|
using ZonyLrcTools.Common;
|
||||||
|
using ZonyLrcTools.Common.Lyrics;
|
||||||
using ZonyLrcTools.Desktop.Pages;
|
using ZonyLrcTools.Desktop.Pages;
|
||||||
using ZonyLrcTools.Desktop.ViewModels;
|
using ZonyLrcTools.Desktop.ViewModels;
|
||||||
|
|
||||||
@ -41,6 +43,34 @@ public partial class MainView : UserControl
|
|||||||
_openFolderButton = this.FindControl<Button>("OpenFolderButton");
|
_openFolderButton = this.FindControl<Button>("OpenFolderButton");
|
||||||
if (_openFolderButton != null) _openFolderButton.Click += OnOpenFolderButtonClick;
|
if (_openFolderButton != null) _openFolderButton.Click += OnOpenFolderButtonClick;
|
||||||
_downloadButton = this.FindControl<Button>("DownloadButton");
|
_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)
|
private async void OnOpenFolderButtonClick(object? sender, RoutedEventArgs e)
|
||||||
@ -55,6 +85,7 @@ public partial class MainView : UserControl
|
|||||||
SuggestedStartLocation = await storage.TryGetWellKnownFolderAsync(WellKnownFolder.Music)
|
SuggestedStartLocation = await storage.TryGetWellKnownFolderAsync(WellKnownFolder.Music)
|
||||||
};
|
};
|
||||||
var folders = await storage.OpenFolderPickerAsync(options);
|
var folders = await storage.OpenFolderPickerAsync(options);
|
||||||
|
if (folders.Count == 0) return;
|
||||||
var folderPath = folders[0].Path.LocalPath;
|
var folderPath = folders[0].Path.LocalPath;
|
||||||
var musicInfos = await musicInfoLoader.LoadAsync(folderPath);
|
var musicInfos = await musicInfoLoader.LoadAsync(folderPath);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user