Files
harmonia/Harmonia.WinUI/ViewModels/PlaylistItemViewModel.cs

62 lines
1.3 KiB
C#

using CommunityToolkit.Mvvm.ComponentModel;
using Harmonia.Core.Playlists;
using System;
using System.Linq;
namespace Harmonia.WinUI.ViewModels;
public partial class PlaylistItemViewModel : ObservableObject
{
public Playlist Playlist { get; private set; }
private string _name = string.Empty;
public string Name
{
get
{
return _name;
}
set
{
SetProperty(ref _name, value);
}
}
private string _summary = string.Empty;
public string Summary
{
get
{
return _summary;
}
set
{
SetProperty(ref _summary, value);
}
}
public PlaylistItemViewModel(Playlist playlist)
{
Playlist = playlist;
Playlist.PlaylistUpdated += OnPlaylistUpdated;
UpdateMetaData();
}
public void Unsubscribe()
{
Playlist.PlaylistUpdated -= OnPlaylistUpdated;
}
private void OnPlaylistUpdated(object? sender, EventArgs e)
{
UpdateMetaData();
}
private void UpdateMetaData()
{
Name = Playlist.Name ?? "Untitled Playlist";
TimeSpan total = TimeSpan.FromSeconds(Playlist.Songs.Sum(s => s.Song.Length.TotalSeconds));
Summary = $"{Playlist.Songs.Count} songs / {total:h\\:mm\\:ss}";
}
}