Gallery/Gallery.Share/Services/GalleryCollection.cs
2021-08-10 17:17:32 +08:00

58 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using Gallery.Resources.UI;
using Gallery.Util.Model;
using Xamarin.Essentials;
namespace Gallery.Services
{
public class GalleryCollection : List<GalleryItem>, ICollectionChanged
{
private static GalleryCollection empty;
public static GalleryCollection Empty
{
get
{
if (empty == null)
{
empty = new GalleryCollection();
}
return empty;
}
}
public event EventHandler<CollectionChangedEventArgs> CollectionChanged;
public bool Running { get; set; }
public GalleryCollection() : base()
{
Running = true;
}
public GalleryCollection(IEnumerable<GalleryItem> gallery) : base(gallery)
{
Running = true;
}
public void AddRange(List<GalleryItem> items)
{
var e = new CollectionChangedEventArgs
{
NewStartingIndex = Count,
NewItems = items
};
base.AddRange(items);
if (MainThread.IsMainThread)
{
CollectionChanged?.Invoke(this, e);
}
else
{
MainThread.BeginInvokeOnMainThread(() => CollectionChanged?.Invoke(this, e));
}
}
}
}