2025-06-04 05:02:57 +08:00

152 lines
4.0 KiB
Plaintext

autoImport("WrapCellHelper")
autoImport("FriendProxy")
autoImport("FriendInfoCell")
FriendView = class("FriendView",SubView)
function FriendView:OnEnter()
self.super.OnEnter(self)
ServiceSessionSocialityProxy.Instance:CallFrameStatusSocialCmd(true)
end
function FriendView:OnExit()
ServiceSessionSocialityProxy.Instance:CallFrameStatusSocialCmd(false)
self.super.OnExit(self)
end
function FriendView:Init()
self:FindObj()
self:InitShow()
self:AddButtonEvt()
self:AddViewEvt()
end
function FriendView:FindObj()
self.RequestInfoBtn = self:FindGO("RequestInfoBtn")
self.ListTip = self:FindGO("ListTip"):GetComponent(UILabel)
self.loading = self:FindGO("Loading")
end
function FriendView:InitShow()
self.ListTip.text = ZhString.Friend_ListTip
self.funkey = {
"InviteMember",
"SendMessage",
"DeleteFriend",
"ShowDetail",
"AddBlacklist",
"InviteEnterGuild",
"Tutor_InviteBeTutor",
"Tutor_InviteBeStudent",
}
self.funkeyOffline = {
"SendMessage",
"DeleteFriend",
"ShowDetail",
"AddBlacklist",
"InviteEnterGuild",
}
self.tipData = {}
self:RegisterRedTipCheck(SceneTip_pb.EREDSYS_SOCIAL_FRIEND_APPLY, self.RequestInfoBtn, 4, {-5,-5})
local contentContainer = self:FindGO("ContentContainer")
local wrapConfig = {
wrapObj = contentContainer,
pfbNum = 10,
cellName = "FriendInfoCell",
control = FriendInfoCell,
dir = 1,
disableDragIfFit = true,
}
self.itemWrapHelper = WrapCellHelper.new(wrapConfig)
self.itemWrapHelper:AddEventListener(FriendEvent.SelectHead, self.HandleClickItem, self)
self:UpdateFriendData()
end
function FriendView:HandleClickItem(cellctl)
local data = cellctl.data;
local playerData = PlayerTipData.new();
playerData:SetByFriendData(cellctl.data);
FunctionPlayerTip.Me():CloseTip()
TableUtility.TableClear(self.tipData)
self.tipData.playerData = playerData
if data.offlinetime == 0 then
self.tipData.funckeys = self.funkey
else
self.tipData.funckeys = self.funkeyOffline
end
FunctionPlayerTip.Me():GetPlayerTip( cellctl.headIcon.clickObj , NGUIUtil.AnchorSide.Left, {-380,60},self.tipData)
end
function FriendView:AddButtonEvt()
self:AddClickEvent(self.RequestInfoBtn,function (g)
self:ApplyInfo(g)
end)
local AddFriendBtn = self:FindGO("AddFriendBtn")
self:AddClickEvent(AddFriendBtn,function (g)
self:AddFriend(g)
end)
local BlacklistBtn = self:FindGO("BlacklistBtn")
self:AddClickEvent(BlacklistBtn,function ()
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.BlacklistView})
end)
end
function FriendView:ApplyInfo()
local datas = FriendProxy.Instance:GetApplyData()
if #datas > 0 then
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.FriendApplyInfoView})
else
RedTipProxy.Instance:SeenNew(SceneTip_pb.EREDSYS_SOCIAL_FRIEND_APPLY)
MsgManager.ShowMsgByIDTable(423)
end
end
function FriendView:AddFriend()
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.AddFriendView})
end
function FriendView:AddViewEvt()
self:AddListenEvt(ServiceEvent.SessionSocialityQuerySocialData,self.UpdateFriendData)
self:AddListenEvt(ServiceEvent.SessionSocialitySocialUpdate,self.UpdateSocial)
self:AddListenEvt(ServiceEvent.SessionSocialitySocialDataUpdate,self.UpdateSocialData)
end
function FriendView:UpdateFriendData()
local isQuerySocialData = ServiceSessionSocialityProxy.Instance:IsQuerySocialData()
local datas = FriendProxy.Instance:GetFriendData()
if isQuerySocialData then
self.itemWrapHelper:UpdateInfo(datas)
self.ListTip.gameObject:SetActive(#datas == 0)
else
self.ListTip.gameObject:SetActive(false)
end
self.loading:SetActive(not isQuerySocialData)
end
function FriendView:UpdateSocial(note)
self:UpdateFriendData()
end
function FriendView:UpdateSocialData(data)
self:UpdateFriendData()
local itemList = self.itemWrapHelper:GetCellCtls()
for i=1,#itemList do
local cellctl = itemList[i]
if cellctl.data and cellctl.data.guid == data.body.guid and
data.body.type == SessionSociality_pb.ESOCIALDATA_OFFLINETIME then
cellctl:RefreshOfflinetime()
end
end
end