Ejemplo n.º 1
0
        /// <summary>
        /// 处理关闭当前弹窗时候的逻辑
        /// </summary>
        /// <param name="view"></param>
        /// <param name="closeOperate"></param>
        private void DealHidePopView(PopupCloseOperateEnum closeOperate)
        {
            if (m_AllRecordViewPopup.Count == 0)
            {
                return;
            }
            UIBasePopupView nectShowPage = null; //关闭这个弹窗口这个弹窗打开之前的弹窗

            switch (closeOperate)
            {
            case PopupCloseOperateEnum.Simple:
                break;

            case PopupCloseOperateEnum.AutoPopup:
                for (int dex = m_AllRecordViewPopup.Count - 1; dex >= 0; --dex)
                {
                    if (dex > 0 && m_AllRecordViewPopup[dex] == this)
                    {
                        nectShowPage = m_AllRecordViewPopup[dex - 1];
                        break;
                    }
                }
                AutoPupupView(nectShowPage);
                break;

            case PopupCloseOperateEnum.CloseAndClearCurPage:
                List <int> allPopupViewCurPage = new List <int>();
                for (int dex = m_AllRecordViewPopup.Count - 1; dex >= 0; --dex)
                {
                    if (m_AllRecordViewPopup[dex] != this && m_AllRecordViewPopup[dex].BelongPageView == this.BelongPageView)
                    {
                        allPopupViewCurPage.Add(dex);
                    }
                }

                for (int dex = 0; dex < allPopupViewCurPage.Count; ++dex)
                {
                    m_AllRecordViewPopup[dex].HideWindow(UIParameterArgs.Create());
                }    //关闭弹窗

                allPopupViewCurPage.Reverse();
                for (int dex = 0; dex < allPopupViewCurPage.Count; ++dex)
                {
                    m_AllRecordViewPopup.RemoveAt(allPopupViewCurPage[dex]);
                }    //删除打开记录

                if (m_LowerPriorityPopupView.ContainsKey(this.BelongPageView))
                {
                    m_LowerPriorityPopupView[this.BelongPageView].Clear();
                }
                break;

            default:
                Debug.LogError("没有处理的类型  " + closeOperate);
                break;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 打开一个弹窗时候根据需求 获取需要关闭的弹窗
        /// </summary>
        /// <param name="view"></param>
        /// <param name="popupOperate"></param>
        private Dictionary <int, UIBasePopupView> GetWillHidePopupView(UIBasePopupView popupView, PopupOpenOperateEnum popupOperate, bool isFailRecord, UIParameterArgs parameter)
        {
            Dictionary <int, UIBasePopupView> allWillHidePopupView = new Dictionary <int, UIBasePopupView>();

            if (m_AllRecordViewPopup.Count == 0)
            {
                return(allWillHidePopupView);
            }

            switch (popupOperate)
            {
            case PopupOpenOperateEnum.KeepPreviousAvailable:
                break;

            case PopupOpenOperateEnum.HideAllOpenView:
                for (int dex = 0; dex < m_AllRecordViewPopup.Count; ++dex)
                {
                    allWillHidePopupView.Add(dex, m_AllRecordViewPopup[dex]);
                }
                break;

            case PopupOpenOperateEnum.HideCurPagePopupView:
                for (int dex = 0; dex < m_AllRecordViewPopup.Count; ++dex)
                {
                    if (m_AllRecordViewPopup[dex].BelongPageView == popupView.BelongPageView)
                    {
                        allWillHidePopupView.Add(dex, m_AllRecordViewPopup[dex]);
                    }
                }     //获取当前弹窗所属的页面
                break;

            case PopupOpenOperateEnum.PriorityOrder:
                if (m_AllRecordViewPopup[m_AllRecordViewPopup.Count - 1].Priority >= popupView.Priority)
                {
                    if (isFailRecord)
                    {
                        RecordWillPopupView(popupView.BelongPageView, popupView);
                        popupView.FailShowByPriority(parameter);      //记录参数
                    }
                    else
                    {
                        popupView.HideWindow(UIParameterArgs.Create());
                    }
                }      //加入到待弹出界面中
                else
                {
                    allWillHidePopupView.Add(m_AllRecordViewPopup.Count - 1, m_AllRecordViewPopup[m_AllRecordViewPopup.Count - 1]);
                }
                break;

            default:
                Debug.LogError("没有处理的枚举类型 " + popupOperate);
                break;
            }
            return(allWillHidePopupView);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 关闭一个页面所有关联的Popup /Widget
 /// </summary>
 /// <param name="view"></param>
 private void ClosePageConnectView(UIBasePageView view)
 {
     if (view != null)
     {
         view.HideWindow(UIParameterArgs.Create());
         UIBasePopupView.RemoveWillPopupView(view);                                           //关闭当前界面所包含的弹窗(没有弹出的)
         UIBasePopupView.CloseConnectPopupView(view);                                         //关闭当前界面所包含的弹窗 (已经弹出的)
         UIBaseWidgetView.CloseAttachWidget(view.transform, false, UIParameterArgs.Create()); //关闭关联的Widget
     }
 }
Ejemplo n.º 4
0
        //public static void CloseAllPopupView()
        //{
        //    Debug.LogEditorInfor("TODO...");
        //}



        /// <summary>
        /// 记录需要弹出来的窗口
        /// </summary>
        /// <param name="pageview"></param>
        /// <param name="popupView"></param>
        private void RecordWillPopupView(UIBasePageView pageview, UIBasePopupView popupView)
        {
            if (pageview == null || popupView == null)
            {
                Debug.LogError("RecordWillPopupView Fail " + (pageview == null) + " ::" + (popupView == null));
                return;
            }

            if (m_LowerPriorityPopupView.ContainsKey(pageview) == false)
            {
                List <UIBasePopupView> pagePopupView = new List <UIBasePopupView>();
                pagePopupView.Add(popupView);
                m_LowerPriorityPopupView.Add(pageview, pagePopupView);
            }
            else
            {
                m_LowerPriorityPopupView[pageview].Add(popupView);

#if UNITY_EDITOR
                Debug.LogEditorInfor("排序前的顺序");
                for (int dex = 0; dex < m_LowerPriorityPopupView[pageview].Count; ++dex)
                {
                    Debug.LogEditorInfor("dex={0}   popupView={1 }   priority={2}", dex, m_LowerPriorityPopupView[pageview][dex], m_LowerPriorityPopupView[pageview][dex].Priority);
                }
#endif

                SortPopupViewByPriority(m_LowerPriorityPopupView[pageview]); //  //按照优先级从低到高排序
                //m_LowerPriorityPopupView[pageview].Sort((a, b) =>
                //{
                //    if (a.Priority > b.Priority)
                //        return 1;
                //    else if (a.Priority == b.Priority)
                //        return 0;
                //    else return -1;
                //});   //按照优先级从低到高排序

#if UNITY_EDITOR
                Debug.LogEditorInfor("排序后的顺序");
                for (int dex = 0; dex < m_LowerPriorityPopupView[pageview].Count; ++dex)
                {
                    Debug.LogEditorInfor("dex={0}   popupView={1 }   priority={2}", dex, m_LowerPriorityPopupView[pageview][dex], m_LowerPriorityPopupView[pageview][dex].Priority);
                }
#endif
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 当关闭一个弹窗界面时候 检查并弹出优先级比要显示的弹窗优先级高的弹窗
        /// </summary>
        /// <param name="popupView">关闭一个弹窗后下面的一个弹窗 (可以是null)</param>
        /// <returns>标识</returns>
        private void AutoPupupView(UIBasePopupView popupView)
        {
            List <UIBasePopupView> willPopupView = null;

            if (popupView != null)
            {
                if (m_LowerPriorityPopupView.TryGetValue(popupView.BelongPageView, out willPopupView))
                {
                    if (willPopupView.Count == 0)
                    {
                        return;
                    }
                    if (willPopupView[willPopupView.Count - 1].Priority > popupView.Priority)
                    {
                        UIBasePopupView willShowPopupView = willPopupView[willPopupView.Count - 1]; //将要显示的弹窗
                        willShowPopupView.DelayPopupShowWindow();                                   //参数已经缓存
                        willPopupView.RemoveAt(willPopupView.Count - 1);                            //移除队列
                        m_AllRecordViewPopup.Add(willShowPopupView);                                //将要显示的弹窗
                    }
                }
            }
            else
            {
                if (m_LowerPriorityPopupView.TryGetValue(UIBasePageView.CurOpenPage, out willPopupView))
                {
                    if (willPopupView.Count == 0)
                    {
                        return;
                    }
                    UIBasePopupView willShowPopupView = willPopupView[willPopupView.Count - 1]; //将要显示的弹窗
                    willShowPopupView.DelayPopupShowWindow();                                   //参数已经缓存
                    willPopupView.RemoveAt(willPopupView.Count - 1);                            //移除队列
                    m_AllRecordViewPopup.Add(willShowPopupView);                                //将要显示的弹窗
                } //取当前打开页面的队列表
            }  //可能存在关闭一个顶层弹窗后 后下面没有要显示的弹窗的情况
        }