using System; 
 | 
using UnityEngine; 
 | 
namespace vnxbqy.UI 
 | 
{ 
 | 
    public class MailWin : UIBase 
 | 
    { 
 | 
        [SerializeField] Transform transPersonal; 
 | 
        [SerializeField] Transform transGlobal; 
 | 
        [SerializeField] ScrollerController scrPersonal; 
 | 
        [SerializeField] ScrollerController scrGlobal; 
 | 
        [SerializeField] ButtonEx btnDeleteRead; 
 | 
        [SerializeField] ButtonEx btnClaimAll; 
 | 
        [SerializeField] ToggleEx togTab0; 
 | 
        [SerializeField] RedpointBehaviour rpTab0; 
 | 
        [SerializeField] ToggleEx togTab1; 
 | 
        [SerializeField] RedpointBehaviour rpTab1; 
 | 
        [SerializeField] Transform transNoMail; 
 | 
        MailManager model { get { return MailManager.Instance; } } 
 | 
        protected override void InitComponent() 
 | 
        { 
 | 
            base.InitComponent(); 
 | 
            btnDeleteRead.SetListener(OnDeleteRead); 
 | 
            btnClaimAll.SetListener(OnClaimAll); 
 | 
            togTab0.SetListener(OnTab0); 
 | 
            togTab1.SetListener(OnTab1); 
 | 
        } 
 | 
  
 | 
        protected override void OnPreOpen() 
 | 
        { 
 | 
            model.OnUpdateMailListEvent += OnUpdateMailListEvent; 
 | 
            model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; 
 | 
            scrPersonal.OnRefreshCell += OnRefreshPersonalCell; 
 | 
            scrGlobal.OnRefreshCell += OnRefreshGlobalCell; 
 | 
             
 | 
            rpTab0.redpointId = model.GetTabRedpointId(MailCategory.Personal); 
 | 
            rpTab1.redpointId = model.GetTabRedpointId(MailCategory.Global); 
 | 
            transNoMail.SetActive(false); 
 | 
        } 
 | 
  
 | 
        protected override void OnPreClose() 
 | 
        { 
 | 
            model.OnUpdateMailListEvent -= OnUpdateMailListEvent; 
 | 
            model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; 
 | 
            scrPersonal.OnRefreshCell -= OnRefreshPersonalCell; 
 | 
            scrGlobal.OnRefreshCell -= OnRefreshGlobalCell; 
 | 
        } 
 | 
  
 | 
        private void OnTab0(bool value) 
 | 
        { 
 | 
            if (value) 
 | 
            { 
 | 
                transPersonal.SetActive(true); 
 | 
                transGlobal.SetActive(false); 
 | 
                model.nowMailCategory = MailCategory.Personal; 
 | 
                CreatePersonalScr(model.nowMailCategory); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private void OnTab1(bool value) 
 | 
        { 
 | 
            if (value) 
 | 
            { 
 | 
                transPersonal.SetActive(false); 
 | 
                transGlobal.SetActive(true); 
 | 
                model.nowMailCategory = MailCategory.Global; 
 | 
                CreateGlobalScr(model.nowMailCategory); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        protected override void OnOpen() 
 | 
        { 
 | 
            togTab0.isOn = true; 
 | 
            togTab1.isOn = false; 
 | 
            model.nowMailCategory = MailCategory.Personal; 
 | 
            CreatePersonalScr(model.nowMailCategory); 
 | 
        } 
 | 
  
 | 
        private void OnRefreshPersonalCell(ScrollerDataType type, CellView cell) 
 | 
        { 
 | 
            var _cell = cell.GetComponent<MailPersonalCell>(); 
 | 
            _cell?.Display(cell.index, cell); 
 | 
        } 
 | 
  
 | 
        private void OnRefreshGlobalCell(ScrollerDataType type, CellView cell) 
 | 
        { 
 | 
            var _cell = cell.GetComponent<MailGlobalCell>(); 
 | 
            _cell?.Display(cell.index, cell); 
 | 
        } 
 | 
  
 | 
        private void OnDeleteRead() 
 | 
        { 
 | 
            ConfirmCancel.ShowPopConfirm( 
 | 
                Language.Get("Mail101"), 
 | 
                Language.Get("Mail10"), 
 | 
                (bool isOk) => 
 | 
                { 
 | 
                    if (isOk) 
 | 
                    { 
 | 
                        model.DeleteMail(); 
 | 
                        //邮件删除成功 
 | 
                        SysNotifyMgr.Instance.ShowTip("Mail01"); 
 | 
                    } 
 | 
                }); 
 | 
        } 
 | 
  
 | 
        private void OnClaimAll() 
 | 
        { 
 | 
            if (!model.IsCanHaveMail()) 
 | 
            { 
 | 
                SysNotifyMgr.Instance.ShowTip("Mail02"); 
 | 
                return; 
 | 
            } 
 | 
            model.ClaimMail(); 
 | 
        } 
 | 
  
 | 
        public void CreatePersonalScr(MailCategory mailCategory) 
 | 
        { 
 | 
            scrPersonal.Refresh(); 
 | 
            var list = model.GetSortMailScrList(mailCategory); 
 | 
            if (list != null) 
 | 
            { 
 | 
                for (int i = 0; i < list.Count; i++) 
 | 
                { 
 | 
                    CellInfo cellInfo = new CellInfo(); 
 | 
                    cellInfo.infoInt1 = (int)mailCategory; 
 | 
                    scrPersonal.AddCell(ScrollerDataType.Header, i, cellInfo); 
 | 
                } 
 | 
            } 
 | 
            scrPersonal.Restart(); 
 | 
        } 
 | 
        public void CreateGlobalScr(MailCategory mailCategory) 
 | 
        { 
 | 
            scrGlobal.Refresh(); 
 | 
            var list = model.GetSortMailScrList(mailCategory); 
 | 
            if (list != null) 
 | 
            { 
 | 
                for (int i = 0; i < list.Count; i++) 
 | 
                { 
 | 
                    CellInfo cellInfo = new CellInfo(); 
 | 
                    cellInfo.infoInt1 = (int)mailCategory; 
 | 
                    scrGlobal.AddCell(ScrollerDataType.Header, i, cellInfo); 
 | 
                } 
 | 
            } 
 | 
            scrGlobal.Restart(); 
 | 
        } 
 | 
  
 | 
        private void OnUpdateMailStateChangeEvent() 
 | 
        { 
 | 
            RefreshScr(); 
 | 
        } 
 | 
  
 | 
        private void OnUpdateMailListEvent() 
 | 
        { 
 | 
            RefreshScr(); 
 | 
        } 
 | 
  
 | 
        private void RefreshScr() 
 | 
        {  
 | 
            var list = model.GetSortMailScrList(model.nowMailCategory); 
 | 
            if (list.IsNullOrEmpty()) 
 | 
            { 
 | 
                transNoMail.SetActive(true); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                transNoMail.SetActive(false); 
 | 
                scrPersonal.m_Scorller.RefreshActiveCellViews(); 
 | 
                scrGlobal.m_Scorller.RefreshActiveCellViews(); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |