PGRData/Script/matrix/xui/xuibase/XUiTabBtnGroup.lua

77 lines
No EOL
2 KiB
Lua

XUiTabBtnGroup = XClass(XUiTabBtnGroup, "XUiTabBtnGroup")
XUiTabBtnGroup.TabBtnType = {
Normal = 1,
Chapter = 2,
}
function XUiTabBtnGroup:Ctor(btnList, callback, clickCheck, isLockClick, tabType)
self.TabBtnList = {}
self.Callback = callback
self.ClickCheck = clickCheck
if tabType == nil then
for index, btn in ipairs(btnList) do
local tabBtn = XUiBtnTab.New(btn, index, function(i) self:SelectIndex(i) end, isLockClick)
table.insert(self.TabBtnList, tabBtn)
end
elseif tabType == XUiTabBtnGroup.TabBtnType.Chapter then
for index, btn in ipairs(btnList) do
local tabBtn = XUiChapterBtnTab.New(btn, index, function(i) self:SelectIndex(i) end, isLockClick)
table.insert(self.TabBtnList, tabBtn)
end
end
end
function XUiTabBtnGroup:SelectIndex(index)
if self.ClickCheck then
local success = false
for i, btn in ipairs(self.TabBtnList) do
if (i == index) then
if self.ClickCheck(index) then
btn:OnSelect(true)
success = true
end
end
end
if not success then return end
for i, btn in ipairs(self.TabBtnList) do
if (i ~= index) then
btn:OnSelect(false)
end
end
else
for i, btn in ipairs(self.TabBtnList) do
if (i == index) then
btn:OnSelect(true)
else
btn:OnSelect(false)
end
end
end
if (self.Callback) then
self.Callback(index)
end
end
function XUiTabBtnGroup:LockIndex(index)
local btn = self.TabBtnList[index]
if (btn) then
btn:Lock(true)
end
end
function XUiTabBtnGroup:UnLockIndex(index)
local btn = self.TabBtnList[index]
if (btn) then
btn:Lock(false)
end
end
function XUiTabBtnGroup:Dispose()
for _, btn in ipairs(self.TabBtnList) do
btn:Dispose()
end
self.Callback = nil
self.TabBtnList = nil
end