protected virtual void BestFitColumnsCore(ListViewBestFitColumnMode?mode) { ListViewBestFitColumnMode?nullable = mode; if ((nullable.GetValueOrDefault() != ListViewBestFitColumnMode.None ? 0 : (nullable.HasValue ? 1 : 0)) != 0) { return; } float[] numArray = new float[this.DetailListView.Owner.Columns.Count]; int index1 = -1; foreach (ListViewDetailColumn column in (Collection <ListViewDetailColumn>) this.DetailListView.Owner.Columns) { ++index1; ListViewBestFitColumnMode mode1 = mode.HasValue ? mode.Value : column.AutoSizeMode; if (column.Visible && mode1 != ListViewBestFitColumnMode.None) { float columnWidth = this.CalculateColumnWidth(column, mode1); float val1 = numArray[index1]; numArray[index1] = Math.Max(val1, columnWidth); } } for (int index2 = 0; index2 < numArray.Length; ++index2) { ListViewDetailColumn column = this.DetailListView.Owner.Columns[index2]; if (column != null && column.Visible && column.AutoSizeMode != ListViewBestFitColumnMode.None) { this.SetColumnWidth(column, numArray[index2]); } } }
public ListViewBestFitRequest( ListViewBestFitQueue.BestFitOperation operation, ListViewBestFitColumnMode mode) : this(operation) { this.autoSizeMode = new ListViewBestFitColumnMode?(mode); }
protected virtual float CalculateColumnWidth( ListViewDetailColumn column, ListViewBestFitColumnMode mode) { IVirtualizedElementProvider <ListViewDataItem> elementProvider = this.DetailListView.Scroller.ElementProvider; float val1 = 0.0f; if (mode == ListViewBestFitColumnMode.HeaderCells || mode == ListViewBestFitColumnMode.AllCells) { DetailListViewHeaderCellElement element = this.DetailListView.ColumnScroller.ElementProvider.GetElement(column, (object)null) as DetailListViewHeaderCellElement; this.DetailListView.ColumnContainer.Children.Add((RadElement)element); element.Attach(column, (object)null); element.ResetLayout(true); val1 = Math.Max(val1, this.GetCellDesiredWidth((DetailListViewCellElement)element)); this.DetailListView.ColumnContainer.Children.Remove((RadElement)element); this.Detach(this.DetailListView.ColumnScroller.ElementProvider, (DetailListViewCellElement)element); if (mode == ListViewBestFitColumnMode.HeaderCells) { return(val1); } } IEnumerator <ListViewDataItem> enumerator = (IEnumerator <ListViewDataItem>)null; if (mode == ListViewBestFitColumnMode.DataCells || mode == ListViewBestFitColumnMode.AllCells) { enumerator = (IEnumerator <ListViewDataItem>) new ListViewTraverser(this.DetailListView.Owner); } enumerator.Reset(); while (enumerator.MoveNext()) { ListViewDataItem current = enumerator.Current; if (this.CanBestFitItem(current)) { DetailListViewVisualItem element1 = elementProvider.GetElement(current, (object)null) as DetailListViewVisualItem; element1.Attach(current, (object)null); this.DetailListView.ColumnContainer.Children.Add((RadElement)element1); IVirtualizedElementProvider <ListViewDetailColumn> cellElementProvider = (IVirtualizedElementProvider <ListViewDetailColumn>) new DetailListViewDataCellElementProvider(element1); DetailListViewCellElement element2 = cellElementProvider.GetElement(column, (object)element1) as DetailListViewCellElement; element1.Children.Add((RadElement)element2); element2.Attach(column, (object)element1); element2.ResetLayout(true); val1 = Math.Max(val1, this.GetCellDesiredWidth(element2)); element1.Children.Remove((RadElement)element2); this.DetailListView.ColumnContainer.Children.Remove((RadElement)element1); this.Detach(cellElementProvider, element2); this.Detach(elementProvider, element1); } } return(val1); }
protected virtual void BestFitColumnCore( ListViewDetailColumn column, ListViewBestFitColumnMode mode) { if (column == null) { throw new ArgumentNullException(nameof(column)); } if (mode == ListViewBestFitColumnMode.None || !column.Visible) { return; } float columnWidth = this.CalculateColumnWidth(column, mode); this.SetColumnWidth(column, columnWidth); }
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; } } }
public void EnqueueBestFitColumns(ListViewBestFitColumnMode mode) { this.ClearBestFitColumnRequests(new ListViewBestFitColumnMode?(mode)); this.bestFitRequests.AddLast(new ListViewBestFitQueue.ListViewBestFitRequest(ListViewBestFitQueue.BestFitOperation.BestFitAllColumns, mode)); }
public void BestFitColumns(ListViewBestFitColumnMode mode) { this.BestFitQueue.EnqueueBestFitColumns(mode); this.ProcessRequests(); }
public void BestFitColumns(ListViewBestFitColumnMode mode) { this.bestFitHelper.BestFitColumns(mode); }