From 98abcafa1ba62466ef6fa0ca601b42da96694560 Mon Sep 17 00:00:00 2001 From: poire-z Date: Sat, 6 Jan 2018 13:21:26 +0100 Subject: [PATCH] Screensaver: change default & show messages on reboot and poweroff (#3572) Use "message" as the default for screensaver (instead of "disable") (https://github.com/koreader/koreader/pull/3535#issuecomment-353337143) On Kobo Fix: display message on poweroff or reboot (https://github.com/koreader/koreader/pull/3535#issuecomment-352355865) Allows for overwritting these default messages with the classic screensaver settings, by just prepending "poweroff_" or "reboot_" to them. (https://github.com/koreader/koreader/pull/3535#issuecomment-352498497) So one can manually add to its settings.reader.lua: ``` "poweroff_screensaver_type" = "random_image" or "message", "cover", "bookstatus", "readingprogress", "disable", "poweroff_screensaver_dir" = "path to same as screensaver_dir or alternate dir for poweroff image(s)", "poweroff_screensaver_message" = "message to use instead of Powered off", ``` ``` "reboot_screensaver_type" = "random_image" or "message", "cover", "bookstatus", "readingprogress", "disable", "reboot_screensaver_dir" = "path to same as screensaver_dir or alternate dir for reboot image(s)", "reboot_screensaver_message" = "message to use instead of Rebooting...", ``` --- frontend/ui/elements/screensaver_menu.lua | 4 ++-- frontend/ui/screensaver.lua | 22 ++++++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/frontend/ui/elements/screensaver_menu.lua b/frontend/ui/elements/screensaver_menu.lua index 1a223c677..d24eedddb 100644 --- a/frontend/ui/elements/screensaver_menu.lua +++ b/frontend/ui/elements/screensaver_menu.lua @@ -71,7 +71,7 @@ return { { text = _("Use message as screensaver"), checked_func = function() - if screensaverType() == "message" then + if screensaverType() == "message" or screensaverType() == nil then return true else return false @@ -84,7 +84,7 @@ return { { text = _("Leave screen as it is"), checked_func = function() - if screensaverType() == nil or screensaverType() == "disable" then + if screensaverType() == "disable" then return true else return false diff --git a/frontend/ui/screensaver.lua b/frontend/ui/screensaver.lua index 7ab268833..96152d012 100644 --- a/frontend/ui/screensaver.lua +++ b/frontend/ui/screensaver.lua @@ -139,17 +139,23 @@ function Screensaver:setMessage() UIManager:show(self.input_dialog) end -function Screensaver:show() +function Screensaver:show(event, fallback_message) + -- These 2 (optional) parameters are to support poweroff and reboot actions + -- on Kobo (see uimanager.lua) if self.left_msg then UIManager:close(self.left_msg) self.left_msg = nil end - local screensaver_type = G_reader_settings:readSetting("screensaver_type") - local widget = nil - local background = Blitbuffer.COLOR_WHITE - if screensaver_type == "disable" or screensaver_type == nil then + local prefix = event and event.."_" or "" -- "", "poweroff_" or "reboot_" + local screensaver_type = G_reader_settings:readSetting(prefix.."screensaver_type") + if screensaver_type == nil then + screensaver_type = "message" + end + if screensaver_type == "disable" then return end + local widget = nil + local background = Blitbuffer.COLOR_WHITE if screensaver_type == "cover" then local lastfile = G_reader_settings:readSetting("lastfile") local exclude = false -- consider it not excluded if there's no docsetting @@ -208,7 +214,7 @@ function Screensaver:show() end end if screensaver_type == "random_image" then - local screensaver_dir = G_reader_settings:readSetting("screensaver_dir") + local screensaver_dir = G_reader_settings:readSetting(prefix.."screensaver_dir") if screensaver_dir == nil then local DataStorage = require("datastorage") screensaver_dir = DataStorage:getDataDir() .. "/screenshots/" @@ -234,12 +240,12 @@ function Screensaver:show() end end if screensaver_type == "message" then - local screensaver_message = G_reader_settings:readSetting("screensaver_message") + local screensaver_message = G_reader_settings:readSetting(prefix.."screensaver_message") if G_reader_settings:nilOrFalse("message_background") then background = nil end if screensaver_message == nil then - screensaver_message = default_screensaver_message + screensaver_message = fallback_message or default_screensaver_message end widget = InfoMessage:new{ text = screensaver_message,