diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 59ec2fe5a..f69d93bed 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -96,7 +96,7 @@ function FileManagerMenu:setUpdateItemTable() G_reader_settings:flush() end } - if Device.isKobo() then + if Device.isKobo() or Device.isKindle() then self.menu_items.screensaver = { text = _("Screensaver"), sub_item_table = { diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 5f88e10ae..1ea2ecd21 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -145,8 +145,27 @@ function ReaderMenu:setUpdateItemTable() } } } + elseif Device:isKindle() then + self.menu_items.screensaver = { + text = _("Screensaver"), + sub_item_table = { + { + text = _("Use book's cover as screensaver"), + checked_func = Screensaver.isUsingBookCover, + callback = function() + if Screensaver:isUsingBookCover() then + G_reader_settings:saveSetting( + "use_lastfile_as_screensaver", false) + else + G_reader_settings:delSetting( + "use_lastfile_as_screensaver") + end + G_reader_settings:flush() + end + } + } + } end - -- main menu tab -- insert common info for id, common_setting in pairs(require("ui/elements/common_info_menu_table")) do diff --git a/frontend/device/kindle/device.lua b/frontend/device/kindle/device.lua index c9e63846f..b2563ebfa 100644 --- a/frontend/device/kindle/device.lua +++ b/frontend/device/kindle/device.lua @@ -46,6 +46,9 @@ function Kindle:usbPlugIn() end function Kindle:intoScreenSaver() + if require("ui/screensaver").isUsingBookCover then + require("ui/screensaver"):show("suspend") + end self.powerd:beforeSuspend() if self.charging_mode == false and self.screen_saver_mode == false then self.screen:saveCurrentBB() @@ -64,6 +67,9 @@ function Kindle:outofScreenSaver() if os.getenv("AWESOME_STOPPED") == "yes" then os.execute("killall -stop awesome") end + if require("ui/screensaver").isUsingBookCover then + require("ui/screensaver"):close() + end -- wait for native system update screen before we recover saved -- Blitbuffer. util.usleep(1500000) diff --git a/frontend/ui/screensaver.lua b/frontend/ui/screensaver.lua index d35d88f25..8d93f337d 100644 --- a/frontend/ui/screensaver.lua +++ b/frontend/ui/screensaver.lua @@ -129,8 +129,10 @@ function Screensaver:show(kind, default_msg) -- fallback to message box if not self.left_msg then local msg = screensaver_settings.message or default_msg - self.left_msg = InfoMessage:new{ text = msg } - UIManager:show(self.left_msg) + if msg then + self.left_msg = InfoMessage:new{ text = msg } + UIManager:show(self.left_msg) + end else -- refresh whole screen for other types UIManager:show(self.left_msg, "full")