58 lines
1.4 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|
|
}
|