mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
ScreenSaver: Get rid of automagic settings (#7496)
By which I mean, explicitly initialize default settings, making everything seven hundred billion percent less weird. Also, split the background option between image and (solo) message, because the defaults for those are different, and trying to twist the one into the other was leading to pure madness.
This commit is contained in:
@@ -61,7 +61,9 @@ return {
|
||||
},
|
||||
{
|
||||
text = _("Use reading progress as screensaver"),
|
||||
enabled_func = function() return Screensaver.getReaderProgress ~= nil and hasLastFile() end,
|
||||
enabled_func = function()
|
||||
return Screensaver.getReaderProgress ~= nil and hasLastFile()
|
||||
end,
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_type") == "readingprogress"
|
||||
end,
|
||||
@@ -72,7 +74,7 @@ return {
|
||||
{
|
||||
text = _("Leave screen as it is"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_type") == "disable" or G_reader_settings:hasNot("screensaver_type")
|
||||
return G_reader_settings:readSetting("screensaver_type") == "disable"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_type", "disable")
|
||||
@@ -82,10 +84,9 @@ return {
|
||||
{
|
||||
text = _("Add message to screensaver"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:isTrue("screensaver_show_message") or G_reader_settings:hasNot("screensaver_type")
|
||||
return G_reader_settings:isTrue("screensaver_show_message")
|
||||
end,
|
||||
callback = function()
|
||||
-- NOTE: Since the default is nil, the first toggle will keep it checked (but true instead of nil).
|
||||
G_reader_settings:toggle("screensaver_show_message")
|
||||
end,
|
||||
separator = true,
|
||||
@@ -122,73 +123,110 @@ return {
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Black background behind images"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_background") == "black" or G_reader_settings:hasNot("screensaver_background")
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_background", "black")
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("White background behind message and images"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_background") == "white"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_background", "white")
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Leave background as-is behind message and images"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_background") == "none"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_background", "none")
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Stretch covers and images to fit screen"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:isTrue("screensaver_stretch_images")
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:toggle("screensaver_stretch_images")
|
||||
end,
|
||||
separator = true,
|
||||
},
|
||||
{
|
||||
text = _("Screensaver message position"),
|
||||
text = _("Covers and images settings"),
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Top"),
|
||||
text = _("Black background behind covers and images"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_message_position") == "top"
|
||||
return G_reader_settings:readSetting("screensaver_img_background") == "black"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_message_position", "top")
|
||||
end
|
||||
G_reader_settings:saveSetting("screensaver_img_background", "black")
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Middle"),
|
||||
text = _("White background behind covers and images"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_message_position") == "middle" or G_reader_settings:hasNot("screensaver_message_position")
|
||||
return G_reader_settings:readSetting("screensaver_img_background") == "white"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_message_position", "middle")
|
||||
end
|
||||
G_reader_settings:saveSetting("screensaver_img_background", "white")
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Bottom"),
|
||||
text = _("Leave background as-is behind covers and images"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_message_position") == "bottom"
|
||||
return G_reader_settings:readSetting("screensaver_img_background") == "none"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_message_position", "bottom")
|
||||
end
|
||||
G_reader_settings:saveSetting("screensaver_img_background", "none")
|
||||
end,
|
||||
},
|
||||
}
|
||||
{
|
||||
text = _("Stretch covers and images to fit screen"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:isTrue("screensaver_stretch_images")
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:toggle("screensaver_stretch_images")
|
||||
end,
|
||||
separator = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
text = _("Message settings"),
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Black background behind message"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_msg_background") == "black"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_msg_background", "black")
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("White background behind message"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_msg_background") == "white"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_msg_background", "white")
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Leave background as-is behind message"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_msg_background") == "none"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_msg_background", "none")
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Message position"),
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Top"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_message_position") == "top"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_message_position", "top")
|
||||
end
|
||||
},
|
||||
{
|
||||
text = _("Middle"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_message_position") == "middle"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_message_position", "middle")
|
||||
end
|
||||
},
|
||||
{
|
||||
text = _("Bottom"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_message_position") == "bottom"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_message_position", "bottom")
|
||||
end
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
text = _("Keep the screensaver on screen after wakeup"),
|
||||
@@ -196,7 +234,7 @@ return {
|
||||
{
|
||||
text = _("Disable"),
|
||||
checked_func = function()
|
||||
return G_reader_settings:readSetting("screensaver_delay") == "disable" or G_reader_settings:hasNot("screensaver_delay")
|
||||
return G_reader_settings:readSetting("screensaver_delay") == "disable"
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("screensaver_delay", "disable")
|
||||
@@ -238,8 +276,8 @@ return {
|
||||
G_reader_settings:saveSetting("screensaver_delay", "tap")
|
||||
end
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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
|
||||
self.show_message = G_reader_settings:isTrue("screensaver_show_message")
|
||||
self.screensaver_type = G_reader_settings:readSetting("screensaver_type")
|
||||
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:nilOrFalse("screensaver_stretch_images") and 0 or nil,
|
||||
scale_factor = G_reader_settings:isFalse("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:nilOrFalse("screensaver_stretch_images") and 0 or nil,
|
||||
scale_factor = G_reader_settings:isFalse("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
|
||||
message_pos = G_reader_settings:readSetting("screensaver_message_position")
|
||||
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")
|
||||
|
||||
Reference in New Issue
Block a user