Пример #1
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="PaginationManager{T}" /> class.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <param name="reclaimer">The reclaimer.</param>
        /// <param name="expiryComparer">The expiry comparer.</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <param name="maxPages">The maximum pages.</param>
        /// <param name="maxDeltas">The maximum deltas.</param>
        /// <param name="maxDistance">The maximum distance.</param>
        /// <param name="sectionContext">The section context.</param>
        public PaginationManager(
            IPagedSourceProvider <T> provider,
            IPageReclaimer <T> reclaimer       = null,
            IPageExpiryComparer expiryComparer = null,
            int pageSize          = 100,
            int maxPages          = 100,
            int maxDeltas         = -1,
            int maxDistance       = -1,
            string sectionContext = "")
        {
            this.PageSize    = pageSize;
            this.MaxPages    = maxPages;
            this.MaxDeltas   = maxDeltas;
            this.MaxDistance = maxDistance;
            if (provider is IPagedSourceProviderAsync <T> async)
            {
                this.ProviderAsync = async;
            }
            else
            {
                this.Provider = provider;
            }

            this._reclaimer = reclaimer ?? new PageReclaimOnTouched <T>();

            this.ExpiryComparer = expiryComparer;

            VirtualizationManager.Instance.AddAction(new ReclaimPagesWA(this, sectionContext));
        }
Пример #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="VirtualizingObservableCollection{T}" /> class.
 /// </summary>
 /// <param name="provider">The provider.</param>
 /// <param name="reclaimer">The optional reclaimer.</param>
 /// <param name="expiryComparer">The optional expiry comparer.</param>
 /// <param name="pageSize">Size of the page.</param>
 /// <param name="maxPages">The maximum pages.</param>
 /// <param name="maxDeltas">The maximum deltas.</param>
 /// <param name="maxDistance">The maximum distance.</param>
 public VirtualizingObservableReactiveCollection(
     IPagedSourceProvider <T> provider,
     IPageReclaimer <T> reclaimer       = null,
     IPageExpiryComparer expiryComparer = null,
     int pageSize    = 100,
     int maxPages    = 100,
     int maxDeltas   = -1,
     int maxDistance = -1) : base(provider, reclaimer, pageSize, maxPages, maxDeltas, maxDistance)
 {
 }
 public ConcurrentIObservableVirtualizingObservableCollection(
     IPagedSourceProvider <T> provider,
     IPageReclaimer <T> reclaimer       = null,
     IPageExpiryComparer expiryComparer = null,
     int pageSize    = 100,
     int maxPages    = 100,
     int maxDeltas   = -1,
     int maxDistance = -1) : base(provider, reclaimer, expiryComparer, pageSize, maxPages, maxDeltas, maxDistance)
 {
     throw new NotImplementedException();
 }
 /// <summary>
 ///     Initializes a new instance of the <see cref="VirtualizingObservableCollection{T}" /> class.
 /// </summary>
 /// <param name="provider">The provider.</param>
 /// <param name="reclaimer">The optional reclaimer.</param>
 /// <param name="expiryComparer">The optional expiry comparer.</param>
 /// <param name="pageSize">Size of the page.</param>
 /// <param name="maxPages">The maximum pages.</param>
 /// <param name="maxDeltas">The maximum deltas.</param>
 /// <param name="maxDistance">The maximum distance.</param>
 public VirtualizingObservableCollection(
     IPagedSourceProvider <T> provider,
     IPageReclaimer <T> reclaimer       = null,
     IPageExpiryComparer expiryComparer = null,
     int pageSize    = 100,
     int maxPages    = 100,
     int maxDeltas   = -1,
     int maxDistance = -1) : this()
 {
     this.Provider = new PaginationManager <T>(provider, reclaimer, expiryComparer, pageSize, maxPages, maxDeltas, maxDistance);
 }
Пример #5
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="VirtualizingObservableCollection{T}" /> class.
 /// </summary>
 /// <param name="provider">The provider.</param>
 /// <param name="reclaimer">The optional reclaimer.</param>
 /// <param name="expiryComparer">The optional expiry comparer.</param>
 /// <param name="pageSize">Size of the page.</param>
 /// <param name="maxPages">The maximum pages.</param>
 /// <param name="maxDeltas">The maximum deltas.</param>
 /// <param name="maxDistance">The maximum distance.</param>
 /// //TODO Check implementation
 public VirtualizingObservableReactiveCollection(
     IPagedSourceObservableProvider <T> provider,
     IPageReclaimer <T> reclaimer       = null,
     IPageExpiryComparer expiryComparer = null,
     int pageSize    = 100,
     int maxPages    = 100,
     int maxDeltas   = -1,
     int maxDistance = -1) : base(provider, reclaimer, pageSize, maxPages, maxDeltas, maxDistance)
 {
     (this.Provider as PaginationManager <T>).CollectionChanged += this.VirtualizingObservableCollection_CollectionChanged;
     this.IsSourceObservable = true;
 }
Пример #6
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="PaginationManager{T}" /> class.
 /// </summary>
 /// <param name="provider">The provider.</param>
 /// <param name="reclaimer">The reclaimer.</param>
 /// <param name="expiryComparer">The expiry comparer.</param>
 /// <param name="pageSize">Size of the page.</param>
 /// <param name="maxPages">The maximum pages.</param>
 /// <param name="maxDeltas">The maximum deltas.</param>
 /// <param name="maxDistance">The maximum distance.</param>
 /// <param name="sectionContext">The section context.</param>
 public PaginationManager(
     IPagedSourceObservableProvider <T> provider,
     IPageReclaimer <T> reclaimer       = null,
     IPageExpiryComparer expiryComparer = null,
     int pageSize          = 100,
     int maxPages          = 100,
     int maxDeltas         = -1,
     int maxDistance       = -1,
     string sectionContext = "") : this(provider as IPagedSourceProvider <T>, reclaimer, expiryComparer, pageSize,
                                        maxPages, maxDeltas, maxDistance, sectionContext)
 {
     provider.CollectionChanged += this.OnProviderCollectionChanged;
 }
Пример #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PaginationManager{T}" /> class.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <param name="reclaimer">The reclaimer.</param>
        /// <param name="expiryComparer">The expiry comparer.</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <param name="maxPages">The maximum pages.</param>
        /// <param name="maxDeltas">The maximum deltas.</param>
        /// <param name="maxDistance">The maximum distance.</param>
        /// <param name="sectionContext">The section context.</param>
        public PaginationManager(IPagedSourceProvider <T> provider,
                                 IPageReclaimer <T> reclaimer       = null,
                                 IPageExpiryComparer expiryComparer = null,
                                 int pageSize                  = 100,
                                 int maxPages                  = 100,
                                 int maxDeltas                 = -1,
                                 int maxDistance               = -1,
                                 string sectionContext         = "",
                                 TimeSpan?delayBetweenReclaims = null)
        {
            this.PageSize    = pageSize;
            this.MaxPages    = maxPages;
            this.MaxDeltas   = maxDeltas;
            this.MaxDistance = maxDistance;

            if (provider is IPagedSourceProviderAsync <T> )
            {
                this.ProviderAsync = (IPagedSourceProviderAsync <T>)provider;
            }
            else
            {
                this.Provider = provider;
            }

            if (reclaimer != null)
            {
                _Reclaimer = reclaimer;
            }
            else
            {
                _Reclaimer = new PageReclaimOnTouched <T>();
            }

            this.ExpiryComparer = expiryComparer;

            VirtualizationManager.Instance.AddAction(new ReclaimPagesWA(this, sectionContext, delayBetweenReclaims));
        }