diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index aae249cea..8e235986f 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -266,6 +266,12 @@ function FileManagerMenu:setUpdateItemTable() for id, common_setting in pairs(require("ui/elements/common_info_menu_table")) do self.menu_items[id] = common_setting end + self.menu_items.exit_menu = { + text = _("Exit"), + hold_callback = function() + self:exitOrRestart() + end, + } self.menu_items.exit = { text = _("Exit"), callback = function() diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index d01e6f6c9..387120cc2 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -184,13 +184,18 @@ function ReaderMenu:setUpdateItemTable() self.menu_items[id] = common_setting end + self.menu_items.exit_menu = { + text = _("Exit"), + hold_callback = function() + self:exitOrRestart() + end, + } self.menu_items.exit = { text = _("Exit"), callback = function() self:exitOrRestart() end, } - self.menu_items.restart_koreader = { text = _("Restart KOReader"), callback = function() diff --git a/frontend/ui/elements/common_info_menu_table.lua b/frontend/ui/elements/common_info_menu_table.lua index d2043ab25..299370c96 100644 --- a/frontend/ui/elements/common_info_menu_table.lua +++ b/frontend/ui/elements/common_info_menu_table.lua @@ -1,3 +1,4 @@ +local ConfirmBox = require("ui/widget/confirmbox") local Device = require("device") local InfoMessage = require("ui/widget/infomessage") local UIManager = require("ui/uimanager") @@ -52,17 +53,38 @@ common_info.report_bug = { }) end } + +if Device:isKindle() or Device:isKobo() then + common_info.sleep = { + text = _("Sleep"), + callback = function() + UIManager:suspend() + end, + } +end if Device:isKobo() then common_info.reboot = { text = _("Reboot the device"), callback = function() - UIManager:nextTick(UIManager.reboot_action) + UIManager:show(ConfirmBox:new{ + text = _("Are you sure you want to reboot the device?"), + ok_text = _("Reboot"), + ok_callback = function() + UIManager:nextTick(UIManager.reboot_action) + end, + }) end } common_info.poweroff = { text = _("Power off"), callback = function() - UIManager:nextTick(UIManager.poweroff_action) + UIManager:show(ConfirmBox:new{ + text = _("Are you sure you want to power off the device?"), + ok_text = _("Power off"), + ok_callback = function() + UIManager:nextTick(UIManager.poweroff_action) + end, + }) end } end diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua index 7a0295693..9e0b6e5d7 100644 --- a/frontend/ui/elements/filemanager_menu_order.lua +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -68,17 +68,14 @@ local order = { "history", "open_last_document", "----------------------------", + "system_statistics", + "----------------------------", "ota_update", --[[ if Device:isKindle() or Device:isKobo() or Device:isPocketBook() or Device:isAndroid() ]]-- "version", "help", - "system_statistics", - "----------------------------", - "restart_koreader", - "poweroff", -- if Device:isKobo() - "reboot", -- if Device:isKobo() "----------------------------", - "exit", + "exit_menu", }, help = { "quickstart_guide", @@ -87,6 +84,15 @@ local order = { "----------------------------", "about", }, + exit_menu = { + "restart_koreader", + "----------------------------", + "sleep", -- if Device:isKindle() or Device:isKobo() + "poweroff", -- if Device:isKobo() + "reboot", -- if Device:isKobo() + "----------------------------", + "exit", + } } return order diff --git a/frontend/ui/elements/reader_menu_order.lua b/frontend/ui/elements/reader_menu_order.lua index 4d7d223a4..fdee95f77 100644 --- a/frontend/ui/elements/reader_menu_order.lua +++ b/frontend/ui/elements/reader_menu_order.lua @@ -85,17 +85,14 @@ local order = { "book_status", "book_info", "----------------------------", + "system_statistics", + "----------------------------", "ota_update", --[[ if Device:isKindle() or Device:isKobo() or Device:isPocketBook() or Device:isAndroid() ]]-- "version", "help", - "system_statistics", - "----------------------------", - "restart_koreader", - "poweroff", -- if Device:isKobo() - "reboot", -- if Device:isKobo() "----------------------------", - "exit", + "exit_menu", }, help = { "quickstart_guide", @@ -104,6 +101,15 @@ local order = { "----------------------------", "about", }, + exit_menu = { + "restart_koreader", + "----------------------------", + "sleep", -- if Device:isKindle() or Device:isKobo() + "poweroff", -- if Device:isKobo() + "reboot", -- if Device:isKobo() + "----------------------------", + "exit", + } } return order diff --git a/frontend/ui/menusorter.lua b/frontend/ui/menusorter.lua index d0966cc39..4cdbef3e4 100644 --- a/frontend/ui/menusorter.lua +++ b/frontend/ui/menusorter.lua @@ -121,6 +121,7 @@ function MenuSorter:sort(item_table, order) changed = true local sub_menu_content = menu_table[sub_menu] sub_menu_position.text = sub_menu_content.text + sub_menu_position.hold_callback = sub_menu_content.hold_callback sub_menu_position.sub_item_table = sub_menu_content -- remove reference from top level output menu_table[sub_menu] = nil