diff --git a/frontend/apps/reader/modules/readergoto.lua b/frontend/apps/reader/modules/readergoto.lua index 83b47dab8..8cf1427e4 100644 --- a/frontend/apps/reader/modules/readergoto.lua +++ b/frontend/apps/reader/modules/readergoto.lua @@ -172,6 +172,14 @@ function ReaderGoto:onGoToBeginning() return true end +function ReaderGoto:onGoToRandom() + local last_page = self.ui.document:getPageCount() + local random_page = math.random(1,last_page) + self.ui.link:addCurrentLocationToStack() + self.ui:handleEvent(Event:new("GotoPage", random_page)) + return true +end + function ReaderGoto:onGoToEnd() local new_page = self.ui.document:getPrevPage(0) if new_page then diff --git a/frontend/dispatcher.lua b/frontend/dispatcher.lua index 2b2cc1780..93c2e0baf 100644 --- a/frontend/dispatcher.lua +++ b/frontend/dispatcher.lua @@ -140,6 +140,7 @@ local settingsList = { next_chapter = {category="none", event="GotoNextChapter", title=_("Next chapter"), reader=true}, first_page = {category="none", event="GoToBeginning", title=_("First page"), reader=true}, last_page = {category="none", event="GoToEnd", title=_("Last page"), reader=true}, + random_page = {category="none", event="GoToRandom", title=_("Random page"), reader=true}, page_jmp = {category="absolutenumber", event="GotoViewRel", min=-100, max=100, title=_("Turn pages"), reader=true}, go_to = {category="none", event="ShowGotoDialog", title=_("Go to page"), filemanager=true, reader=true}, skim = {category="none", event="ShowSkimtoDialog", title=_("Skim document"), reader=true}, @@ -359,6 +360,7 @@ local dispatcher_menu_order = { "next_chapter", "first_page", "last_page", + "random_page", "page_jmp", "go_to", "skim", diff --git a/plugins/gestures.koplugin/migration.lua b/plugins/gestures.koplugin/migration.lua index 6c79c1001..33876a2c4 100644 --- a/plugins/gestures.koplugin/migration.lua +++ b/plugins/gestures.koplugin/migration.lua @@ -53,6 +53,8 @@ function Migration:convertAction(location, ges, action) result = {first_page = true,} elseif action == "last_page" then result = {last_page = true,} + elseif action == "random_page" then + result = {random_page = true,} elseif action == "prev_chapter" then result = {prev_chapter = true,} elseif action == "next_bookmark" then