From 474c011f21448e57cb04367f8a60e3128762a696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Fern=C3=A1ndez?= Date: Sun, 14 May 2017 18:43:08 +0200 Subject: [PATCH] [kobo]: add reboot and poweroff menu actions (#2888) --- frontend/device/generic/device.lua | 3 +++ frontend/device/kobo/device.lua | 4 ++++ frontend/ui/elements/common_info_menu_table.lua | 14 ++++++++++++++ frontend/ui/elements/filemanager_menu_order.lua | 6 +++++- frontend/ui/elements/reader_menu_order.lua | 6 +++++- frontend/ui/uimanager.lua | 10 ++++++++++ 6 files changed, 41 insertions(+), 2 deletions(-) diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 31b325c02..b61c5784e 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -161,6 +161,9 @@ function Device:resume() end -- Hardware specific method to power off the device function Device:powerOff() end +-- Hardware specific method to reboot the device +function Device:reboot() end + -- Hardware specific method to initialize network manager module function Device:initNetworkManager() end diff --git a/frontend/device/kobo/device.lua b/frontend/device/kobo/device.lua index ef73f303f..9f00adebc 100644 --- a/frontend/device/kobo/device.lua +++ b/frontend/device/kobo/device.lua @@ -517,6 +517,10 @@ function Kobo:powerOff() os.execute("poweroff") end +function Kobo:reboot() + os.execute("reboot") +end + -------------- device probe ------------ local codename = Kobo:getCodeName() diff --git a/frontend/ui/elements/common_info_menu_table.lua b/frontend/ui/elements/common_info_menu_table.lua index 521e3ac0e..70a5b2491 100644 --- a/frontend/ui/elements/common_info_menu_table.lua +++ b/frontend/ui/elements/common_info_menu_table.lua @@ -49,5 +49,19 @@ common_info.report_bug = { }) end } +if Device:isKobo() then + common_info.reboot = { + text = _("Reboot the device"), + callback = function() + UIManager:nextTick(UIManager.reboot_action) + end + } + common_info.poweroff = { + text = _("Power off"), + callback = function() + UIManager:nextTick(UIManager.poweroff_action) + end + } +end return common_info diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua index 0d393413e..10f9572a0 100644 --- a/frontend/ui/elements/filemanager_menu_order.lua +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -57,11 +57,15 @@ local order = { "history", "open_last_document", "----------------------------", - "ota_update", -- if Device:isKindle() or Device:isKobo() or Device:isPocketBook() or Device:isAndroid() + "ota_update", --[[ if Device:isKindle() or Device:isKobo() or + Device:isPocketBook() or Device:isAndroid() ]]-- "version", "help", "system_statistics", "----------------------------", + "poweroff", -- if Device:isKobo() + "reboot", -- if Device:isKobo() + "----------------------------", "exit", }, help = { diff --git a/frontend/ui/elements/reader_menu_order.lua b/frontend/ui/elements/reader_menu_order.lua index 392706550..e8c5e7bd6 100644 --- a/frontend/ui/elements/reader_menu_order.lua +++ b/frontend/ui/elements/reader_menu_order.lua @@ -75,11 +75,15 @@ local order = { "history", "book_status", "----------------------------", - "ota_update", -- if Device:isKindle() or Device:isKobo() or Device:isPocketBook() or Device:isAndroid() + "ota_update", --[[ if Device:isKindle() or Device:isKobo() or + Device:isPocketBook() or Device:isAndroid() ]]-- "version", "help", "system_statistics", "----------------------------", + "poweroff", -- if Device:isKobo() + "reboot", -- if Device:isKobo() + "----------------------------", "exit", }, help = { diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index e5b7f3dc2..dabe55009 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -57,6 +57,16 @@ function UIManager:init() Device:powerOff() end) end + self.reboot_action = function() + self._entered_poweroff_stage = true; + Screen:setRotationMode(0) + require("ui/screensaver"):show("reboot", _("Rebooting...")) + Screen:refreshFull() + UIManager:nextTick(function() + self:broadcastEvent(Event:new("Close")) + Device:reboot() + end) + end if Device:isKobo() then -- We do not want auto suspend procedure to waste battery during -- suspend. So let's unschedule it when suspending, and restart it after