Merge custom image and cover

reviewable/pr11549/r20
Frans de Jonge 1 month ago
parent 0799713e22
commit cf4fe98146

@ -31,9 +31,8 @@ return {
text = _("Wallpaper"),
sub_item_table = {
genMenuItem(_("Show book cover on sleep screen"), "screensaver_type", "cover", hasLastFile),
genMenuItem(_("Show custom image on sleep screen"), "screensaver_type", "image_file"),
genMenuItem(_("Show custom image or cover on sleep screen"), "screensaver_type", "document_cover"),
genMenuItem(_("Use random image from folder on sleep screen"), "screensaver_type", "random_image"),
genMenuItem(_("Show document cover on sleep screen"), "screensaver_type", "document_cover"),
genMenuItem(_("Show reading progress on sleep screen"), "screensaver_type", "readingprogress", isReaderProgressEnabled),
genMenuItem(_("Show book status on sleep screen"), "screensaver_type", "bookstatus", hasLastFile),
genMenuItem(_("Leave screen as-is"), "screensaver_type", "disable", nil, true),
@ -43,7 +42,6 @@ return {
enabled_func = function()
return G_reader_settings:readSetting("screensaver_type") == "cover"
or G_reader_settings:readSetting("screensaver_type") == "random_image"
or G_reader_settings:readSetting("screensaver_type") == "image_file"
or G_reader_settings:readSetting("screensaver_type") == "document_cover"
end,
sub_item_table = {
@ -82,19 +80,18 @@ return {
{
text = _("Custom images"),
enabled_func = function()
return G_reader_settings:readSetting("screensaver_type") == "image_file"
or G_reader_settings:readSetting("screensaver_type") == "random_image"
or G_reader_settings:readSetting("screensaver_type") == "document_cover"
return G_reader_settings:readSetting("screensaver_type") == "random_image"
or G_reader_settings:readSetting("screensaver_type") == "document_cover"
end,
sub_item_table = {
{
text = _("Select custom image"),
text = _("Select image or document cover"),
enabled_func = function()
return G_reader_settings:readSetting("screensaver_type") == "image_file"
return G_reader_settings:readSetting("screensaver_type") == "document_cover"
end,
keep_menu_open = true,
callback = function()
Screensaver:chooseFile()
Screensaver:chooseFile(true)
end,
},
{
@ -107,16 +104,6 @@ return {
Screensaver:chooseFolder()
end,
},
{
text = _("Select document cover"),
enabled_func = function()
return G_reader_settings:readSetting("screensaver_type") == "document_cover"
end,
keep_menu_open = true,
callback = function()
Screensaver:chooseFile(true)
end,
},
},
},
},

@ -446,9 +446,13 @@ function Screensaver:setup(event, event_message)
end
if not excluded then
if lastfile and lfs.attributes(lastfile, "mode") == "file" then
self.image = FileManagerBookInfo:getCoverImage(ui and ui.document, lastfile)
if self.image == nil then
self.screensaver_type = "random_image"
if DocumentRegistry:isImageFile(lastfile) then
self.image_file = lastfile
else
self.image = FileManagerBookInfo:getCoverImage(ui and ui.document, lastfile)
if self.image == nil then
self.screensaver_type = "random_image"
end
end
else
self.screensaver_type = "random_image"
@ -463,6 +467,7 @@ function Screensaver:setup(event, event_message)
self.screensaver_type = "random_image"
end
end
-- NB Kept around to support old settings.
if self.screensaver_type == "image_file" then
self.image_file = G_reader_settings:readSetting(self.prefix .. "screensaver_image")
or G_reader_settings:readSetting("screensaver_image")
@ -542,15 +547,22 @@ function Screensaver:show()
-- Build the main widget for the effective mode, all the sanity checks were handled in setup
local widget = nil
if self.screensaver_type == "cover" then
widget = ImageWidget:new{
image = self.image,
image_disposable = true,
if self.screensaver_type == "cover" or self.screensaver_type == "image_file" or self.screensaver_type == "random_image" then
local widget_settings = {
width = Screen:getWidth(),
height = Screen:getHeight(),
scale_factor = G_reader_settings:isFalse("screensaver_stretch_images") and 0 or nil,
stretch_limit_percentage = G_reader_settings:readSetting("screensaver_stretch_limit_percentage"),
}
if self.image then
widget_settings.image = self.image
widget_settings.image_disposable = true
elseif self.image_file then
widget_settings.file = self.image_file
widget_settings.file_do_cache = false
widget_settings.alpha = true
end
widget = ImageWidget:new(widget_settings)
elseif self.screensaver_type == "bookstatus" then
local ReaderUI = require("apps/reader/readerui")
local ui = ReaderUI.instance
@ -564,16 +576,6 @@ function Screensaver:show()
ui = ui,
readonly = true,
}
elseif self.screensaver_type == "random_image" or self.screensaver_type == "image_file" then
widget = ImageWidget:new{
file = self.image_file,
file_do_cache = false,
alpha = true,
width = Screen:getWidth(),
height = Screen:getHeight(),
scale_factor = G_reader_settings:isFalse("screensaver_stretch_images") and 0 or nil,
stretch_limit_percentage = G_reader_settings:readSetting("screensaver_stretch_limit_percentage"),
}
elseif self.screensaver_type == "readingprogress" then
widget = Screensaver.getReaderProgress()
end

Loading…
Cancel
Save