duheng
2024-07-23 3fec42c6383aa3b8d65f744a93b8a918d7cc6e02
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectManager.cs
@@ -3,127 +3,8 @@
    /// <summary>
    /// 导入项目管理
    /// </summary>
    public class ImportXhsProjectManager : IWizardManager<ImportXhsProjectViewModel>
    public class ImportXhsProjectManager : WizardManager<ImportXhsProjectViewModel>
    {
        /// <summary>
        /// 初始化管理器
        /// </summary>
        /// <param name="pages">步骤页面数组</param>
        public void InitialManager(IWizardPage<ImportXhsProjectViewModel>[] pages)
        {
            _pages = pages;
            if (_pages != null && _pages.Length > 0)
            {
                _selectedIndex = 0;
                this.SelectedPageChangedEvent?.Invoke(this.SelectedPage, this.SelectedIndex);
                this.SelectedPage.InitialPage(_vm);
            }
        }
        private IWizardPage<ImportXhsProjectViewModel>[] _pages;//步骤页面数组
        private readonly ImportXhsProjectViewModel _vm = new ImportXhsProjectViewModel();
        /// <summary>
        /// 选择页面改变事件
        /// </summary>
        public event Action<Yw.WinFrmUI.IWizardPage<ImportXhsProjectViewModel>, int> SelectedPageChangedEvent;
        public event Action<IWizardPage<ImportXhsProjectViewModel>, int> SelectedPageStateChangedEvent;
        /// <summary>
        /// 选择页面
        /// </summary>
        public IWizardPage<ImportXhsProjectViewModel> SelectedPage
        {
            get
            {
                if (_pages == null || _pages.Length < 1)
                {
                    return default;
                }
                return _pages[SelectedIndex];
            }
        }
        /// <summary>
        /// 选择索引
        /// </summary>
        public int SelectedIndex
        {
            get { return _selectedIndex; }
        }
        private int _selectedIndex;
        /// <summary>
        /// 上一步
        /// </summary>
        public bool Prev()
        {
            if (_pages == null || _pages.Length < 1)
            {
                return false;
            }
            if (this.SelectedPage.CanPrev())
            {
                --_selectedIndex;
                this.SelectedPageChangedEvent?.Invoke(this.SelectedPage, this.SelectedIndex);
                this.SelectedPage.InitialPage(_vm);
                return true;
            }
            return false;
        }
        /// <summary>
        /// 下一步
        /// </summary>
        public bool Next()
        {
            if (_pages == null || _pages.Length < 1)
            {
                return false;
            }
            if (this.SelectedPage.CanNext())
            {
                ++_selectedIndex;
                this.SelectedPageChangedEvent?.Invoke(this.SelectedPage, this.SelectedIndex);
                this.SelectedPage.InitialPage(_vm);
                return true;
            }
            return false;
        }
        /// <summary>
        /// 取消
        /// </summary>
        public bool Cancel()
        {
            if (_pages == null || _pages.Length < 1)
            {
                return false;
            }
            if (this.SelectedPage.CanCancel())
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// 完成
        /// </summary>
        public bool Complete()
        {
            if (_pages == null || _pages.Length < 1)
            {
                return false;
            }
            if (this.SelectedPage.CanComplete())
            {
                return true;
            }
            return false;
        }