2
0
mirror of https://github.com/koreader/koreader synced 2024-11-10 01:10:34 +00:00
koreader/frontend/ui/reader/readermenu.lua

115 lines
2.2 KiB
Lua
Raw Normal View History

ReaderMenu = InputContainer:new{
2013-02-02 06:36:29 +00:00
_name = "ReaderMenu",
item_table = {},
registered_widgets = {},
}
function ReaderMenu:init()
self.item_table = {}
self.registered_widgets = {}
2013-02-02 06:36:29 +00:00
if Device:hasKeyboard() then
self.key_events = {
ShowMenu = { { "Menu" }, doc = "show menu" },
}
end
end
2013-02-02 06:36:29 +00:00
function ReaderMenu:initGesListener()
self.ges_events = {
TapShowMenu = {
GestureRange:new{
ges = "tap",
range = Geom:new{
x = 0, y = 0,
w = Screen:getWidth(),
h = Screen:getHeight()/4,
}
}
},
}
end
function ReaderMenu:setUpdateItemTable()
table.insert(self.item_table, {
2012-06-12 16:14:23 +00:00
text = "Screen rotate",
2012-06-11 05:46:19 +00:00
sub_item_table = {
{
2013-02-02 06:36:29 +00:00
text = "landscape",
2012-06-12 16:14:23 +00:00
callback = function()
self.ui:handleEvent(
Event:new("SetScreenMode", "landscape"))
2012-06-12 16:14:23 +00:00
end
2012-06-11 05:46:19 +00:00
},
{
2013-02-02 06:36:29 +00:00
text = "portrait",
2012-06-12 16:14:23 +00:00
callback = function()
self.ui:handleEvent(
Event:new("SetScreenMode", "portrait"))
2012-06-12 16:14:23 +00:00
end
2012-06-11 05:46:19 +00:00
},
}
})
for _, widget in pairs(self.registered_widgets) do
widget:addToMainMenu(self.item_table)
end
table.insert(self.item_table, {
2013-02-02 19:41:35 +00:00
text = "Return to file manager",
callback = function()
self.ui:handleEvent(Event:new("RestoreScreenMode",
G_reader_settings:readSetting("screen_mode") or "portrait"))
UIManager:close(self.menu_container)
self.ui:onClose()
end
})
end
function ReaderMenu:onShowMenu()
if #self.item_table == 0 then
self:setUpdateItemTable()
end
local main_menu = Menu:new{
title = "Document menu",
item_table = self.item_table,
width = Screen:getWidth() - 100,
}
2012-06-12 16:14:23 +00:00
local menu_container = CenterContainer:new{
ignore = "height",
dimen = Screen:getSize(),
main_menu,
}
main_menu.close_callback = function ()
UIManager:close(menu_container)
end
-- maintain a reference to menu_container
self.menu_container = menu_container
UIManager:show(menu_container)
return true
end
function ReaderMenu:onTapShowMenu()
self:onShowMenu()
return true
end
function ReaderMenu:onSetDimensions(dimen)
2013-02-02 06:36:29 +00:00
-- update listening according to new screen dimen
if Device:isTouchDevice() then
self:initGesListener()
end
end
function ReaderMenu:onCloseDocument()
end
function ReaderMenu:registerToMainMenu(widget)
table.insert(self.registered_widgets, widget)
end