yunque9/lua_probject/base_project/Game/View/NewGroup/MngView/GroupBanSameTableView.lua

232 lines
6.8 KiB
Lua

-- 禁止同桌界面
local GroupBanSameTableView = {}
local M = GroupBanSameTableView
function GroupBanSameTableView.new(blur_view, group_id, member_id, data)
setmetatable(M, {__index = BaseWindow})
local self = setmetatable({}, {__index = M})
self.class = "GroupBanSameTableView"
self._close_destroy = true
self._blur_view = blur_view
self.group_id = group_id
self.ori_ban = data.ban_list
self.ban_list = membe_deep_clone(data.ban_list)
self.member_id = member_id
self:init("ui://NewGroup/Win_BanSameTable")
return self
end
function M:init(url)
BaseWindow.init(self,url)
-- 搜索结果
self._search_member_data = {}
self._search_ban_data = {}
local group = DataManager.groups:get(self.group_id)
self.all_members = group.members
self.member_data = {}
self:getMemberData(#self.all_members)
self.ctr_search_m = self._view:GetController("search_m")
self.ctr_search_b = self._view:GetController("search_b")
self.lst_member = self._view:GetChild("lst_member")
self.lst_member:SetVirtual()
self.lst_member.itemRenderer = function(index, obj)
self:OnRenderMemberItem(index, obj)
end
self.lst_member.scrollPane.onPullUpRelease:Set(function()
self:getMemberData(#self.all_members)
end)
self.lst_ban = self._view:GetChild("lst_ban")
self.lst_ban:SetVirtual()
self.lst_ban.itemRenderer = function(index, obj)
self:OnRenderBanItem(index, obj)
end
self:refreshList()
self._view:GetChild("btn_back").onClick:Set(function()
self._search_member_data = {}
self.ctr_search_m.selectedIndex = 0
self:refreshList()
end)
self._view:GetChild("btn_back_ban").onClick:Set(function()
self._search_ban_data = {}
self.ctr_search_b.selectedIndex = 0
self:refreshList()
end)
local fgCtr = ControllerManager.GetController(NewGroupController)
self._view:GetChild("btn_search_member").onClick:Set(function()
ViewUtil.ShowModalWait(nil)
local qid = tonumber(self._view:GetChild("tex_find_memb").text)
if not qid then
ViewUtil.CloseModalWait()
ViewUtil.ErrorTip(nil, "输入ID进行搜索")
return
end
fgCtr:FG_FindMember(self.group_id, qid, function(res)
ViewUtil.CloseModalWait()
if self._is_destroy then
return
end
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "找不到成员")
self._search_member_data = {}
self:refreshList()
else
self.ctr_search_m.selectedIndex = 1
self._search_member_data[1] = res.Data.members[1]
self:refreshList()
end
end)
end)
self._view:GetChild("btn_search_ban").onClick:Set(function()
local qid = tonumber(self._view:GetChild("tex_find_ban").text)
if not qid then
ViewUtil.ErrorTip(nil, "输入ID进行搜索")
return
end
for i = 1, #self.ban_list do
local data = self.ban_list[i]
if data.uid == qid then
self.ctr_search_b.selectedIndex = 1
self._search_ban_data[1] = data
self:refreshList()
return
end
end
ViewUtil.ErrorTip(nil, "找不到成员")
self._search_ban_data = {}
self:refreshList()
end)
self._view:GetChild("btn_ok").onClick:Set(function()
local set_list = {}
local del_list = {}
for i = 1, #self.ban_list do
table.insert(set_list, self.ban_list[i].uid)
end
for i = 1, #self.ori_ban do
local tem = self.ori_ban[i]
if not list_check(set_list, tem.uid) then
table.insert(del_list, tem.uid)
end
end
ViewUtil.ShowModalWait()
fgCtr:FG_SetBanTable(self.group_id, self.member_id, set_list, del_list, function(res)
ViewUtil.CloseModalWait()
if res.ReturnCode == 0 then
self:Destroy()
ViewUtil.ShowBannerOnScreenCenter("禁止同桌设置成功")
else
ViewUtil.ErrorTip(res.ReturnCode, "禁止同桌设置失败")
end
end)
end)
end
local function checkList(list, data)
for i = 1, #list do
if list[i].uid == data.uid then
return true
end
end
return false
end
function M:refreshList()
local all_members = self.all_members
if #self._search_member_data > 0 then
all_members = self._search_member_data
end
self.member_data = {}
for i = 1, #all_members do
local data = all_members[i]
if not checkList(self.ban_list, data) and data.uid ~= DataManager.SelfUser.account_id and data.uid ~= self.member_id then
local mdata = {}
mdata.nick = data.nick
mdata.uid = data.uid
mdata.portrait = data.portrait
if not checkList(self.member_data, mdata) then
table.insert(self.member_data, mdata)
end
end
end
self.lst_member.numItems = #self.member_data
if self.ctr_search_b.selectedIndex == 1 then
self.lst_ban.numItems = #self._search_ban_data
else
self.lst_ban.numItems = #self.ban_list
end
end
function M:getMemberData(index)
local group = DataManager.groups:get(self.group_id)
-- if index == 0 then
-- group:clearMember()
-- end
ViewUtil.ShowModalWait(nil)
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_GroupMembers(self.group_id, index, 10, false, 1, function(res)
ViewUtil.CloseModalWait()
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "获取成员列表失败")
else
list_concat(self.all_members, res.Data.members)
self:refreshList()
end
end)
end
function M:OnRenderMemberItem(index, obj)
local data
if #self._search_member_data > 0 then
data = self._search_member_data[index + 1]
else
data = self.member_data[index + 1]
end
self:FillItem(data, obj, 0)
end
function M:OnRenderBanItem(index, obj)
local data
if self.ctr_search_b.selectedIndex == 1 then
data = self._search_ban_data[index + 1]
else
data = self.ban_list[index + 1]
end
self:FillItem(data, obj, 1)
end
function M:FillItem(data, item, act)
item:GetController("act").selectedIndex = act
item:GetChild("tex_name").text = ViewUtil.stringEllipsis(data.nick)
item:GetChild("tex_id").text = "ID:" .. data.uid
btn_head = item:GetChild("btn_head")
ImageLoad.Load(data.portrait, btn_head._iconObject)
item:GetChild("btn_del").onClick:Set(function()
if self.ctr_search_b.selectedIndex == 1 then
list_remove(self.ban_list, data)
list_remove(self._search_ban_data, data)
else
list_remove(self.ban_list, data)
end
self:refreshList()
end)
item:GetChild("btn_set").onClick:Set(function()
if #self.ban_list >= 20 then
ViewUtil.ErrorTip(nil, "最多添加20个禁止同桌对象")
return
end
table.insert(self.ban_list, data)
self:refreshList()
end)
end
return M