Example #1
0
        public void CloseLayers(int [] layers, bool isDisposed = true)
        {
            List <Type>   closeLayers = new List <Type>();
            HashSet <int> layersSet   = new HashSet <int>();

            foreach (var layer in layers)
            {
                if (!layersSet.Contains(layer))
                {
                    layersSet.Add(layer);
                }
            }

            foreach (var mapPairs in m_viewsMap)
            {
                FView view = mapPairs.Value.view;
                if (layersSet.Contains(view.layerOrder))
                {
                    closeLayers.Add(__GetViewKey(view));
                }
            }

            foreach (var layerType in closeLayers)
            {
                Close(layerType, isDisposed);
            }
        }
Example #2
0
        public void Open(FView view, object args = null)
        {
            if (view == null)
            {
                return;
            }

            Type type = __GetViewKey(view);

            Open(type, args);
        }
Example #3
0
        //模态窗口
        public void Open(Type type, object args = null)
        {
            bool     isNeedCreate = true;
            bool     isNeedAdd    = true;
            ViewInfo viewInfo     = null;

            if (m_viewsMap.TryGetValue(type, out viewInfo))
            {
                FView view = viewInfo.view;

                if (IsOpened(type))
                {
                    //XXX:置顶到顶层:判断是否被遮挡,通过移除在添加的方式
                    if (GRoot.inst.numChildren > 0)
                    {
                        if (GRoot.inst.GetChildAt(GRoot.inst.numChildren - 1) != view.GetObject())
                        {
                            Close(__GetViewKey(view), false);
                        }
                        else
                        {
                            isNeedAdd    = false;
                            isNeedCreate = false;
                        }
                    }
                }

                if (isNeedAdd)
                {
                    if (!view.IsDisposed())
                    {
                        view.__OpenByManager(args);
                        isNeedCreate = false;
                    }
                }
            }

            if (isNeedCreate)
            {
                //加载View
                FView.Create(type, (fWidget) =>
                {
                    FView fView   = (FView)fWidget;
                    viewInfo      = new ViewInfo();
                    viewInfo.view = fView;

                    m_viewsMap[type] = viewInfo;
                    m_onCreated?.Invoke(viewInfo);

                    fView.__OpenByManager(args);
                }, args);
            }
        }
Example #4
0
        public bool IsOpened(Type type)
        {
            ViewInfo viewInfo = null;

            if (m_viewsMap.TryGetValue(type, out viewInfo))
            {
                FView view = viewInfo.view;
                if (!view.IsDisposed())
                {
                    return(view.IsVisible());
                }
            }
            return(false);
        }
Example #5
0
        public void CloseAll(bool isDisposed = true)
        {
            List <Type> closeLayers = new List <Type>();

            foreach (var mapPairs in m_viewsMap)
            {
                FView view = mapPairs.Value.view;
                closeLayers.Add(__GetViewKey(view));
            }

            foreach (var layerType in closeLayers)
            {
                Close(layerType, isDisposed);
            }
        }
Example #6
0
 //这里必须调用View
 public void Close(FView view, bool isDisposed = true)
 {
     if (view != null)
     {
         Type     type     = __GetViewKey(view);
         ViewInfo viewInfo = null;
         if (m_viewsMap.TryGetValue(type, out viewInfo))
         {
             if (isDisposed)
             {
                 m_viewsMap.Remove(type);
             }
         }
         view.__CloseByManager(isDisposed);
     }
 }
Example #7
0
        public void CloseLayers(int minLayer, int maxLayer, bool isDisposed = true)
        {
            List <Type> closeLayers = new List <Type>();

            foreach (var mapPairs in m_viewsMap)
            {
                FView view = mapPairs.Value.view;
                if (view.layerOrder >= minLayer && view.layerOrder <= maxLayer)
                {
                    closeLayers.Add(__GetViewKey(view));
                }
            }

            foreach (var layerType in closeLayers)
            {
                Close(layerType, isDisposed);
            }
        }
Example #8
0
        public void Close(Type type, bool isDisposed = true)
        {
            ViewInfo viewInfo = null;

            if (m_viewsMap.TryGetValue(type, out viewInfo))
            {
                if (!viewInfo.isPerpetual)  //不可以被Close
                {
                    FView view = viewInfo.view;
                    if (viewInfo.isResident)//常驻View不应该被移除,直接隐藏
                    {
                        isDisposed = false;
                    }

                    view.__CloseByManager(isDisposed);
                }
            }
        }
Example #9
0
        private void __InitBarList()
        {
            _barList = GetChild <FList>(barListName);
            if (_barList != null)
            {
                _barList.SetVirtual();

                _barList.SetState((index, data, comp) =>
                {
                    var viewParams = data as ViewParams;
                    var title      = comp.GetChild <FRichText>("title");
                    title.SetText(viewParams.title);
                });

                _barList.AddClickItem((context) =>
                {
                    _children = (_children != null) ? _children : new Dictionary <int, ViewInfo>();

                    var data  = _barList.GetSelectedData() as ViewParams;
                    var index = _barList.GetSelectedIndex();

                    if (index == __preIndex)
                    {
                        return;
                    }

                    ViewInfo preViewInfo = null;
                    if (_children.TryGetValue(__preIndex, out preViewInfo))
                    {
                        var preView = preViewInfo.view;
                        if (preView != null)
                        {
                            preView.RemoveFromParent();
                        }
                    }

                    var curIndex = index;
                    __preIndex   = curIndex;

                    bool isNeedCreate    = true;
                    ViewInfo curViewInfo = null;
                    if (_children.TryGetValue(curIndex, out curViewInfo))
                    {
                        var curView = curViewInfo.view;
                        if (curView != null)
                        {
                            if (!curView.IsDisposed())
                            {
                                AddChild(curView);
                                isNeedCreate = false;
                            }
                        }
                    }

                    if (isNeedCreate)
                    {
                        var newData  = _barList.GetSelectedData() as ViewParams;
                        var newIndex = _barList.GetSelectedIndex();
                        if (curIndex != newIndex)
                        {
                            return;
                        }

                        FView.Create(newData.cls, (fWidget) =>
                        {
                            var fView              = (FView)fWidget;
                            ViewInfo newViewInfo   = new ViewInfo();
                            newViewInfo.view       = fView;
                            newViewInfo.viewParams = newData;

                            _children[curIndex] = newViewInfo;

                            AddChild(fView);
                        }, newData.args);
                    }
                });
            }
        }
Example #10
0
 private Type __GetViewKey(FView view)
 {
     return(view.GetType());
 }