|
|
- MailItem = MailItem or BaseClass(BaseItem)
-
- function MailItem:__init()
- self.base_file = "sociality"
- self.layout_file = "MailItem"
- self.is_delay_callback = true
-
- self.model = MailModel:getInstance()
- self.data = nil
- self.event_id_list = {}
-
- self.need_refreshData = false
- self.need_refreshClick = false
- -- self.use_local_view = true
-
- self:Load()
- end
-
- function MailItem:Load_callback()
- self:LoadSuccess()
- self:InitEvent()
-
- if self.need_refreshData then
- self:SetData(self.data)
- end
- if self.need_refreshClick then
- self:OnClickHandler(self.click_id)
- end
- end
-
- function MailItem:LoadSuccess()
- self.nodes = {
- "mailTitle:tmp",
- "mailTime:tmp",
- "attachmentIcon:img",
- "mailHead:img",
- "selectBg:obj",
- "redDot:obj",
- "importantFlag:obj",
- }
- self:GetChildren(self.nodes)
- end
-
- function MailItem:InitEvent()
- local function onBtnClickHandler(target)
- if self.data then
- if target == self.gameObject then--点击邮件Item
- self.model:Fire(MailEvent.CLICK_MAIL_ITEM, self.data.mail_id)
- end
- end
- end
- AddClickEvent(self.gameObject, onBtnClickHandler)
-
- --绑定点击item的方法
- local click_fun = function(mail_id)
- self:OnClickHandler(mail_id)
- end
- table.insert(self.event_id_list, self.model:Bind(MailEvent.CLICK_MAIL_ITEM, click_fun))
-
- --绑定更新item显示的方法
- local update_fun = function(new_data)
- if self.data and self.data.mail_id == new_data.mail_id then
- self:SetData(new_data)
- self.model:Fire(MailEvent.GET_MAIL_INFORM)
- end
- end
- table.insert(self.event_id_list, self.model:Bind(MailEvent.UPDATE_MAIL_ITEM, update_fun))
- end
-
- function MailItem:OnClickHandler(click_id)
- self.click_id = click_id
- if self.is_loaded then
- if self.data then
- if self.data.mail_id == self.click_id then
- self:SetSelect(true)
- self.model.now_select_mail = self.data
- self.model:Fire(MailEvent.GET_MAIL_DETAIL, self.data.mail_id) --通过邮件ID请求邮件详细信息
- else
- self:SetSelect(false)
- end
- end
- else
- self.need_refreshClick = true
- end
- end
-
- function MailItem:SetSelect(bool)
- if self.selectBg_obj then
- self.selectBg_obj:SetActive(bool)
- end
- end
-
- function MailItem:SetData(data)
- self.data = data
- if not self.data then return end
-
- if self.is_loaded then
- local title_str = self.data.title
- if utf8len(title_str) > 9 then
- title_str = SubStringUTF8(title_str, 1, 8) .. "..."
- end
- self.importantFlag_obj:SetActive(self.data.important == 1)
- self.mailTitle_tmp.text = title_str
- self.mailTime_tmp.text = TimeUtil:timeConversion(self.data.time, "mm-dd hh:MM:ss")
-
- --邮件类型图标
- local mail_type = self.model:GetMailType(self.data.mail_id)
- if mail_type == 5 then
- lua_resM:setImageSprite(self,self.mailHead_img,"sociality_asset","sociality_mail_head_2")
- else
- lua_resM:setImageSprite(self,self.mailHead_img,"sociality_asset","sociality_mail_head_1")
- end
-
- --已读、未读、已领取、未领取
- if self.data.state == 3 then --附件已领取
- lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_reward_open_pointfilter")
- else
- if self.data.is_attach == 0 and self.data.state ~= 3 then --无附件
- if self.data.state == 1 then --已读
- lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_read_pointfilter")
- else
- lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_unread_pointfilter")
- end
- elseif self.data.is_attach == 1 then --有附件
- lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_reward_unopen_pointfilter")
- end
- end
-
- if self.data.state == 2 or (self.data.is_attach == 1 and self.data ~= 3) then
- self.redDot_obj:SetActive(true)
- else
- self.redDot_obj:SetActive(false)
- end
- self.gameObject:SetActive(true)
- else
- self.need_refreshData = true
- end
- end
-
- --清除item数据
- function MailItem:Hide()
- if self.is_loaded then
- self.selectBg_obj:SetActive(false)
- self.data = nil
- -- self:SetVisible(false)
- end
- end
-
- function MailItem:__delete()
- for i, v in ipairs(self.event_id_list) do
- self.model:UnBind(v)
- end
- self.event_id_list = {}
- end
|