tesses-cms/Tesses.CMS.Avalonia/Tesses.CMS.Avalonia/ViewModels/DownloadsPageViewModel.cs

55 lines
1.4 KiB
C#

namespace Tesses.CMS.Avalonia.ViewModels;
using System;
using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using LibVLCSharp.Shared;
public partial class DownloadsPageViewModel : ViewModelBase, IDisposable
{
public DownloadsPageViewModel(MainViewModel mvm)
{
foreach(var item in App.EnumerateDownloads())
{
ViewModelBaseItem vmbi=new ViewModelBaseItem();
vmbi.Item = new SavedDownloadViewModel(item,mvm);
Downloads.Add(vmbi);
}
foreach(var item in App.GetActiveDownloads())
{
var vmb=new ViewModelBaseItem();
vmb.Item = new ActiveDownloadViewModel(()=>{
if(Downloads.Contains(vmb)) Downloads.Remove(vmb);
},item);
Downloads.Add(vmb);
}
}
[ObservableProperty]
private ObservableCollection<ViewModelBaseItem> _downloads=new ObservableCollection<ViewModelBaseItem>();
public void Dispose()
{
foreach(var item in Downloads)
{
item.Dispose();
}
}
}
public class ViewModelBaseItem : IDisposable
{
public ViewModelBaseItem()
{
}
public ViewModelBase? Item {get;set;}
public void Dispose()
{
var i = Item as IDisposable;
i?.Dispose();
}
}