47 lines
1.1 KiB
C#
47 lines
1.1 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 _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()
|
|
{
|
|
TimeSpan total = TimeSpan.FromSeconds(Playlist.Songs.Sum(s => s.Song.Length.TotalSeconds));
|
|
Summary = $"{Playlist.Songs.Count} songs / {total:h\\:mm\\:ss}";
|
|
}
|
|
} |