2
0
mirror of https://github.com/koreader/koreader synced 2024-11-18 03:25:46 +00:00
koreader/frontend/ui/reader/readermenu.lua

147 lines
3.4 KiB
Lua
Raw Normal View History

2013-10-18 20:38:07 +00:00
local InputContainer = require("ui/widget/container/inputcontainer")
local CenterContainer = require("ui/widget/container/centercontainer")
local TouchMenu = require("ui/widget/touchmenu")
local UIManager = require("ui/uimanager")
local Device = require("ui/device")
local GestureRange = require("ui/gesturerange")
local Geom = require("ui/geometry")
local Event = require("ui/event")
local Screen = require("ui/screen")
local Menu = require("ui/widget/menu")
local InfoMessage = require("ui/widget/infomessage")
2013-10-18 20:38:07 +00:00
local _ = require("gettext")
local ReaderMenu = InputContainer:new{
2013-03-14 05:58:42 +00:00
tab_item_table = nil,
registered_widgets = {},
}
function ReaderMenu:init()
2013-03-14 05:58:42 +00:00
self.tab_item_table = {
main = {
icon = "resources/icons/appbar.pokeball.png",
},
navi = {
icon = "resources/icons/appbar.page.corner.bookmark.png",
},
typeset = {
icon = "resources/icons/appbar.page.text.png",
},
2013-03-17 03:52:14 +00:00
home = {
icon = "resources/icons/appbar.home.png",
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,
},
2013-03-14 05:58:42 +00:00
}
self.registered_widgets = {}
2013-02-02 06:36:29 +00:00
if Device:hasKeyboard() then
self.key_events = {
2013-04-08 07:21:59 +00:00
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{
2013-12-17 12:11:34 +00:00
x = Screen:getWidth()*DTAP_ZONE_MENU.x,
y = Screen:getHeight()*DTAP_ZONE_MENU.y,
w = Screen:getWidth()*DTAP_ZONE_MENU.w,
h = Screen:getHeight()*DTAP_ZONE_MENU.h
2013-02-02 06:36:29 +00:00
}
}
},
}
end
function ReaderMenu:setUpdateItemTable()
for _, widget in pairs(self.registered_widgets) do
2013-03-14 05:58:42 +00:00
widget:addToMainMenu(self.tab_item_table)
end
2013-03-14 05:58:42 +00:00
table.insert(self.tab_item_table.main, {
2013-04-07 08:35:40 +00:00
text = _("Help"),
callback = function()
2013-03-17 04:17:37 +00:00
UIManager:show(InfoMessage:new{
2013-04-09 17:32:30 +00:00
text = _("Please report bugs to https://github.com/koreader/ koreader/issues, Click at the bottom of the page for more options"),
2013-03-17 04:17:37 +00:00
})
end
})
end
function ReaderMenu:onShowMenu()
2013-03-14 05:58:42 +00:00
if #self.tab_item_table.main == 0 then
self:setUpdateItemTable()
end
2013-03-15 09:18:34 +00:00
local menu_container = CenterContainer:new{
ignore = "height",
dimen = Screen:getSize(),
}
2013-03-14 05:58:42 +00:00
local main_menu = nil
if Device:isTouchDevice() then
main_menu = TouchMenu:new{
width = Screen:getWidth(),
2013-03-15 06:54:23 +00:00
tab_item_table = {
2013-03-14 05:58:42 +00:00
self.tab_item_table.navi,
self.tab_item_table.typeset,
self.tab_item_table.main,
2013-03-17 03:52:14 +00:00
self.tab_item_table.home,
2013-03-14 05:58:42 +00:00
},
2013-03-15 09:23:39 +00:00
show_parent = menu_container,
2013-03-14 05:58:42 +00:00
}
else
main_menu = Menu:new{
2013-04-07 08:35:40 +00:00
title = _("Document menu"),
2013-03-14 05:58:42 +00:00
item_table = {},
width = Screen:getWidth() - 100,
}
for _,item_table in pairs(self.tab_item_table) do
for k,v in ipairs(item_table) do
table.insert(main_menu.item_table, v)
end
end
end
2012-06-12 16:14:23 +00:00
2013-03-13 02:44:33 +00:00
main_menu.close_callback = function ()
UIManager:close(menu_container)
end
2013-03-15 09:18:34 +00:00
menu_container[1] = main_menu
-- 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
2013-10-18 20:38:07 +00:00
return ReaderMenu