Merge custom image and cover

reviewable/pr11549/r20
Frans de Jonge 2 months ago
parent 0799713e22
commit cf4fe98146

@ -31,9 +31,8 @@ return {
text = _("Wallpaper"), text = _("Wallpaper"),
sub_item_table = { sub_item_table = {
genMenuItem(_("Show book cover on sleep screen"), "screensaver_type", "cover", hasLastFile), 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(_("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 reading progress on sleep screen"), "screensaver_type", "readingprogress", isReaderProgressEnabled),
genMenuItem(_("Show book status on sleep screen"), "screensaver_type", "bookstatus", hasLastFile), genMenuItem(_("Show book status on sleep screen"), "screensaver_type", "bookstatus", hasLastFile),
genMenuItem(_("Leave screen as-is"), "screensaver_type", "disable", nil, true), genMenuItem(_("Leave screen as-is"), "screensaver_type", "disable", nil, true),
@ -43,7 +42,6 @@ return {
enabled_func = function() enabled_func = function()
return G_reader_settings:readSetting("screensaver_type") == "cover" return G_reader_settings:readSetting("screensaver_type") == "cover"
or G_reader_settings:readSetting("screensaver_type") == "random_image" 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" or G_reader_settings:readSetting("screensaver_type") == "document_cover"
end, end,
sub_item_table = { sub_item_table = {
@ -82,19 +80,18 @@ return {
{ {
text = _("Custom images"), text = _("Custom images"),
enabled_func = function() enabled_func = function()
return G_reader_settings:readSetting("screensaver_type") == "image_file" return G_reader_settings:readSetting("screensaver_type") == "random_image"
or G_reader_settings:readSetting("screensaver_type") == "random_image" or G_reader_settings:readSetting("screensaver_type") == "document_cover"
or G_reader_settings:readSetting("screensaver_type") == "document_cover"
end, end,
sub_item_table = { sub_item_table = {
{ {
text = _("Select custom image"), text = _("Select image or document cover"),
enabled_func = function() enabled_func = function()
return G_reader_settings:readSetting("screensaver_type") == "image_file" return G_reader_settings:readSetting("screensaver_type") == "document_cover"
end, end,
keep_menu_open = true, keep_menu_open = true,
callback = function() callback = function()
Screensaver:chooseFile() Screensaver:chooseFile(true)
end, end,
}, },
{ {
@ -107,16 +104,6 @@ return {
Screensaver:chooseFolder() Screensaver:chooseFolder()
end, 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 end
if not excluded then if not excluded then
if lastfile and lfs.attributes(lastfile, "mode") == "file" then if lastfile and lfs.attributes(lastfile, "mode") == "file" then
self.image = FileManagerBookInfo:getCoverImage(ui and ui.document, lastfile) if DocumentRegistry:isImageFile(lastfile) then
if self.image == nil then self.image_file = lastfile
self.screensaver_type = "random_image" else
self.image = FileManagerBookInfo:getCoverImage(ui and ui.document, lastfile)
if self.image == nil then
self.screensaver_type = "random_image"
end
end end
else else
self.screensaver_type = "random_image" self.screensaver_type = "random_image"
@ -463,6 +467,7 @@ function Screensaver:setup(event, event_message)
self.screensaver_type = "random_image" self.screensaver_type = "random_image"
end end
end end
-- NB Kept around to support old settings.
if self.screensaver_type == "image_file" then if self.screensaver_type == "image_file" then
self.image_file = G_reader_settings:readSetting(self.prefix .. "screensaver_image") self.image_file = G_reader_settings:readSetting(self.prefix .. "screensaver_image")
or G_reader_settings:readSetting("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 -- Build the main widget for the effective mode, all the sanity checks were handled in setup
local widget = nil local widget = nil
if self.screensaver_type == "cover" then if self.screensaver_type == "cover" or self.screensaver_type == "image_file" or self.screensaver_type == "random_image" then
widget = ImageWidget:new{ local widget_settings = {
image = self.image,
image_disposable = true,
width = Screen:getWidth(), width = Screen:getWidth(),
height = Screen:getHeight(), height = Screen:getHeight(),
scale_factor = G_reader_settings:isFalse("screensaver_stretch_images") and 0 or nil, scale_factor = G_reader_settings:isFalse("screensaver_stretch_images") and 0 or nil,
stretch_limit_percentage = G_reader_settings:readSetting("screensaver_stretch_limit_percentage"), 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 elseif self.screensaver_type == "bookstatus" then
local ReaderUI = require("apps/reader/readerui") local ReaderUI = require("apps/reader/readerui")
local ui = ReaderUI.instance local ui = ReaderUI.instance
@ -564,16 +576,6 @@ function Screensaver:show()
ui = ui, ui = ui,
readonly = true, 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 elseif self.screensaver_type == "readingprogress" then
widget = Screensaver.getReaderProgress() widget = Screensaver.getReaderProgress()
end end

Loading…
Cancel
Save