using PipeGallery.Manage; using PipeGallery.Model; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; namespace PipeGallery.ViewModel { public class AudioListViewModel : ModelBase { private List<FileInfo> _fileInfos = null; public List<FileInfo> FileInfos { get { if (_fileInfos == null) { _fileInfos = new List<FileInfo>(); } return _fileInfos; } set { _fileInfos = value; } } private ObservableCollection<FileInfo> _showFileInfos = null; public ObservableCollection<FileInfo> ShowFileInfos { get { if (_showFileInfos == null) { _showFileInfos = new ObservableCollection<FileInfo>(); } return _showFileInfos; } set { _showFileInfos = value; } } /// <summary> /// 当前页 /// </summary> int _currentPage = 1; public int CurrentPage { get { return _currentPage; } set { if (_currentPage != value) { _currentPage = value; RaisePropertyChanged("CurrentPage"); } } } /// <summary> /// 总页数 /// </summary> int _totalPages = 0; public int TotalPages { get { return _totalPages; } set { if (_totalPages != value) { _totalPages = value; RaisePropertyChanged("TotalPages"); } } } /// <summary> /// 展示页数列表 /// </summary> private ObservableCollection<string> _showPages = null; public ObservableCollection<string> ShowPages { get { if (_showPages == null) { _showPages = new ObservableCollection<string>(); } return _showPages; } set { _showPages = value; } } private Boolean? _isChecked = false; public Boolean? IsChecked { get { return this._isChecked; } set { if (this._isChecked != value) { this._isChecked = value; RaisePropertyChanged("IsChecked"); if (this._isChecked == true) { AllSelectedOrClear(true); } else if (this._isChecked == false) // 如果节点未选中 { AllSelectedOrClear(false); } else { } } } } public void RefreshShowFileInfos(bool isEndPage=false) { ShowFileInfos.Clear(); if (_fileInfos.Count % 10 == 0) { TotalPages = _fileInfos.Count / 10; } else { TotalPages = _fileInfos.Count / 10 + 1; } if (isEndPage) { CurrentPage = _totalPages; } else { if (CurrentPage < 1) { CurrentPage = 1; } else if (CurrentPage > _totalPages) { CurrentPage = _totalPages; } } for (int i = (CurrentPage - 1) * 10; i < (CurrentPage - 1) * 10 + 10; i++) { if (i > (_fileInfos.Count - 1)) break; if (_fileInfos.Count > 0) ShowFileInfos.Add(_fileInfos[i]); } RefreshShowPages(); } public void RefreshShowPages() { ShowPages.Clear(); if (_fileInfos.Count % 10 == 0) { TotalPages = _fileInfos.Count / 10; } else { TotalPages = _fileInfos.Count / 10 + 1; } if (_totalPages <= 5) { for (int i = 1; i <= _totalPages; i++) { ShowPages.Add(i.ToString()); } } else { if (CurrentPage < 3) { for (int i = 1; i <= 5; i++) { ShowPages.Add(i.ToString()); } } else if (CurrentPage > _totalPages - 3) { for (int i = _totalPages - 5; i <= _totalPages; i++) { ShowPages.Add(i.ToString()); } } else { for (int i = CurrentPage - 2; i <= CurrentPage + 2; i++) { ShowPages.Add(i.ToString()); } } } } public void RefreshOrder() { for (int i=0;i<FileInfos.Count;i++) { FileInfos[i].Order = i + 1; } } public void AllSelectedOrClear(bool isSelected) { foreach (var bfinf in ShowFileInfos) { bfinf.IsSelected = isSelected; } } #region 单例 public AudioListViewModel() { } private static AudioListViewModel _instance = null; public static AudioListViewModel Instance { get { if (_instance == null) { _instance = new AudioListViewModel(); } return _instance; } } #endregion } }