Main/System/Mail/MailWin.cs
@@ -1,172 +1,171 @@
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();
        }
    }
}