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
|