screensaver_menu: radio buttons (#10931)

reviewable/pr10938/r1
hius07 9 months ago committed by GitHub
parent 9f39614e8a
commit cafe565ade
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,87 +1,41 @@
local Screensaver = require("ui/screensaver") local Screensaver = require("ui/screensaver")
local lfs = require("libs/libkoreader-lfs")
local _ = require("gettext") local _ = require("gettext")
local T = require("ffi/util").template local T = require("ffi/util").template
local function hasLastFile() local function hasLastFile()
if G_reader_settings:hasNot("lastfile") then
return false
end
local lfs = require("libs/libkoreader-lfs")
local last_file = G_reader_settings:readSetting("lastfile") local last_file = G_reader_settings:readSetting("lastfile")
return last_file and lfs.attributes(last_file, "mode") == "file" return last_file and lfs.attributes(last_file, "mode") == "file"
end end
return { local function isReaderProgressEnabled()
{
text = _("Use last book's cover as screensaver"),
enabled_func = hasLastFile,
checked_func = function()
return G_reader_settings:readSetting("screensaver_type") == "cover"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_type", "cover")
end
},
{
text = _("Use book status as screensaver"),
enabled_func = hasLastFile,
checked_func = function()
return G_reader_settings:readSetting("screensaver_type") == "bookstatus"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_type", "bookstatus")
end
},
{
text = _("Use random image from folder as screensaver"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_type") == "random_image"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_type", "random_image")
end
},
{
text = _("Use document cover as screensaver"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_type") == "document_cover"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_type", "document_cover")
end
},
{
text = _("Use image as screensaver"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_type") == "image_file"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_type", "image_file")
end
},
{
text = _("Use reading progress as screensaver"),
enabled_func = function()
return Screensaver.getReaderProgress ~= nil and hasLastFile() return Screensaver.getReaderProgress ~= nil and hasLastFile()
end, end
checked_func = function()
return G_reader_settings:readSetting("screensaver_type") == "readingprogress" local function genMenuItem(text, setting, value, enabled_func, separator)
end, return {
callback = function() text = text,
G_reader_settings:saveSetting("screensaver_type", "readingprogress") enabled_func = enabled_func,
end
},
{
text = _("Leave screen as it is"),
checked_func = function() checked_func = function()
return G_reader_settings:readSetting("screensaver_type") == "disable" return G_reader_settings:readSetting(setting) == value
end, end,
callback = function() callback = function()
G_reader_settings:saveSetting("screensaver_type", "disable") G_reader_settings:saveSetting(setting, value)
end, end,
separator = true, radio = true,
}, separator = separator,
}
end
return {
genMenuItem(_("Use last book's cover as screensaver"), "screensaver_type", "cover", hasLastFile),
genMenuItem(_("Use book status as screensaver"), "screensaver_type", "bookstatus", hasLastFile),
genMenuItem(_("Use random image from folder as screensaver"), "screensaver_type", "random_image"),
genMenuItem(_("Use document cover as screensaver"), "screensaver_type", "document_cover"),
genMenuItem(_("Use image as screensaver"), "screensaver_type", "image_file"),
genMenuItem(_("Use reading progress as screensaver"), "screensaver_type", "readingprogress", isReaderProgressEnabled),
genMenuItem(_("Leave screen as-is"), "screensaver_type", "disable", nil, true),
-- separator
{ {
text = _("Add message to screensaver"), text = _("Add message to screensaver"),
checked_func = function() checked_func = function()
@ -92,6 +46,7 @@ return {
end, end,
separator = true, separator = true,
}, },
-- separator
{ {
text = _("Settings"), text = _("Settings"),
sub_item_table = { sub_item_table = {
@ -126,43 +81,17 @@ return {
{ {
text = _("Covers and images settings"), text = _("Covers and images settings"),
sub_item_table = { sub_item_table = {
{ genMenuItem(_("Black background"), "screensaver_img_background", "black"),
text = _("Black background"), genMenuItem(_("White background"), "screensaver_img_background", "white"),
checked_func = function() genMenuItem(_("Leave background as-is"), "screensaver_img_background", "none", nil, true),
return G_reader_settings:readSetting("screensaver_img_background") == "black" -- separator
end,
callback = function()
G_reader_settings:saveSetting("screensaver_img_background", "black")
end,
},
{
text = _("White background"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_img_background") == "white"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_img_background", "white")
end,
},
{
text = _("Leave background as-is"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_img_background") == "none"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_img_background", "none")
end,
},
{ {
text_func = function() text_func = function()
if G_reader_settings:nilOrFalse("screensaver_stretch_images") then local percentage = G_reader_settings:readSetting("screensaver_stretch_limit_percentage")
return _("Stretch to fit screen") if G_reader_settings:isTrue("screensaver_stretch_images") and percentage then
elseif G_reader_settings:readSetting("screensaver_stretch_limit_percentage") then return T(_("Stretch to fit screen (with limit: %1 %)"), percentage)
return T(_("Stretch to fit screen (with limit: %1 %)"),
G_reader_settings:readSetting("screensaver_stretch_limit_percentage"))
else
return _("Stretch to fit screen")
end end
return _("Stretch to fit screen")
end, end,
checked_func = function() checked_func = function()
return G_reader_settings:isTrue("screensaver_stretch_images") return G_reader_settings:isTrue("screensaver_stretch_images")
@ -170,40 +99,20 @@ return {
callback = function(touchmenu_instance) callback = function(touchmenu_instance)
Screensaver:setStretchLimit(touchmenu_instance) Screensaver:setStretchLimit(touchmenu_instance)
end, end,
separator = true,
}, },
}, },
}, },
{ {
text = _("Message settings"), text = _("Message settings"),
sub_item_table = { sub_item_table = {
{ genMenuItem(_("Black background behind message"), "screensaver_msg_background", "black"),
text = _("Black background behind message"), genMenuItem(_("White background behind message"), "screensaver_msg_background", "white"),
checked_func = function() genMenuItem(_("Leave background as-is behind message"), "screensaver_msg_background", "none", nil, true),
return G_reader_settings:readSetting("screensaver_msg_background") == "black" -- separator
end, genMenuItem(_("Message position: top"), "screensaver_message_position", "top"),
callback = function() genMenuItem(_("Message position: middle"), "screensaver_message_position", "middle"),
G_reader_settings:saveSetting("screensaver_msg_background", "black") genMenuItem(_("Message position: bottom"), "screensaver_message_position", "bottom", nil, true),
end, -- separator
},
{
text = _("White background behind message"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_msg_background") == "white"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_msg_background", "white")
end,
},
{
text = _("Leave background as-is behind message"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_msg_background") == "none"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_msg_background", "none")
end,
},
{ {
text = _("Hide reboot/poweroff message"), text = _("Hide reboot/poweroff message"),
checked_func = function() checked_func = function()
@ -213,97 +122,17 @@ return {
G_reader_settings:toggle("screensaver_hide_fallback_msg") G_reader_settings:toggle("screensaver_hide_fallback_msg")
end, end,
}, },
{
text = _("Message position"),
sub_item_table = {
{
text = _("Top"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_message_position") == "top"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_message_position", "top")
end
},
{
text = _("Middle"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_message_position") == "middle"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_message_position", "middle")
end
},
{
text = _("Bottom"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_message_position") == "bottom"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_message_position", "bottom")
end
},
},
},
}, },
}, },
{ {
text = _("Keep the screensaver on screen after wakeup"), text = _("Keep the screensaver on screen after wakeup"),
sub_item_table = { sub_item_table = {
{ genMenuItem(_("Disable"), "screensaver_delay", "disable"),
text = _("Disable"), genMenuItem(_("For 1 second"), "screensaver_delay", "1"),
checked_func = function() genMenuItem(_("For 3 second"), "screensaver_delay", "3"),
return G_reader_settings:readSetting("screensaver_delay") == "disable" genMenuItem(_("For 5 second"), "screensaver_delay", "5"),
end, genMenuItem(_("Until a tap"), "screensaver_delay", "tap"),
callback = function() genMenuItem(_("Until 'Exit screensaver' gesture"), "screensaver_delay", "gesture"),
G_reader_settings:saveSetting("screensaver_delay", "disable")
end
},
{
text = _("For 1 second"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_delay") == "1"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_delay", "1")
end
},
{
text = _("For 3 seconds"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_delay") == "3"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_delay", "3")
end
},
{
text = _("For 5 seconds"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_delay") == "5"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_delay", "5")
end
},
{
text = _("Until a tap"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_delay") == "tap"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_delay", "tap")
end
},
{
text = _("Until 'Exit screensaver' gesture"),
checked_func = function()
return G_reader_settings:readSetting("screensaver_delay") == "gesture"
end,
callback = function()
G_reader_settings:saveSetting("screensaver_delay", "gesture")
end
},
}, },
}, },
}, },

Loading…
Cancel
Save