public ListViewBestFitQueue.ListViewBestFitRequest Dequeue( ListViewDetailColumn column) { if (column == null) { throw new ArgumentNullException(nameof(column)); } if (column.Owner.ViewElement != this.detailListView) { throw new ArgumentException("Column " + (object)column + " is not owned by the current GridViewTemplate."); } ListViewBestFitQueue.ListViewBestFitRequest viewBestFitRequest = new ListViewBestFitQueue.ListViewBestFitRequest(ListViewBestFitQueue.BestFitOperation.BestFitColumn, column); if (this.bestFitRequests.Contains(ListViewBestFitQueue.BestFitAllColumns)) { this.bestFitRequests.Clear(); foreach (ListViewDetailColumn column1 in (Collection <ListViewDetailColumn>) this.detailListView.Owner.Columns) { if (column1 != column) { this.bestFitRequests.AddLast(new ListViewBestFitQueue.ListViewBestFitRequest(ListViewBestFitQueue.BestFitOperation.BestFitColumn, column1)); } } } else { this.bestFitRequests.Remove(viewBestFitRequest); } return(viewBestFitRequest); }
public ListViewBestFitQueue.ListViewBestFitRequest Dequeue() { if (this.bestFitRequests.First == null) { return((ListViewBestFitQueue.ListViewBestFitRequest)null); } ListViewBestFitQueue.ListViewBestFitRequest viewBestFitRequest = this.bestFitRequests.First.Value; this.bestFitRequests.RemoveFirst(); return(viewBestFitRequest); }
public void ProcessRequests() { if (this.processing > 0 || this.DetailListView == null || this.DetailListView.ViewElement == null) { return; } ++this.processing; if (this.BestFitQueue.Count == 0 || !this.DetailListView.CanBestFit()) { --this.processing; } else { this.DetailListView.UpdateLayout(); if (this.DetailListView.Children.Count == 0 || this.DetailListView.Owner.Columns.Count == 0) { --this.processing; } else if (this.DetailListView.DesiredSize == SizeF.Empty) { this.DetailListView.UpdateLayout(); --this.processing; } else { this.updateItemsHeight = false; while (this.BestFitQueue.Count > 0) { ListViewBestFitQueue.ListViewBestFitRequest viewBestFitRequest = this.BestFitQueue.Dequeue(); ListViewBestFitColumnMode?autoSizeMode = viewBestFitRequest.AutoSizeMode; if (viewBestFitRequest.Operation == ListViewBestFitQueue.BestFitOperation.BestFitAllColumns) { this.BestFitColumnsCore(autoSizeMode); } else { ListViewBestFitColumnMode mode = autoSizeMode.HasValue ? autoSizeMode.Value : viewBestFitRequest.Column.AutoSizeMode; this.BestFitColumnCore(viewBestFitRequest.Column, mode); } } this.UpdateLayout(); --this.processing; } } }
private void ClearBestFitColumnRequests(ListViewBestFitColumnMode?mode) { LinkedListNode <ListViewBestFitQueue.ListViewBestFitRequest> previous; for (LinkedListNode <ListViewBestFitQueue.ListViewBestFitRequest> node = this.bestFitRequests.Last; node != null; node = previous) { ListViewBestFitQueue.ListViewBestFitRequest viewBestFitRequest = node.Value; previous = node.Previous; if (viewBestFitRequest.Operation != ListViewBestFitQueue.BestFitOperation.BestFitColumn) { ListViewBestFitColumnMode?autoSizeMode = viewBestFitRequest.AutoSizeMode; ListViewBestFitColumnMode?nullable = mode; if ((autoSizeMode.GetValueOrDefault() != nullable.GetValueOrDefault() ? 0 : (autoSizeMode.HasValue == nullable.HasValue ? 1 : 0)) == 0) { continue; } } this.bestFitRequests.Remove(node); } }
public void EnqueueBestFitColumn(ListViewDetailColumn column) { if (column == null) { throw new ArgumentNullException(nameof(column)); } if (column.Owner.ViewElement != this.detailListView) { throw new ArgumentException("Column " + (object)column + " is from different ListViewElement"); } if (!column.Visible) { return; } ListViewBestFitQueue.ListViewBestFitRequest viewBestFitRequest = new ListViewBestFitQueue.ListViewBestFitRequest(ListViewBestFitQueue.BestFitOperation.BestFitColumn, column); if (this.bestFitRequests.Contains(ListViewBestFitQueue.BestFitAllColumns) || this.bestFitRequests.Contains(viewBestFitRequest)) { return; } this.bestFitRequests.AddLast(viewBestFitRequest); }