@ -23,7 +23,7 @@ local _ = require("gettext")
local Screen = Device.screen
local T = require ( " ffi/util " ) . template
-- Migrate old settings from 2021.02 or older.
-- Migrate settings from 2021.02 or older.
if G_reader_settings : readSetting ( " screensaver_type " ) == " message " then
G_reader_settings : saveSetting ( " screensaver_type " , " disable " )
G_reader_settings : makeTrue ( " screensaver_show_message " )
@ -40,6 +40,35 @@ if G_reader_settings:has("screensaver_white_background") then
end
G_reader_settings : delSetting ( " screensaver_white_background " )
end
-- Migrate settings from 2021.03 or older.
if G_reader_settings : has ( " screensaver_background " ) then
G_reader_settings : saveSetting ( " screensaver_img_background " , G_reader_settings : readSetting ( " screensaver_background " ) )
G_reader_settings : delSetting ( " screensaver_background " )
end
-- Default settings
if G_reader_settings : hasNot ( " screensaver_show_message " ) then
G_reader_settings : makeFalse ( " screensaver_show_message " )
end
if G_reader_settings : hasNot ( " screensaver_type " ) then
G_reader_settings : saveSetting ( " screensaver_type " , " disable " )
G_reader_settings : makeTrue ( " screensaver_show_message " )
end
if G_reader_settings : hasNot ( " screensaver_img_background " ) then
G_reader_settings : saveSetting ( " screensaver_img_background " , " black " )
end
if G_reader_settings : hasNot ( " screensaver_msg_background " ) then
G_reader_settings : saveSetting ( " screensaver_msg_background " , " none " )
end
if G_reader_settings : hasNot ( " screensaver_message_position " ) then
G_reader_settings : saveSetting ( " screensaver_message_position " , " middle " )
end
if G_reader_settings : hasNot ( " screensaver_stretch_images " ) then
G_reader_settings : makeFalse ( " screensaver_stretch_images " )
end
if G_reader_settings : hasNot ( " screensaver_delay " ) then
G_reader_settings : saveSetting ( " screensaver_delay " , " disable " )
end
local Screensaver = {
screensaver_provider = {
@ -367,24 +396,10 @@ function Screensaver:withBackground()
end
function Screensaver : setup ( event , fallback_message )
-- Handle user settings & defaults
if G_reader_settings : has ( " screensaver_show_message " ) then
self.show_message = G_reader_settings : isTrue ( " screensaver_show_message " )
else
-- We only enable show_message as a *type* fallback!
self.show_message = false
end
if G_reader_settings : has ( " screensaver_type " ) then
self.screensaver_type = G_reader_settings : readSetting ( " screensaver_type " )
else
self.screensaver_type = " disable "
self.show_message = true
end
if G_reader_settings : has ( " screensaver_background " ) then
self.screensaver_background = G_reader_settings : readSetting ( " screensaver_background " )
else
self.screensaver_background = " black "
end
local screensaver_img_background = G_reader_settings : readSetting ( " screensaver_img_background " )
local screensaver_msg_background = G_reader_settings : readSetting ( " screensaver_msg_background " )
-- These 2 (optional) parameters are to support poweroff and reboot actions on Kobo (c.f., UIManager)
self.prefix = event and event .. " _ " or " " -- "", "poweroff_" or "reboot_"
@ -490,12 +505,11 @@ function Screensaver:setup(event, fallback_message)
end
end
-- Now that the fallbacks are in place, we know the *effective* screensaver mode.
-- For non-image modes, make black (which is also the default) synonymous with none.
-- The reasoning is that disable + show_message, which is our default and fallback,
-- looks *terrible* with a black background, which is also our default and fallback ;).
if not self : modeIsImage ( ) and self.screensaver_background == " black " then
self.screensaver_background = " none "
-- Use the right background setting depending on the effective mode, now that fallbacks have kicked in.
if self : modeIsImage ( ) then
self.screensaver_background = screensaver_img_background
else
self.screensaver_background = screensaver_msg_background
end
end
@ -518,7 +532,7 @@ function Screensaver:show()
image_disposable = true ,
height = Screen : getHeight ( ) ,
width = Screen : getWidth ( ) ,
scale_factor = G_reader_settings : nilOr False( " screensaver_stretch_images " ) and 0 or nil ,
scale_factor = G_reader_settings : is False( " screensaver_stretch_images " ) and 0 or nil ,
}
elseif self.screensaver_type == " bookstatus " then
local ReaderUI = require ( " apps/reader/readerui " )
@ -540,7 +554,7 @@ function Screensaver:show()
alpha = true ,
height = Screen : getHeight ( ) ,
width = Screen : getWidth ( ) ,
scale_factor = G_reader_settings : nilOr False( " screensaver_stretch_images " ) and 0 or nil ,
scale_factor = G_reader_settings : is False( " screensaver_stretch_images " ) and 0 or nil ,
}
elseif self.screensaver_type == " readingprogress " then
widget = Screensaver.getReaderProgress ( )
@ -580,11 +594,7 @@ function Screensaver:show()
if G_reader_settings : has ( self.prefix .. " screensaver_message_position " ) then
message_pos = G_reader_settings : readSetting ( self.prefix .. " screensaver_message_position " )
else
if G_reader_settings : has ( " screensaver_message_position " ) then
message_pos = G_reader_settings : readSetting ( " screensaver_message_position " )
else
message_pos = " middle "
end
end
-- The only case where we *won't* cover the full-screen is when we only display a message and no background.
@ -676,7 +686,7 @@ function Screensaver:close()
self.screensaver_widget = nil
end
end )
elseif screensaver_delay == " disable " or screensaver_delay == nil then
elseif screensaver_delay == " disable " then
logger.dbg ( " close screensaver " )
if self.screensaver_widget then
UIManager : close ( self.screensaver_widget , " full " )