Newer
Older
Correlator / PipeGallery / ViewModel / AudioListViewModel.cs
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

    }
}