|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
local Blitbuffer = require("ffi/blitbuffer")
|
|
|
|
|
local ButtonDialogTitle = require("ui/widget/buttondialogtitle")
|
|
|
|
|
local BookStatusWidget = require("ui/widget/bookstatuswidget")
|
|
|
|
|
local DataStorage = require("datastorage")
|
|
|
|
|
local Device = require("device")
|
|
|
|
|
local DocSettings = require("docsettings")
|
|
|
|
|
local DocumentRegistry = require("document/documentregistry")
|
|
|
|
@ -78,7 +79,6 @@ function Screensaver:chooseFolder()
|
|
|
|
|
})
|
|
|
|
|
local screensaver_dir = G_reader_settings:readSetting("screensaver_dir")
|
|
|
|
|
if screensaver_dir == nil then
|
|
|
|
|
local DataStorage = require("datastorage")
|
|
|
|
|
screensaver_dir = DataStorage:getDataDir() .. "/screenshots/"
|
|
|
|
|
end
|
|
|
|
|
self.choose_dialog = ButtonDialogTitle:new{
|
|
|
|
@ -88,6 +88,71 @@ function Screensaver:chooseFolder()
|
|
|
|
|
UIManager:show(self.choose_dialog)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function Screensaver:chooseFile()
|
|
|
|
|
local buttons = {}
|
|
|
|
|
table.insert(buttons, {
|
|
|
|
|
{
|
|
|
|
|
text = _("Choose screensaver image"),
|
|
|
|
|
callback = function()
|
|
|
|
|
UIManager:close(self.choose_dialog)
|
|
|
|
|
local FileChooser = require("ui/widget/filechooser")
|
|
|
|
|
local image_chooser = FileChooser:new{
|
|
|
|
|
title = _("Choose screensaver image"),
|
|
|
|
|
no_title = false,
|
|
|
|
|
path = self.root_path,
|
|
|
|
|
focused_path = self.focused_file,
|
|
|
|
|
collate = G_reader_settings:readSetting("collate") or "strcoll",
|
|
|
|
|
reverse_collate = G_reader_settings:isTrue("reverse_collate"),
|
|
|
|
|
show_parent = self.show_parent,
|
|
|
|
|
width = Screen:getWidth(),
|
|
|
|
|
height = Screen:getHeight(),
|
|
|
|
|
is_popout = false,
|
|
|
|
|
is_borderless = true,
|
|
|
|
|
has_close_button = true,
|
|
|
|
|
perpage = G_reader_settings:readSetting("items_per_page"),
|
|
|
|
|
file_filter = function(filename)
|
|
|
|
|
local util = require("util")
|
|
|
|
|
local suffix = util.getFileNameSuffix(filename)
|
|
|
|
|
if suffix == "jpeg" or suffix == "jpg" or suffix == "png" then
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
function image_chooser:onFileSelect(file) -- luacheck: ignore
|
|
|
|
|
local ConfirmBox = require("ui/widget/confirmbox")
|
|
|
|
|
UIManager:show(ConfirmBox:new{
|
|
|
|
|
text = T(_("Set screensaver image to:\n%1"), require("ffi/util").basename(file)),
|
|
|
|
|
ok_callback = function()
|
|
|
|
|
G_reader_settings:saveSetting("screensaver_image", file)
|
|
|
|
|
UIManager:close(image_chooser)
|
|
|
|
|
end
|
|
|
|
|
})
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
UIManager:show(image_chooser)
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
table.insert(buttons, {
|
|
|
|
|
{
|
|
|
|
|
text = _("Close"),
|
|
|
|
|
callback = function()
|
|
|
|
|
UIManager:close(self.choose_dialog)
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
local screensaver_image = G_reader_settings:readSetting("screensaver_image")
|
|
|
|
|
if screensaver_image == nil then
|
|
|
|
|
screensaver_image = DataStorage:getDataDir() .. "/resources/koreader.png"
|
|
|
|
|
end
|
|
|
|
|
self.choose_dialog = ButtonDialogTitle:new{
|
|
|
|
|
title = T(_("Current screensaver image:\n %1"), screensaver_image),
|
|
|
|
|
buttons = buttons
|
|
|
|
|
}
|
|
|
|
|
UIManager:show(self.choose_dialog)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function Screensaver:stretchImages()
|
|
|
|
|
return G_reader_settings:isTrue("screensaver_stretch_images")
|
|
|
|
|
end
|
|
|
|
@ -229,8 +294,10 @@ function Screensaver:show(event, fallback_message)
|
|
|
|
|
end
|
|
|
|
|
if screensaver_type == "random_image" then
|
|
|
|
|
local screensaver_dir = G_reader_settings:readSetting(prefix.."screensaver_dir")
|
|
|
|
|
if screensaver_dir == nil and prefix ~= "" then
|
|
|
|
|
screensaver_dir = G_reader_settings:readSetting("screensaver_dir")
|
|
|
|
|
end
|
|
|
|
|
if screensaver_dir == nil then
|
|
|
|
|
local DataStorage = require("datastorage")
|
|
|
|
|
screensaver_dir = DataStorage:getDataDir() .. "/screenshots/"
|
|
|
|
|
end
|
|
|
|
|
local image_file = getRandomImage(screensaver_dir)
|
|
|
|
@ -250,6 +317,30 @@ function Screensaver:show(event, fallback_message)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if screensaver_type == "image_file" then
|
|
|
|
|
local screensaver_image = G_reader_settings:readSetting(prefix.."screensaver_image")
|
|
|
|
|
if screensaver_image == nil and prefix ~= "" then
|
|
|
|
|
screensaver_image = G_reader_settings:readSetting("screensaver_image")
|
|
|
|
|
end
|
|
|
|
|
if screensaver_image == nil then
|
|
|
|
|
screensaver_image = DataStorage:getDataDir() .. "/resources/koreader.png"
|
|
|
|
|
end
|
|
|
|
|
if lfs.attributes(screensaver_image, "mode") ~= "file" then
|
|
|
|
|
screensaver_type = "message"
|
|
|
|
|
else
|
|
|
|
|
widget = ImageWidget:new{
|
|
|
|
|
file = screensaver_image,
|
|
|
|
|
file_do_cache = false,
|
|
|
|
|
alpha = true,
|
|
|
|
|
height = Screen:getHeight(),
|
|
|
|
|
width = Screen:getWidth(),
|
|
|
|
|
scale_factor = not self:stretchImages() and 0 or nil,
|
|
|
|
|
}
|
|
|
|
|
if not self:whiteBackground() then
|
|
|
|
|
background = Blitbuffer.COLOR_BLACK
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if screensaver_type == "readingprogress" then
|
|
|
|
|
if Screensaver.getReaderProgress ~= nil then
|
|
|
|
|
widget = Screensaver.getReaderProgress()
|
|
|
|
@ -263,6 +354,9 @@ function Screensaver:show(event, fallback_message)
|
|
|
|
|
background = nil -- no background filling, let book text visible
|
|
|
|
|
covers_fullscreen = false
|
|
|
|
|
end
|
|
|
|
|
if screensaver_message == nil and prefix ~= "" then
|
|
|
|
|
screensaver_message = G_reader_settings:readSetting("screensaver_message")
|
|
|
|
|
end
|
|
|
|
|
if screensaver_message == nil then
|
|
|
|
|
screensaver_message = fallback_message or default_screensaver_message
|
|
|
|
|
end
|
|
|
|
|