|  |  | 
 |  |  | using System; | 
 |  |  | using UnityEngine; | 
 |  |  | namespace vnxbqy.UI | 
 |  |  |  | 
 |  |  |  | 
 |  |  | public class MailWin : UIBase | 
 |  |  | { | 
 |  |  |     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() | 
 |  |  |     { | 
 |  |  |         [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); | 
 |  |  |         } | 
 |  |  |         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; | 
 |  |  |     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); | 
 |  |  |         } | 
 |  |  |         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; | 
 |  |  |         } | 
 |  |  |     protected override void OnPreClose() | 
 |  |  |     { | 
 |  |  |         model.OnUpdateMailListEvent -= OnUpdateMailListEvent; | 
 |  |  |         model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; | 
 |  |  |         scrPersonal.OnRefreshCell -= OnRefreshPersonalCell; | 
 |  |  |         scrGlobal.OnRefreshCell -= OnRefreshGlobalCell; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |         private void OnTab0(bool value) | 
 |  |  |     private void OnTab0(bool value) | 
 |  |  |     { | 
 |  |  |         if (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; | 
 |  |  |             transPersonal.SetActive(true); | 
 |  |  |             transGlobal.SetActive(false); | 
 |  |  |             model.nowMailCategory = MailCategory.Personal; | 
 |  |  |             CreatePersonalScr(model.nowMailCategory); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |         private void OnRefreshPersonalCell(ScrollerDataType type, CellView cell) | 
 |  |  |     private void OnTab1(bool value) | 
 |  |  |     { | 
 |  |  |         if (value) | 
 |  |  |         { | 
 |  |  |             var _cell = cell.GetComponent<MailPersonalCell>(); | 
 |  |  |             _cell?.Display(cell.index, cell); | 
 |  |  |             transPersonal.SetActive(false); | 
 |  |  |             transGlobal.SetActive(true); | 
 |  |  |             model.nowMailCategory = MailCategory.Global; | 
 |  |  |             CreateGlobalScr(model.nowMailCategory); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |         private void OnRefreshGlobalCell(ScrollerDataType type, CellView cell) | 
 |  |  |         { | 
 |  |  |             var _cell = cell.GetComponent<MailGlobalCell>(); | 
 |  |  |             _cell?.Display(cell.index, cell); | 
 |  |  |         } | 
 |  |  |     protected override void OnOpen() | 
 |  |  |     { | 
 |  |  |         togTab0.isOn = true; | 
 |  |  |         togTab1.isOn = false; | 
 |  |  |         model.nowMailCategory = MailCategory.Personal; | 
 |  |  |         CreatePersonalScr(model.nowMailCategory); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |         private void OnDeleteRead() | 
 |  |  |         { | 
 |  |  |             ConfirmCancel.ShowPopConfirm( | 
 |  |  |                 Language.Get("Mail101"), | 
 |  |  |                 Language.Get("Mail10"), | 
 |  |  |                 (bool isOk) => | 
 |  |  |                 { | 
 |  |  |                     if (isOk) | 
 |  |  |                     { | 
 |  |  |                         model.DeleteMail(); | 
 |  |  |                         //邮件删除成功 | 
 |  |  |                         SysNotifyMgr.Instance.ShowTip("Mail01"); | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |         } | 
 |  |  |     private void OnRefreshPersonalCell(ScrollerDataType type, CellView cell) | 
 |  |  |     { | 
 |  |  |         var _cell = cell.GetComponent<MailPersonalCell>(); | 
 |  |  |         _cell?.Display(cell.index, cell); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |         private void OnClaimAll() | 
 |  |  |         { | 
 |  |  |             if (!model.IsCanHaveMail()) | 
 |  |  |     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) => | 
 |  |  |             { | 
 |  |  |                 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++) | 
 |  |  |                 if (isOk) | 
 |  |  |                 { | 
 |  |  |                     CellInfo cellInfo = new CellInfo(); | 
 |  |  |                     cellInfo.infoInt1 = (int)mailCategory; | 
 |  |  |                     scrPersonal.AddCell(ScrollerDataType.Header, i, cellInfo); | 
 |  |  |                     model.DeleteMail(); | 
 |  |  |                     //邮件删除成功 | 
 |  |  |                     SysNotifyMgr.Instance.ShowTip("Mail01"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             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() | 
 |  |  |     private void OnClaimAll() | 
 |  |  |     { | 
 |  |  |         if (!model.IsCanHaveMail()) | 
 |  |  |         { | 
 |  |  |             RefreshScr(); | 
 |  |  |             SysNotifyMgr.Instance.ShowTip("Mail02"); | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         model.ClaimMail(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |         private void OnUpdateMailListEvent() | 
 |  |  |     public void CreatePersonalScr(MailCategory mailCategory) | 
 |  |  |     { | 
 |  |  |         scrPersonal.Refresh(); | 
 |  |  |         var list = model.GetSortMailScrList(mailCategory); | 
 |  |  |         if (list != null) | 
 |  |  |         { | 
 |  |  |             RefreshScr(); | 
 |  |  |             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 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(); | 
 |  |  |             } | 
 |  |  |     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(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |