| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- using System;
- using System.Collections.ObjectModel;
- using System.Windows;
- namespace Muchinfo.DataPager.Base
- {
- public class MuchinfoNumericElementsViewModel
- {
- private ObservableCollection<MuchinfoNumericElementViewModel> _elements;
- private string _groupName;
- public ObservableCollection<MuchinfoNumericElementViewModel> Elements
- {
- get
- {
- return this._elements ?? (this._elements = new ObservableCollection<MuchinfoNumericElementViewModel>());
- }
- }
- private string GroupName
- {
- get { return this._groupName ?? (this._groupName = Guid.NewGuid().ToString()); }
- }
- public MuchinfoNumericElementsViewModel(int numericButtonCount, int pageIndex, int pageCount, Style numericButtonStyle)
- {
- this.PopulatePages(numericButtonCount, pageIndex, pageCount, numericButtonStyle);
- }
- public MuchinfoNumericElementsViewModel(int numericButtonCount, int pageIndex, int pageCount)
- : this(numericButtonCount, pageIndex, pageCount, null)
- {
- }
- internal void PopulatePages(int numericButtonCount, int pageIndex, int pageCount, Style numericButtonStyle)
- {
- int buttonStartIndex = MuchinfoNumericElementsViewModel.GetButtonStartIndex(numericButtonCount, pageIndex, pageCount);
- int numericElementsCountWithoutEllipsis = MuchinfoNumericElementsViewModel.GetNumericElementsCountWithoutEllipsis(numericButtonCount, buttonStartIndex, pageCount);
- int num = 0;
- //if (MuchinfoNumericElementsViewModel.ShouldDisplayLeftEllipsis(autoEllipsisMode, buttonStartIndex))
- //{
- // num = 1;
- //}
- this.Elements.Clear();
- this.AddNumericPageElements(pageIndex, numericElementsCountWithoutEllipsis, buttonStartIndex + num, pageCount, numericButtonStyle);
- this.AddEllipsisElements(numericElementsCountWithoutEllipsis, pageCount, buttonStartIndex + num, numericButtonStyle);
- }
- internal void PopulatePages(int numericButtonCount, int pageIndex, int pageCount)
- {
- this.PopulatePages(numericButtonCount, pageIndex, pageCount, null);
- }
- private static int GetNumericElementsCountWithoutEllipsis(int numericButtonCount, int startIndex, int pageCount)
- {
- int num = 0;
- int num2 = 0;
- //if (MuchinfoNumericElementsViewModel.ShouldDisplayLeftEllipsis(autoEllipsisMode, startIndex))
- //{
- // num = 1;
- //}
- //if (MuchinfoNumericElementsViewModel.ShouldDisplayRightEllipsis(autoEllipsisMode, numericButtonCount, pageCount, startIndex))
- //{
- // num2 = 1;
- //}
- return numericButtonCount - num - num2;
- }
- private void AddNumericPageElements(int pageIndex, int numericButtonCountWithoutEllipsis, int startIndex, int pageCount, Style numericButtonStyle)
- {
- int num = startIndex;
- while (num < startIndex + numericButtonCountWithoutEllipsis && num <= pageCount)
- {
- this.Elements.Add(new MuchinfoNumericElementViewModel(num, num - 1, num == pageIndex + 1, this.GroupName, numericButtonStyle));
- num++;
- }
- }
- private void AddEllipsisElements(int numericElementsCountWithoutEllipsis, int pageCount, int startIndex, Style numericButtonStyle)
- {
- string @string = "...";// LocalizationManager.GetString("RadDataPagerEllipsisString");
- int num = this.AddLeftEllipsisIfNeeded(startIndex, @string, numericButtonStyle);
- this.AddRightEllipsisIfNeeded(numericElementsCountWithoutEllipsis, pageCount, startIndex + num, @string, numericButtonStyle);
- }
- private void AddRightEllipsisIfNeeded(int numericButtonCount, int pageCount, int startIndex, string ellipsisString, Style numericButtonStyle)
- {
- //if (MuchinfoNumericElementsViewModel.ShouldDisplayRightEllipsis(autoEllipsisMode, numericButtonCount, pageCount, startIndex))
- //{
- // this.Elements.Add(new MuchinfoNumericElementViewModel(ellipsisString, startIndex + numericButtonCount - 1, false, this.GroupName, numericButtonStyle));
- //}
- }
- private int AddLeftEllipsisIfNeeded(int startIndex, string ellipsisString, Style numericButtonStyle)
- {
- int result = 0;
- //if (MuchinfoNumericElementsViewModel.ShouldDisplayLeftEllipsis(autoEllipsisMode, startIndex))
- //{
- // this.Elements.Insert(0, new MuchinfoNumericElementViewModel(ellipsisString, startIndex - 2, false, this.GroupName, numericButtonStyle));
- // result = 1;
- //}
- return result;
- }
- internal static int GetButtonStartIndex(int numericButtonCount, int pageIndex, int pageCount)
- {
- return Math.Min(Math.Max(pageIndex + 1 - numericButtonCount / 2, 1), Math.Max(pageCount - numericButtonCount + 1, 1));
- }
- }
- }
|