Files
koreader/frontend/ui/widget/progresswidget.lua

54 lines
1.5 KiB
Lua
Raw Normal View History

2013-10-18 22:38:07 +02:00
local Widget = require("ui/widget/widget")
local Geom = require("ui/geometry")
2013-03-13 01:18:53 +08:00
--[[
ProgressWidget shows a progress bar
--]]
2013-10-18 22:38:07 +02:00
local ProgressWidget = Widget:new{
2014-03-13 21:52:43 +08:00
width = nil,
height = nil,
margin_h = 3,
margin_v = 1,
radius = 2,
bordersize = 1,
bordercolor = 15,
bgcolor = 0,
rectcolor = 10,
percentage = nil,
ticks = {},
tick_width = 3,
2014-08-09 08:58:44 +02:00
last = nil,
2013-03-13 01:18:53 +08:00
}
function ProgressWidget:getSize()
2014-03-13 21:52:43 +08:00
return { w = self.width, h = self.height }
2013-03-13 01:18:53 +08:00
end
function ProgressWidget:paintTo(bb, x, y)
2014-03-13 21:52:43 +08:00
local my_size = self:getSize()
self.dimen = Geom:new{
x = x, y = y,
w = my_size.w,
h = my_size.h
2014-03-13 21:52:43 +08:00
}
bb:paintRoundedRect(x, y, my_size.w, my_size.h, self.bgcolor, self.radius)
bb:paintBorder(x, y, my_size.w, my_size.h,
self.bordersize, self.bordercolor, self.radius)
bb:paintRect(x+self.margin_h, y+self.margin_v+self.bordersize,
(my_size.w-2*self.margin_h)*self.percentage,
(my_size.h-2*(self.margin_v+self.bordersize)), self.rectcolor)
for i=1, #self.ticks do
local page = self.ticks[i]
bb:paintRect(
x + (my_size.w-2*self.margin_h)*(page/self.last),
y + self.margin_v + self.bordersize, self.tick_width,
(my_size.h-2*(self.margin_v+self.bordersize)), self.bordercolor)
2014-08-09 08:58:44 +02:00
end
2013-03-13 01:18:53 +08:00
end
function ProgressWidget:setPercentage(percentage)
2014-03-13 21:52:43 +08:00
self.percentage = percentage
2013-03-13 01:18:53 +08:00
end
2013-10-18 22:38:07 +02:00
return ProgressWidget