Screensaver: a few tweaks and fixes (#3619)

When no manually added specific 'poweroff' or 'reboot' screensaver
settings, use the suspend/sleep settings set via menu with an added
overlay message in top right corner.
Generalized some settings: "White background behind message and images"
and "Stretch covers and images to fit screen", and move "Exclude this
book's cover from screensaver" up a level (and remove this menu item
added by ReaderMenu when closing document).
Don't use memory cache with rendered screensaver images.

ImageWidget: fix wrong behaviour (stretch) when 'file', 'width',
'height' and 'scale_factor' provided: now, keep aspect ratio.
ImageWidget: increase file image mem cache (mostly used for icons)
from 2 to 5MB to be ready for devices with very high DPI.
This commit is contained in:
poire-z
2018-01-21 19:44:12 +01:00
committed by GitHub
parent 94327ad43f
commit 35df1749b2
4 changed files with 133 additions and 76 deletions

View File

@@ -128,58 +128,22 @@ function ReaderMenu:setUpdateItemTable()
if Device:supportsScreensaver() then
local ss_book_settings = {
text = _("Current book cover settings"),
text = _("Exclude this book's cover from screensaver"),
enabled_func = function()
return not (self.ui == nil or self.ui.document == nil)
and G_reader_settings:readSetting('screensaver_type') == "cover"
end,
sub_item_table = {
{
text = _("Exclude this book's cover from screensaver"),
checked_func = function()
return self.ui.doc_settings:readSetting("exclude_screensaver") == true
end,
callback = function()
if Screensaver:excluded() then
self.ui.doc_settings:saveSetting("exclude_screensaver", false)
else
self.ui.doc_settings:saveSetting("exclude_screensaver", true)
end
self.ui:saveSettings()
end
},
{
text = _("Stretch book cover to fit screen"),
checked_func = function()
local settings_stretch_cover = self.ui.doc_settings:readSetting("stretch_cover")
if settings_stretch_cover == nil and G_reader_settings:readSetting("stretch_cover_default") then
return true
else
return self.ui.doc_settings:readSetting("stretch_cover") == true
end
end,
callback = function()
self.ui.doc_settings:saveSetting("stretch_cover", not Screensaver:stretchCover())
self.ui:saveSettings()
end,
hold_callback = function()
local ConfirmBox = require("ui/widget/confirmbox")
UIManager:show(ConfirmBox:new {
text = _("Stretch all book covers to fit screen?"),
cancel_text = _("Don't stretch"),
cancel_callback = function()
G_reader_settings:delSetting("stretch_cover_default")
return
end,
ok_text = _("Stretch"),
ok_callback = function()
G_reader_settings:saveSetting("stretch_cover_default", true)
return
end,
})
end,
},
}
checked_func = function()
return self.ui and self.ui.doc_settings and self.ui.doc_settings:readSetting("exclude_screensaver") == true
end,
callback = function()
if Screensaver:excluded() then
self.ui.doc_settings:saveSetting("exclude_screensaver", false)
else
self.ui.doc_settings:saveSetting("exclude_screensaver", true)
end
self.ui:saveSettings()
end
}
self.menu_items.screensaver = {
@@ -317,6 +281,15 @@ function ReaderMenu:onCloseReaderMenu()
return true
end
function ReaderMenu:onCloseDocument()
if Device:supportsScreensaver() then
-- Remove the 8th item we added (which cleans up references to document
-- and doc_settings embedded in functions)
local screensaver_sub_item_table = require("ui/elements/screensaver_menu")
table.remove(screensaver_sub_item_table, 8)
end
end
function ReaderMenu:_getTabIndexFromLocation(ges)
if self.tab_item_table == nil then
self:setUpdateItemTable()