You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.5 KiB
114 lines
2.5 KiB
|
5 years ago
|
--[[
|
||
|
|
View.lua
|
||
|
|
@Author : DengSir (tdaddon@163.com)
|
||
|
|
@Link : https://dengsir.github.io
|
||
|
|
]]
|
||
|
|
|
||
|
|
local MAJOR, MINOR = 'View', 1
|
||
|
|
local GUI = LibStub('tdGUI-1.0')
|
||
|
|
local View, oldminor = GUI:NewEmbed(MAJOR, MINOR)
|
||
|
|
if not View then return end
|
||
|
|
|
||
|
|
function View:SetItemList(itemList)
|
||
|
|
self._itemList = itemList
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetItemList()
|
||
|
|
return self._itemList
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:SetItemHeight(itemHeight)
|
||
|
|
self._itemHeight = itemHeight
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetItemHeight()
|
||
|
|
return self._itemHeight or 20
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:SetItemWidth(itemWidth)
|
||
|
|
self._itemWidth = itemWidth
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetItemWidth()
|
||
|
|
return self._itemWidth
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:SetItemSpacing(itemSpacing)
|
||
|
|
self._itemSpacing = itemSpacing
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetItemSpacing()
|
||
|
|
return self._itemSpacing or 0
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:SetPadding(...)
|
||
|
|
self._leftPadding,
|
||
|
|
self._rightPadding,
|
||
|
|
self._topPadding,
|
||
|
|
self._bottomPadding = ...
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetPadding()
|
||
|
|
return self._leftPadding or 0,
|
||
|
|
self._rightPadding or self._leftPadding or 0,
|
||
|
|
self._topPadding or self._leftPadding or 0,
|
||
|
|
self._bottomPadding or self._leftPadding or 0
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:SetItemClass(itemClass)
|
||
|
|
self._itemClass = itemClass
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetItemClass()
|
||
|
|
return self._itemClass or GUI:GetClass('ViewItem')
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetItem(index)
|
||
|
|
-- return (self._filterList or self._itemList)[index]
|
||
|
|
if self._filterList then
|
||
|
|
return self._filterList[index]
|
||
|
|
elseif self._itemList then
|
||
|
|
return self._itemList[index]
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetItemCount()
|
||
|
|
return self._filterList and #self._filterList or self._itemList and #self._itemList or 0
|
||
|
|
end
|
||
|
|
|
||
|
|
function View:GetButton(index)
|
||
|
|
if not self._buttons[index] then
|
||
|
|
local parent = self.scrollChild or self
|
||
|
|
local button = self:GetItemClass():New(parent)
|
||
|
|
|
||
|
|
button:Hide()
|
||
|
|
button:SetOwner(self)
|
||
|
|
button:SetFrameLevel(parent:GetFrameLevel() + 1)
|
||
|
|
|
||
|
|
self._buttons[index] = button
|
||
|
|
self:UpdateItemPosition(index)
|
||
|
|
self:Fire('OnItemCreated', button, index)
|
||
|
|
end
|
||
|
|
return self._buttons[index]
|
||
|
|
end
|
||
|
|
|
||
|
|
local mixins = {
|
||
|
|
'SetItemList',
|
||
|
|
'GetItemList',
|
||
|
|
'SetItemHeight',
|
||
|
|
'GetItemHeight',
|
||
|
|
'SetItemWidth',
|
||
|
|
'GetItemWidth',
|
||
|
|
'SetItemSpacing',
|
||
|
|
'GetItemSpacing',
|
||
|
|
'SetPadding',
|
||
|
|
'GetPadding',
|
||
|
|
'SetItemClass',
|
||
|
|
'GetItemClass',
|
||
|
|
'GetItem',
|
||
|
|
'GetItemCount',
|
||
|
|
'GetButton',
|
||
|
|
}
|
||
|
|
|
||
|
|
View.Embed = GUI:EmbedFactory(View, mixins)
|