support goto relative page number

We can input relative page number now in the reader goto dialog.
Goto "+4" will page forward 4 pages and goto "-4" will page
backward 4 pages.

This implements #1437.
pull/1448/head
chrox 9 years ago
parent ea76d91ed4
commit 992e769aaf

@ -31,7 +31,7 @@ function ReaderGoto:onShowGotoDialog()
title = self.goto_dialog_title,
input_hint = "(1 - "..self.document:getPageCount()..")",
buttons = {
{
{
{
text = _("Cancel"),
enabled = true,
@ -50,15 +50,13 @@ function ReaderGoto:onShowGotoDialog()
text = _("Location"),
enabled = not self.document.info.has_pages,
callback = function()
self:gotoLocation()
self:gotoPage()
end,
},
},
},
input_type = "number",
enter_callback = self.document.info.has_pages
and function() self:gotoPage() end
or function() self:gotoLocation() end,
enter_callback = function() self:gotoPage() end,
width = Screen:getWidth() * 0.8,
height = Screen:getHeight() * 0.2,
}
@ -72,21 +70,17 @@ function ReaderGoto:close()
end
function ReaderGoto:gotoPage()
local number = tonumber(self.goto_dialog:getInputText())
if number then
self.ui:handleEvent(Event:new("GotoPage", number))
end
self:close()
return true
end
function ReaderGoto:gotoLocation()
local number = tonumber(self.goto_dialog:getInputText())
local page_number = self.goto_dialog:getInputText()
local relative_sign = page_number:sub(1, 1)
local number = tonumber(page_number)
if number then
self.ui:handleEvent(Event:new("GotoPage", number))
if relative_sign == "+" or relative_sign == "-" then
self.ui:handleEvent(Event:new("GotoRelativePage", number))
else
self.ui:handleEvent(Event:new("GotoPage", number))
end
self:close()
end
self:close()
return true
end
return ReaderGoto

@ -799,6 +799,11 @@ function ReaderPaging:onGotoPage(number)
return true
end
function ReaderPaging:onGotoRelativePage(number)
self:gotoPage(self.current_page + number)
return true
end
function ReaderPaging:onGotoPercentage(percentage)
if percentage < 0 then percentage = 0 end
if percentage > 1 then percentage = 1 end

@ -331,6 +331,14 @@ function ReaderRolling:onGotoPage(number)
return true
end
function ReaderRolling:onGotoRelativePage(number)
if number then
self:gotoPage(self.current_page + number)
end
self.xpointer = self.ui.document:getXPointer()
return true
end
function ReaderRolling:onGotoXPointer(xp)
self:gotoXPointer(xp)
self.xpointer = xp

Loading…
Cancel
Save