// Token: 0x06007152 RID: 29010 RVA: 0x00206DD8 File Offset: 0x00204FD8 private void FirePageCacheChangedEvent(List <PageCacheChange> changes) { if (this.PageCacheChanged != null && changes != null && changes.Count > 0) { PageCacheChangedEventArgs e = new PageCacheChangedEventArgs(changes); this.PageCacheChanged(this, e); } }
/// <summary> /// Fires the PageCacheChanged event with the specified changelist. /// </summary> /// <param name="changes">The changes to pass along with the event.</param> private void FirePageCacheChangedEvent(List <PageCacheChange> changes) { Debug.Assert(changes != null, "Attempt to fire PageCacheChangedEvent with null change set."); //Fire off our PageCacheChangedEvent if we have any changes if (PageCacheChanged != null && changes != null && changes.Count > 0) { PageCacheChangedEventArgs args = new PageCacheChangedEventArgs(changes); PageCacheChanged(this, args); } }
/// <summary> /// Event Handler for the PageCacheChanged event. Called whenever an entry in the /// PageCache is changed. When this happens, the RowCache needs to Add, Remove, or /// Update row entries corresponding to the pages changed. /// </summary> /// <param name="sender">The object that sent this event.</param> /// <param name="args">The associated arguments.</param> private void OnPageCacheChanged(object sender, PageCacheChangedEventArgs args) { //If we have a computed layout then we'll add/remove/frob rows to conform //to that layout. if (_isLayoutCompleted) { List<RowCacheChange> changes = new List<RowCacheChange>(args.Changes.Count); for (int i = 0; i < args.Changes.Count; i++) { PageCacheChange pageChange = args.Changes[i]; switch (pageChange.Type) { case PageCacheChangeType.Add: case PageCacheChangeType.Update: if (pageChange.Start > LastPageInCache) { //Completely new pages, so we add new cache entries RowCacheChange change = AddPageRange(pageChange.Start, pageChange.Count); if (change != null) { changes.Add(change); } } else { if (pageChange.Start + pageChange.Count - 1 <= LastPageInCache) { //All pre-existing pages, so we just update the current cache entries. RowCacheChange change = UpdatePageRange(pageChange.Start, pageChange.Count); if (change != null) { changes.Add(change); } } else { //Some pre-existing pages, some new. RowCacheChange change; change = UpdatePageRange(pageChange.Start, LastPageInCache - pageChange.Start); if (change != null) { changes.Add(change); } change = AddPageRange(LastPageInCache + 1, pageChange.Count - (LastPageInCache - pageChange.Start)); if (change != null) { changes.Add(change); } } } break; case PageCacheChangeType.Remove: //If PageCount is now less than the size of our cache due to repagination //we remove the corresponding entries from our row cache. if (PageCache.PageCount - 1 < LastPageInCache) { //Remove pages starting at the first no-longer-existent page. //(PageCache.PageCount now points to the first dead page) RowCacheChange change = TrimPageRange(PageCache.PageCount); if (change != null) { changes.Add(change); } } //If because of the above trimming we have fewer pages left //in the document than the columns that were initially requested //We'll need to recalc our layout from scratch. //First we check to see if we have one or fewer rows left. if (_rowCache.Count <= 1) { //If we have either no rows left or the remaining row has //less than _layoutColumns pages on it, we need to recalc from the first page. if (_rowCache.Count == 0 || _rowCache[0].PageCount < _layoutColumns ) { RecalcRows(0, _layoutColumns); } } break; default: throw new ArgumentOutOfRangeException("args"); } } RowCacheChangedEventArgs newArgs = new RowCacheChangedEventArgs(changes); RowCacheChanged(this, newArgs); } else if (_isLayoutRequested) { //We've had a request to create a layout previously, but didn't have enough pages to do so before. //Try it now. RecalcRows(_layoutPivotPage, _layoutColumns); } }
/// <summary> /// Fires the PageCacheChanged event with the specified changelist. /// </summary> /// <param name="changes">The changes to pass along with the event.</param> private void FirePageCacheChangedEvent(List<PageCacheChange> changes) { Debug.Assert(changes != null, "Attempt to fire PageCacheChangedEvent with null change set."); //Fire off our PageCacheChangedEvent if we have any changes if (PageCacheChanged != null && changes != null && changes.Count > 0) { PageCacheChangedEventArgs args = new PageCacheChangedEventArgs(changes); PageCacheChanged(this, args); } }
// Token: 0x060071E1 RID: 29153 RVA: 0x00209034 File Offset: 0x00207234 private void OnPageCacheChanged(object sender, PageCacheChangedEventArgs args) { if (this._isLayoutCompleted) { List <RowCacheChange> list = new List <RowCacheChange>(args.Changes.Count); for (int i = 0; i < args.Changes.Count; i++) { PageCacheChange pageCacheChange = args.Changes[i]; switch (pageCacheChange.Type) { case PageCacheChangeType.Add: case PageCacheChangeType.Update: if (pageCacheChange.Start > this.LastPageInCache) { RowCacheChange rowCacheChange = this.AddPageRange(pageCacheChange.Start, pageCacheChange.Count); if (rowCacheChange != null) { list.Add(rowCacheChange); } } else if (pageCacheChange.Start + pageCacheChange.Count - 1 <= this.LastPageInCache) { RowCacheChange rowCacheChange2 = this.UpdatePageRange(pageCacheChange.Start, pageCacheChange.Count); if (rowCacheChange2 != null) { list.Add(rowCacheChange2); } } else { RowCacheChange rowCacheChange3 = this.UpdatePageRange(pageCacheChange.Start, this.LastPageInCache - pageCacheChange.Start); if (rowCacheChange3 != null) { list.Add(rowCacheChange3); } rowCacheChange3 = this.AddPageRange(this.LastPageInCache + 1, pageCacheChange.Count - (this.LastPageInCache - pageCacheChange.Start)); if (rowCacheChange3 != null) { list.Add(rowCacheChange3); } } break; case PageCacheChangeType.Remove: if (this.PageCache.PageCount - 1 < this.LastPageInCache) { RowCacheChange rowCacheChange4 = this.TrimPageRange(this.PageCache.PageCount); if (rowCacheChange4 != null) { list.Add(rowCacheChange4); } } if (this._rowCache.Count <= 1 && (this._rowCache.Count == 0 || this._rowCache[0].PageCount < this._layoutColumns)) { this.RecalcRows(0, this._layoutColumns); } break; default: throw new ArgumentOutOfRangeException("args"); } } RowCacheChangedEventArgs e = new RowCacheChangedEventArgs(list); this.RowCacheChanged(this, e); return; } if (this._isLayoutRequested) { this.RecalcRows(this._layoutPivotPage, this._layoutColumns); } }