using System; 
 | 
using UnityEngine; 
 | 
public class MailWin : FunctionsBaseWin 
 | 
{ 
 | 
    [SerializeField] ScrollerController scrMail; 
 | 
    [SerializeField] ButtonEx btnDeleteAllRead; 
 | 
    [SerializeField] ButtonEx btnClaimAll; 
 | 
    [SerializeField] RedpointBehaviour rpTab0; 
 | 
    [SerializeField] RedpointBehaviour rpTab1; 
 | 
    [SerializeField] Transform transNoMail; 
 | 
    [SerializeField] Transform transCurrentMailCount; 
 | 
    [SerializeField] TextEx txtCurrentMailCount; 
 | 
    MailManager model { get { return MailManager.Instance; } } 
 | 
    protected override void InitComponent() 
 | 
    { 
 | 
        base.InitComponent(); 
 | 
        btnDeleteAllRead.SetListener(OnDeleteRead); 
 | 
        btnClaimAll.SetListener(OnClaimAll); 
 | 
    } 
 | 
  
 | 
    protected override void OnPreOpen() 
 | 
    { 
 | 
        base.OnPreOpen(); 
 | 
        model.nowMailCategory = MailCategory.Personal; 
 | 
        rpTab0.redpointId = model.GetTabRedpointId(MailCategory.Personal); 
 | 
        rpTab1.redpointId = model.GetTabRedpointId(MailCategory.Global); 
 | 
        transNoMail.SetActive(true); 
 | 
        btnDeleteAllRead.SetActive(true); 
 | 
        btnClaimAll.SetActive(true); 
 | 
        transCurrentMailCount.SetActive(true); 
 | 
        model.OnUpdateMailListEvent += OnUpdateMailListEvent; 
 | 
        model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; 
 | 
        scrMail.OnRefreshCell += OnRefreshCell; 
 | 
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; 
 | 
        DisPlay(); 
 | 
  
 | 
    } 
 | 
  
 | 
    protected override void OnPreClose() 
 | 
    { 
 | 
        base.OnPreClose(); 
 | 
        model.OnUpdateMailListEvent -= OnUpdateMailListEvent; 
 | 
        model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; 
 | 
        scrMail.OnRefreshCell -= OnRefreshCell; 
 | 
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; 
 | 
    } 
 | 
  
 | 
    private void OnSecondEvent() 
 | 
    { 
 | 
        scrMail.m_Scorller.RefreshActiveCellViews(); 
 | 
        int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal); 
 | 
        txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount); 
 | 
    } 
 | 
  
 | 
    protected override void OpenSubUIByTabIndex() 
 | 
    { 
 | 
        switch (functionOrder) 
 | 
        { 
 | 
            case 0: 
 | 
                model.nowMailCategory = MailCategory.Personal; 
 | 
                btnDeleteAllRead.SetActive(true); 
 | 
                btnClaimAll.SetActive(true); 
 | 
                transCurrentMailCount.SetActive(true); 
 | 
                int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal); 
 | 
                txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount); 
 | 
                DisPlay(); 
 | 
                break; 
 | 
            case 1: 
 | 
                model.nowMailCategory = MailCategory.Global; 
 | 
                btnDeleteAllRead.SetActive(false); 
 | 
                btnClaimAll.SetActive(false); 
 | 
                transCurrentMailCount.SetActive(false); 
 | 
                DisPlay(); 
 | 
                break; 
 | 
            default: 
 | 
                Debug.LogWarning("未知的标签索引: " + functionOrder); 
 | 
                break; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    private void OnRefreshCell(ScrollerDataType type, CellView cell) 
 | 
    { 
 | 
        var _cell = cell.GetComponent<MailCell>(); 
 | 
        _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(); 
 | 
    } 
 | 
  
 | 
    private void OnUpdateMailStateChangeEvent() 
 | 
    { 
 | 
        DisPlay(); 
 | 
    } 
 | 
  
 | 
    private void OnUpdateMailListEvent() 
 | 
    { 
 | 
        DisPlay(); 
 | 
    } 
 | 
  
 | 
  
 | 
    private void DisPlay() 
 | 
    { 
 | 
        scrMail.Refresh(); 
 | 
        scrMail.Restart(); 
 | 
  
 | 
        MailCategory mailCategory = model.nowMailCategory; 
 | 
        var list = model.GetSortMailScrList(mailCategory); 
 | 
        if (list.IsNullOrEmpty()) 
 | 
        { 
 | 
            transNoMail.SetActive(true); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            transNoMail.SetActive(false); 
 | 
            scrMail.Refresh(); 
 | 
            for (int i = 0; i < list.Count; i++) 
 | 
            { 
 | 
                CellInfo cellInfo = new CellInfo(); 
 | 
                cellInfo.infoInt1 = (int)mailCategory; 
 | 
                scrMail.AddCell(ScrollerDataType.Header, i, cellInfo); 
 | 
            } 
 | 
  
 | 
            scrMail.Restart(); 
 | 
        } 
 | 
        int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal); 
 | 
        txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |