|
|
@ -50,10 +50,66 @@ function FileChooser:setPath(newPath)
|
|
|
|
return true
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function FileChooser:rotationMode()
|
|
|
|
|
|
|
|
--[[
|
|
|
|
|
|
|
|
return code for four kinds of rotation mode:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 for no rotation,
|
|
|
|
|
|
|
|
1 for landscape with bottom on the right side of screen, etc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
3 | | 1
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
--]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
orie_fd = io.open("/sys/module/eink_fb_hal_broads/parameters/bs_orientation", "r")
|
|
|
|
|
|
|
|
updown_fd = io.open("/sys/module/eink_fb_hal_broads/parameters/bs_upside_down", "r")
|
|
|
|
|
|
|
|
mode = orie_fd:read() + (updown_fd:read() * 2)
|
|
|
|
|
|
|
|
return mode
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function FileChooser:choose(ypos, height)
|
|
|
|
function FileChooser:choose(ypos, height)
|
|
|
|
local perpage = math.floor(height / self.spacing) - 1
|
|
|
|
local perpage = math.floor(height / self.spacing) - 1
|
|
|
|
local pagedirty = true
|
|
|
|
local pagedirty = true
|
|
|
|
local markerdirty = false
|
|
|
|
local markerdirty = false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
prevItem = function ()
|
|
|
|
|
|
|
|
if self.current == 1 then
|
|
|
|
|
|
|
|
if self.page > 1 then
|
|
|
|
|
|
|
|
self.current = perpage
|
|
|
|
|
|
|
|
self.page = self.page - 1
|
|
|
|
|
|
|
|
pagedirty = true
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
self.current = self.current - 1
|
|
|
|
|
|
|
|
markerdirty = true
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nextItem = function ()
|
|
|
|
|
|
|
|
if self.current == perpage then
|
|
|
|
|
|
|
|
if self.page < (self.items / perpage) then
|
|
|
|
|
|
|
|
self.current = 1
|
|
|
|
|
|
|
|
self.page = self.page + 1
|
|
|
|
|
|
|
|
pagedirty = true
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
if self.page ~= math.floor(self.items / perpage) + 1
|
|
|
|
|
|
|
|
or self.current + (self.page-1)*perpage < self.items then
|
|
|
|
|
|
|
|
self.current = self.current + 1
|
|
|
|
|
|
|
|
markerdirty = true
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
while true do
|
|
|
|
while true do
|
|
|
|
if pagedirty then
|
|
|
|
if pagedirty then
|
|
|
|
fb.bb:paintRect(0, ypos, fb.bb:getWidth(), height, 0)
|
|
|
|
fb.bb:paintRect(0, ypos, fb.bb:getWidth(), height, 0)
|
|
|
@ -93,29 +149,28 @@ function FileChooser:choose(ypos, height)
|
|
|
|
local ev = input.waitForEvent()
|
|
|
|
local ev = input.waitForEvent()
|
|
|
|
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
|
|
|
|
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
|
|
|
|
if ev.code == KEY_FW_UP then
|
|
|
|
if ev.code == KEY_FW_UP then
|
|
|
|
if self.current == 1 then
|
|
|
|
if self:rotationMode() == 0 then
|
|
|
|
if self.page > 1 then
|
|
|
|
prevItem()
|
|
|
|
self.current = perpage
|
|
|
|
elseif self:rotationMode() == 2 then
|
|
|
|
self.page = self.page - 1
|
|
|
|
nextItem()
|
|
|
|
pagedirty = true
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
self.current = self.current - 1
|
|
|
|
|
|
|
|
markerdirty = true
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
elseif ev.code == KEY_FW_DOWN then
|
|
|
|
elseif ev.code == KEY_FW_DOWN then
|
|
|
|
if self.current == perpage then
|
|
|
|
if self:rotationMode() == 0 then
|
|
|
|
if self.page < (self.items / perpage) then
|
|
|
|
nextItem()
|
|
|
|
self.current = 1
|
|
|
|
elseif self:rotationMode() == 2 then
|
|
|
|
self.page = self.page + 1
|
|
|
|
prevItem()
|
|
|
|
pagedirty = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
elseif ev.code == KEY_FW_LEFT then
|
|
|
|
else
|
|
|
|
if self:rotationMode() == 1 then
|
|
|
|
if self.page ~= math.floor(self.items / perpage) + 1
|
|
|
|
prevItem()
|
|
|
|
or self.current + (self.page-1)*perpage < self.items then
|
|
|
|
elseif self:rotationMode() == 3 then
|
|
|
|
self.current = self.current + 1
|
|
|
|
nextItem()
|
|
|
|
markerdirty = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
elseif ev.code == KEY_FW_RIGHT then
|
|
|
|
|
|
|
|
if self:rotationMode() == 1 then
|
|
|
|
|
|
|
|
nextItem()
|
|
|
|
|
|
|
|
elseif self:rotationMode() == 3 then
|
|
|
|
|
|
|
|
prevItem()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
elseif ev.code == KEY_PGFWD then
|
|
|
|
elseif ev.code == KEY_PGFWD then
|
|
|
|
if self.page < (self.items / perpage) then
|
|
|
|
if self.page < (self.items / perpage) then
|
|
|
|