Screensaver: exclude content when excluding cover, random image as fallback (#9912)

Exclude some screensaver option showing book content
(title, page image) when "Exclude this book cover" is checked. 
Random image as fallback, KOReader logo as 2nd-order fallback.
reviewable/pr9921/r1
melyux 1 year ago committed by GitHub
parent e3f6404eb2
commit 6f39f6cb7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -250,10 +250,14 @@ function ReaderMenu:setUpdateItemTable()
if Device:supportsScreensaver() then
local ss_book_settings = {
text = _("Exclude this book's cover from screensaver"),
text = _("Exclude this book's content and cover from screensaver"),
enabled_func = function()
return not (self.ui == nil or self.ui.document == nil)
and G_reader_settings:readSetting("screensaver_type") == "cover"
if self.ui and self.ui.document then
local screensaverType = G_reader_settings:readSetting("screensaver_type")
return screensaverType == "cover" or screensaverType == "disable"
else
return false
end
end,
checked_func = function()
return self.ui and self.ui.doc_settings and self.ui.doc_settings:isTrue("exclude_screensaver")

@ -568,40 +568,33 @@ function Screensaver:setup(event, event_message)
end
end
if self.screensaver_type == "bookstatus" then
if lastfile and lfs.attributes(lastfile, "mode") == "file" then
if not ui then
self.screensaver_type = "disable"
self.show_message = true
end
else
self.screensaver_type = "disable"
self.show_message = true
end
end
if self.screensaver_type == "random_image" then
local screensaver_dir = G_reader_settings:readSetting(self.prefix .. "screensaver_dir")
or G_reader_settings:readSetting("screensaver_dir")
self.image_file = self:_getRandomImage(screensaver_dir)
if self.image_file == nil then
self.screensaver_type = "disable"
self.show_message = true
if not ui or not lastfile or lfs.attributes(lastfile, "mode") ~= "file" or (ui.doc_settings and ui.doc_settings:isTrue("exclude_screensaver")) then
self.screensaver_type = "random_image"
end
end
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")
if self.image_file == nil or lfs.attributes(self.image_file, "mode") ~= "file" then
self.screensaver_type = "disable"
self.show_message = true
self.screensaver_type = "random_image"
end
end
if self.screensaver_type == "readingprogress" then
-- This is implemented by the Statistics plugin
if Screensaver.getReaderProgress == nil then
self.screensaver_type = "disable"
self.show_message = true
self.screensaver_type = "random_image"
end
end
if self.screensaver_type == "disable" then
if ui and ui.doc_settings and ui.doc_settings:isTrue("exclude_screensaver") then
self.screensaver_type = "random_image"
end
end
if self.screensaver_type == "random_image" then
local screensaver_dir = G_reader_settings:readSetting(self.prefix .. "screensaver_dir")
or G_reader_settings:readSetting("screensaver_dir")
self.image_file = self:_getRandomImage(screensaver_dir) or "resources/koreader.png" -- Fallback image
end
-- Use the right background setting depending on the effective mode, now that fallbacks have kicked in.
if self:modeIsImage() then

Loading…
Cancel
Save