add screen rotate support

pull/2/merge
Qingping Hou 12 years ago
parent 4c71c628d3
commit 51ed793d14

@ -30,6 +30,10 @@ function ReaderFont:init()
self.font_size = self.ui.document:getFontSize()
end
function ReaderFont:onSetDimensions(dimen)
self.dimen = dimen
end
function ReaderFont:onShowFontMenu()
-- build menu item_table
local face_list = cre.getFontFaces()

@ -8,17 +8,46 @@ function ReaderMenu:onShowMenu()
local item_table = {}
table.insert(item_table, {
text = "Switch zoom mode",
text = "Screen rotate",
sub_item_table = {
{
text = "Zoom to fit content width",
text = "rotate 90 degree clockwise",
callback = function()
Screen:screenRotate("clockwise")
self.ui:handleEvent(Event:new("SetDimensions", Screen:getSize()))
end
},
{
text = "Zoom to fit content height",
text = "rotate 90 degree anticlockwise",
callback = function()
Screen:screenRotate("anticlockwise")
self.ui:handleEvent(Event:new("SetDimensions", Screen:getSize()))
end
},
}
})
if self.ui.document.info.has_pages then
table.insert(item_table, {
text = "Switch zoom mode",
sub_item_table = {
{
text = "Zoom to fit content width",
},
{
text = "Zoom to fit content height",
},
}
})
else
table.insert(item_table, {
text = "Font menu",
callback = function()
self.ui:handleEvent(Event:new("ShowFontMenu"))
end
})
end
table.insert(item_table, {
text = "Return to file browser"
})
@ -30,6 +59,12 @@ function ReaderMenu:onShowMenu()
height = #item_table + 3 * 28
}
function main_menu:onMenuChoice(item)
if item.callback then
item.callback()
end
end
UIManager:show(main_menu)
return true

@ -69,6 +69,10 @@ function ReaderToc:onShowToc()
UIManager:show(toc_menu)
end
function ReaderToc:onSetDimensions(dimen)
self.dimen = dimen
end
function ReaderToc:onPageUpdate(new_page_no)
self.current_page = new_page_no
end

@ -59,21 +59,16 @@ function ReaderView:recalculate()
self.page_area = page_size
-- reset our size
self.visible_area:setSizeTo(self.ui.dimen)
self.visible_area:setSizeTo(self.dimen)
-- and recalculate it according to page size
self.visible_area:offsetWithin(self.page_area, 0, 0)
else
self.visible_area:setSizeTo(self.ui.dimen)
self.visible_area:setSizeTo(self.dimen)
end
-- flag a repaint
UIManager:setDirty(self.dialog)
end
function ReaderView:onSetDimensions(dimensions)
-- recalculate view
self:recalculate()
end
function ReaderView:PanningUpdate(dx, dy)
DEBUG("pan by", dx, dy)
local old = self.visible_area:copy()
@ -87,6 +82,12 @@ function ReaderView:PanningUpdate(dx, dy)
return true
end
function ReaderView:onSetDimensions(dimensions)
self.dimen = dimensions
-- recalculate view
self:recalculate()
end
function ReaderView:onPageUpdate(new_page_no)
self.state.page = new_page_no
self:recalculate()

@ -43,6 +43,7 @@ function ReaderUI:init()
-- a view container (so it must be child #1!)
self[1] = ReaderView:new{
dialog = self.dialog,
dimen = self.dimen,
ui = self
}
-- rotation controller
@ -114,6 +115,10 @@ function ReaderUI:init()
self:handleEvent(Event:new("SetDimensions", self.dimen))
end
function ReaderUI:onSetDimensions(dimen)
self.dimen = dimen
end
function ReaderUI:onClose()
DEBUG("closing reader")
if self.document then

@ -66,6 +66,7 @@ function Screen:screenRotate(orien)
self.fb:setOrientation(self.cur_rotation_mode)
self.fb:close()
self.fb = einkfb.open("/dev/fb0")
Input.rotation = self.cur_rotation_mode
end
function Screen:getSize()

Loading…
Cancel
Save