More on UITable and the Market.

This commit is contained in:
BeniS 2012-07-22 05:17:03 +12:00
parent 9c8134c8a6
commit 76c7bf45bd
4 changed files with 57 additions and 31 deletions

View File

@ -1,9 +1,13 @@
Table < UITable Table < UITable
layout: verticalBox layout: verticalBox
column-style: TableColumn
row-style: TableRow
TableRow < UIScrollArea TableRow < Label
id: defaultRow
layout: horizontalBox layout: horizontalBox
height: 10 height: 10
TableColumn < UIScrollArea TableColumn < Label
id: defaultColumn
width: 30 width: 30

View File

@ -5,8 +5,9 @@ function UITable.create()
local table = UITable.internalCreate() local table = UITable.internalCreate()
table.rows = {} table.rows = {}
table.rows.columns = {} table.rows.columns = {}
table.rowStyle = {} table.rowBaseStyle = nil
table.columStyle = {} table.columBaseStyle = nil
table.selectedRow = nil
return table return table
end end
@ -22,23 +23,37 @@ function UITable:onStyleApply(styleName, styleNode)
for name, value in pairs(styleNode) do for name, value in pairs(styleNode) do
if name == 'column-style' then if name == 'column-style' then
addEvent(function() addEvent(function()
self:setRowStyle(self:getParent():getChildById(value)) self:setColumnStyle(value)
end) end)
elseif name == 'row-style' then elseif name == 'row-style' then
addEvent(function() addEvent(function()
self:setRowStyle(self:getParent():getChildById(value)) self:setRowStyle(value)
end) end)
end end
end end
end end
function UITable:addRow(columns, rowStyle, columStyle) function UITable:addRow(columns)
local row = g_ui.createWidget(rowStyle, self) if not columns or type(columns) ~= 'table' then
g_logger.error('UITable:addRow - table columns must be provided in a table')
end
-- TODO: table header rows as buttons.
--[[if #self.rows < 1 then
g_ui.createWidget(self.rowBaseStyle, self)
end]]
local row = g_ui.createWidget(self.rowBaseStyle, self)
row.columns = {} row.columns = {}
for k, data in pairs(columns) do for _, column in pairs(columns) do
local col = g_ui.createWidget(columStyle, row) local col = g_ui.createWidget(self.columBaseStyle, row)
col:setText(data) if column[1] then
col:setText(column[1])
end
if #column > 1 then
col:setWidth(column[2])
end
table.insert(row.columns, col) table.insert(row.columns, col)
end end
row.onClick = function(row) self:selectRow(row) end row.onClick = function(row) self:selectRow(row) end
@ -72,15 +87,15 @@ function UITable:selectRow(selectedRow)
end end
function UITable:setRowStyle(style) function UITable:setRowStyle(style)
self.rowStyle = style self.rowBaseStyle = style
for k, row in pairs(self.rows) do --[[for k, row in pairs(self.rows) do
row:setStyle(style) row:setStyle(style)
end end]]
end end
function UITable:setColumnStyle(style) function UITable:setColumnStyle(style)
self.columStyle = style self.columBaseStyle = style
for k, col in pairs(self.rows.columns) do --[[for k, col in pairs(self.rows.columns) do
col:setStyle(style) col:setStyle(style)
end end]]
end end

View File

@ -256,23 +256,23 @@ function Market.updateOffers(offers)
for k, offer in pairs(offers) do for k, offer in pairs(offers) do
if offer and offer:getAction() == MarketAction.Buy then if offer and offer:getAction() == MarketAction.Buy then
local data = { local data = {
offer:getPlayer(), {offer:getPlayer(), 80},
offer:getAmount(), {offer:getAmount(), 50},
offer:getPrice()*offer:getAmount(), {offer:getPrice()*offer:getAmount(), 80},
offer:getPrice(), {offer:getPrice(), 60},
offer:getTimeStamp() {offer:getTimeStamp(), 80}
} }
local row = buyOfferTable:addRow(data, 'OfferTableRow', 'OfferTableColumn') local row = buyOfferTable:addRow(data)
table.insert(marketOffers[MarketAction.Buy], offer) table.insert(marketOffers[MarketAction.Buy], offer)
else else
local data = { local data = {
offer:getPlayer(), {offer:getPlayer(), 80},
offer:getAmount(), {offer:getAmount(), 50},
offer:getPrice()*offer:getAmount(), {offer:getPrice()*offer:getAmount(), 80},
offer:getPrice(), {offer:getPrice(), 60},
offer:getTimeStamp() {offer:getTimeStamp(), 80}
} }
local row = sellOfferTable:addRow(data, 'OfferTableRow', 'OfferTableColumn') local row = sellOfferTable:addRow(data)
table.insert(marketOffers[MarketAction.Sell], offer) table.insert(marketOffers[MarketAction.Sell], offer)
end end
end end
@ -323,7 +323,10 @@ function Market.onMarketEnter(depotItems, offers, balance)
loadDepotItems(depotItems) loadDepotItems(depotItems)
-- TODO: if you are already viewing an item on market enter it must recheck the current item -- TODO: if you are already viewing an item on market enter it must recheck the current item
if selectedItem and selectedItem:isChecked() then print(selectedItem)
print(selectedItem:isChecked())
if selectedItem then
print('in')
selectedItem:setChecked(false) selectedItem:setChecked(false)
selectedItem:setChecked(true) selectedItem:setChecked(true)
end end

View File

@ -4,7 +4,7 @@ OfferTableRow < TableRow
text-offset: 2 0 text-offset: 2 0
focusable: true focusable: true
color: #cccccc color: #cccccc
height: 25 height: 15
$focus: $focus:
background-color: #294f6d background-color: #294f6d
@ -51,6 +51,8 @@ Panel
border-width: 1 border-width: 1
border-color: #191f27 border-color: #191f27
vertical-scrollbar: sellingTableScrollBar vertical-scrollbar: sellingTableScrollBar
row-style: OfferTableRow
column-style: OfferTableColumn
VerticalScrollBar VerticalScrollBar
id: sellingTableScrollBar id: sellingTableScrollBar
@ -91,6 +93,8 @@ Panel
border-width: 1 border-width: 1
border-color: #191f27 border-color: #191f27
vertical-scrollbar: buyingTableScrollBar vertical-scrollbar: buyingTableScrollBar
row-style: OfferTableRow
column-style: OfferTableColumn
VerticalScrollBar VerticalScrollBar
id: buyingTableScrollBar id: buyingTableScrollBar