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]);
                }
            }
        }
Esempio n. 2
0
 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;
         }
     }
 }
Esempio n. 6
0
 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();
 }
Esempio n. 8
0
 public void BestFitColumns(ListViewBestFitColumnMode mode)
 {
     this.bestFitHelper.BestFitColumns(mode);
 }