diff --git a/frontend/apps/reader/modules/readergoto.lua b/frontend/apps/reader/modules/readergoto.lua index 64949bf24..2d5393310 100644 --- a/frontend/apps/reader/modules/readergoto.lua +++ b/frontend/apps/reader/modules/readergoto.lua @@ -43,8 +43,9 @@ function ReaderGoto:onShowGotoDialog() else input_hint = T("@%1 (1 - %2)", curr_page, self.document:getPageCount()) end + input_hint = input_hint .. string.format(" %.2f%%", curr_page / self.document:getPageCount() * 100) self.goto_dialog = InputDialog:new{ - title = _("Enter page number"), + title = _("Enter page number or percentage"), input_hint = input_hint, description = self.document:hasHiddenFlows() and _([[ @@ -55,36 +56,42 @@ x for an absolute page number buttons = { { { - text = _("Cancel"), + text = _("Skim"), callback = function() self:close() + self.skimto = SkimToWidget:new{ + document = self.document, + ui = self.ui, + callback_switch_to_goto = function() + UIManager:close(self.skimto) + self:onShowGotoDialog() + end, + } + UIManager:show(self.skimto) + end, }, { - text = _("Go to page"), - is_enter_default = true, + text = _("Go to %"), callback = function() - self:gotoPage() + self:gotoPercent() end, } }, { { - text = _("Skim document"), + text = _("Cancel"), callback = function() self:close() - self.skimto = SkimToWidget:new{ - document = self.document, - ui = self.ui, - callback_switch_to_goto = function() - UIManager:close(self.skimto) - self:onShowGotoDialog() - end, - } - UIManager:show(self.skimto) - end, }, + { + text = _("Go to page"), + is_enter_default = true, + callback = function() + self:gotoPage() + end, + } }, }, input_type = "number", @@ -161,6 +168,15 @@ function ReaderGoto:gotoPage() end end +function ReaderGoto:gotoPercent() + local number = self.goto_dialog:getInputValue() + if number then + self.ui.link:addCurrentLocationToStack() + self.ui:handleEvent(Event:new("GotoPercent", number)) + self:close() + end +end + function ReaderGoto:onGoToBeginning() local new_page = self.ui.document:getNextPage(0) if new_page then