mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
add screen rotate support
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user