UIMailBoxView.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. local UIMailBoxView = require("UIMailBox/UIMailBoxView_Generate")
  2. local BitUtil = require("BitUtil")
  3. local curMailItem
  4. local curMailLogicData
  5. local isOneKeyReward = false
  6. function UIMailBoxView:OnAwake(data)
  7. self.controller = require("UIMailBox/UIMailBoxCtr"):new()
  8. self.controller:Init(self)
  9. self.controller:SetData(data)
  10. end
  11. function UIMailBoxView:AddEventListener()
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REFRESH_MAILS, self, self.RefreshMails)
  13. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.READ_MAIL, self, self.ReadMail)
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REWARD_MAIL, self, self.RewardMail)
  15. end
  16. function UIMailBoxView:FillContent(data, uiBase)
  17. self.uiBase = uiBase
  18. local gameObject = self.uiBase:GetRoot()
  19. if gameObject ~= nil then
  20. self.gameObject = gameObject
  21. self.transform = gameObject.transform
  22. end
  23. self:InitGenerate(self.transform, data)
  24. self:Init()
  25. end
  26. function UIMailBoxView:Init()
  27. if self.controller:IsFirstOpen() then
  28. self.number.text.text = CommonUtil.StringConcat(0, "/100")
  29. self.controller:SendMailList()
  30. self.controller:SetFirstOpen()
  31. else
  32. self:RefreshMails(true)
  33. end
  34. end
  35. function UIMailBoxView:RefreshMails(refreshCount)
  36. if refreshCount then
  37. self:RefreshMailCount()
  38. end
  39. local count = ManagerContainer.DataMgr.MailData:GetMailTotalCount()
  40. self.empty:SetActive(count == 0)
  41. local mailDatas = ManagerContainer.DataMgr.MailData:GetMailDatas()
  42. CommonUtil.LoopGridViewEleCreateNew(self, self.mailList.loopVerticalScrollRect, self.content.verticalLayoutGroup, mailDatas, 0, nil, function (itemLua, idx)
  43. CommonUtil.UpdateItemPrefab(self, itemLua, clone(mailDatas[idx + 1]), self, self.OnMailSelected)
  44. end)
  45. end
  46. function UIMailBoxView:ReadMail()
  47. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMail, curMailLogicData)
  48. --CommonUtil.UpdateItemPrefab(self, curMailItem, curMailLogicData, self, self.OnMailSelected)
  49. end
  50. function UIMailBoxView:RewardMail()
  51. if isOneKeyReward then
  52. isOneKeyReward = false
  53. self:RefreshMails()
  54. return
  55. end
  56. --CommonUtil.UpdateItemPrefab(self, curMailItem, curMailLogicData, self, self.OnMailSelected)
  57. end
  58. function UIMailBoxView:RefreshMailCount()
  59. local count = ManagerContainer.DataMgr.MailData:GetMailTotalCount()
  60. self.number.text.text = CommonUtil.StringConcat(count, "/150")
  61. end
  62. function UIMailBoxView:OnMailSelected(button, params)
  63. curMailItem = params[0]
  64. curMailLogicData = params[1]
  65. local readState = BitUtil.ParseMailReadState(curMailLogicData.state) == 1
  66. if not readState then
  67. self.controller:SendReadMail(curMailLogicData.id)
  68. else
  69. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMail, curMailLogicData)
  70. end
  71. end
  72. function UIMailBoxView:OnDeleteOpenedMails()
  73. self.controller:SendOneKeyDeleteMail()
  74. end
  75. function UIMailBoxView:OnOneKeyRewardMails()
  76. isOneKeyReward = true
  77. self.controller:SendOneKeyRewardMail()
  78. end
  79. function UIMailBoxView:RemoveEventListener()
  80. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  81. end
  82. function UIMailBoxView:AddUIEventListener()
  83. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  84. self.uiBase:AddButtonEventListener(self.btnClose.button, function ()
  85. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  86. --self:UIClose()
  87. end)
  88. self.uiBase:AddButtonEventListener(self.btnDeleteRead.button, self, self.OnDeleteOpenedMails)
  89. self.uiBase:AddButtonEventListener(self.btnOnekeyReceive.button, self, self.OnOneKeyRewardMails)
  90. end
  91. function UIMailBoxView:OnHide()
  92. end
  93. function UIMailBoxView:OnShow(data)
  94. self.controller:SetData(data)
  95. self:Init()
  96. end
  97. function UIMailBoxView:OnClose()
  98. end
  99. function UIMailBoxView:OnDispose()
  100. curMailItem = nil
  101. curMailLogicData = nil
  102. end
  103. return UIMailBoxView