Files
koreader/frontend/apps/reader/modules/readergoto.lua

93 lines
2.6 KiB
Lua
Raw Normal View History

2013-10-18 22:38:07 +02:00
local InputContainer = require("ui/widget/container/inputcontainer")
local InputDialog = require("ui/widget/inputdialog")
local UIManager = require("ui/uimanager")
local Screen = require("ui/screen")
local Event = require("ui/event")
2013-10-22 20:51:29 +02:00
local DEBUG = require("dbg")
2013-10-18 22:38:07 +02:00
local _ = require("gettext")
2013-07-30 23:09:08 +08:00
2013-10-18 22:38:07 +02:00
local ReaderGoto = InputContainer:new{
2014-03-13 21:52:43 +08:00
goto_menu_title = _("Go To"),
goto_dialog_title = _("Go to Page or Location"),
2013-07-30 23:09:08 +08:00
}
function ReaderGoto:init()
2014-03-13 21:52:43 +08:00
self.ui.menu:registerToMainMenu(self)
2013-07-31 13:51:01 +08:00
end
function ReaderGoto:addToMainMenu(tab_item_table)
2014-03-13 21:52:43 +08:00
-- insert goto command to main reader menu
table.insert(tab_item_table.navi, {
text = self.goto_menu_title,
callback = function()
self:onShowGotoDialog()
end,
})
2013-07-31 13:51:01 +08:00
end
function ReaderGoto:onShowGotoDialog()
2014-03-13 21:52:43 +08:00
DEBUG("show goto dialog")
self.goto_dialog = InputDialog:new{
title = self.goto_dialog_title,
input_hint = "(1 - "..self.document:getPageCount()..")",
buttons = {
{
{
text = _("Cancel"),
enabled = true,
callback = function()
self:close()
end,
},
{
text = _("Page"),
enabled = self.document.info.has_pages,
callback = function()
self:gotoPage()
end,
},
{
text = _("Location"),
enabled = not self.document.info.has_pages,
callback = function()
self:gotoLocation()
end,
},
},
},
input_type = "number",
enter_callback = self.document.info.has_pages
and function() self:gotoPage() end
or function() self:gotoLocation() end,
width = Screen:getWidth() * 0.8,
height = Screen:getHeight() * 0.2,
}
self.goto_dialog:onShowKeyboard()
UIManager:show(self.goto_dialog)
2013-07-30 23:09:08 +08:00
end
2013-07-30 23:37:51 +08:00
function ReaderGoto:close()
2014-03-13 21:52:43 +08:00
self.goto_dialog:onClose()
UIManager:close(self.goto_dialog)
2013-07-30 23:09:08 +08:00
end
2013-07-30 23:37:51 +08:00
function ReaderGoto:gotoPage()
2014-03-13 21:52:43 +08:00
local number = tonumber(self.goto_dialog:getInputText())
if number then
self.ui:handleEvent(Event:new("GotoPage", number))
end
self:close()
return true
2013-07-30 23:09:08 +08:00
end
2013-07-30 23:37:51 +08:00
function ReaderGoto:gotoLocation()
2014-03-13 21:52:43 +08:00
local number = tonumber(self.goto_dialog:getInputText())
if number then
self.ui:handleEvent(Event:new("GotoPage", number))
end
self:close()
return true
2013-07-30 23:09:08 +08:00
end
2013-10-18 22:38:07 +02:00
return ReaderGoto