mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Merge pull request #2202 from koreader/houqp-master
bring back toggle to enable screensaver folder
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -36,7 +36,7 @@ koreader-android-arm-linux-androideabi
|
||||
koreader-kindle-legacy-arm-kindle-linux-gnueabi
|
||||
koreader-kindle-arm-linux-gnueabi
|
||||
koreader-kobo-arm-linux-gnueabihf*
|
||||
koreader-kobo-arm-kobo-linux-gnueabi
|
||||
koreader-kobo-arm-kobo-linux-gnueabi*
|
||||
koreader-emulator-i686-w64-mingw32
|
||||
koreader-emulator-x86_64-linux-gnu
|
||||
koreader-emulator-x86_64-pc-linux-gnu
|
||||
|
||||
@@ -87,8 +87,6 @@ read_globals = {
|
||||
"SEARCH_SERIES",
|
||||
"SEARCH_PATH",
|
||||
"KOBO_LIGHT_ON_START",
|
||||
"KOBO_SCREEN_SAVER",
|
||||
"KOBO_SCREEN_SAVER_LAST_BOOK",
|
||||
"NETWORK_PROXY",
|
||||
"DUSE_TURBO_LIB",
|
||||
"cre",
|
||||
|
||||
@@ -6,6 +6,7 @@ local GestureRange = require("ui/gesturerange")
|
||||
local InputDialog = require("ui/widget/inputdialog")
|
||||
local Geom = require("ui/geometry")
|
||||
local Device = require("device")
|
||||
local Screensaver = require("ui/screensaver")
|
||||
local Screen = Device.screen
|
||||
local DEBUG = require("dbg")
|
||||
local _ = require("gettext")
|
||||
@@ -105,6 +106,61 @@ function FileManagerMenu:setUpdateItemTable()
|
||||
G_reader_settings:saveSetting("open_last", not open_last)
|
||||
end
|
||||
})
|
||||
if Device.isKobo() then
|
||||
table.insert(self.tab_item_table.setting, {
|
||||
text = _("Screensaver"),
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Use last book's cover as screensaver"),
|
||||
checked_func = Screensaver.isUsingBookCover,
|
||||
callback = function()
|
||||
if Screensaver:isUsingBookCover() then
|
||||
G_reader_settings:saveSetting(
|
||||
"use_lastfile_as_screensaver", false)
|
||||
else
|
||||
G_reader_settings:delSetting(
|
||||
"use_lastfile_as_screensaver")
|
||||
end
|
||||
end
|
||||
},
|
||||
{
|
||||
text = _("Screensaver folder"),
|
||||
callback = function()
|
||||
local ss_folder_path_input
|
||||
local function save_folder_path()
|
||||
G_reader_settings:saveSetting(
|
||||
"screensaver_folder", ss_folder_path_input:getInputText())
|
||||
UIManager:close(ss_folder_path_input)
|
||||
end
|
||||
local curr_path = G_reader_settings:readSetting("screensaver_folder")
|
||||
ss_folder_path_input = InputDialog:new{
|
||||
title = _("Screensaver folder"),
|
||||
input = curr_path,
|
||||
input_hint = "/mnt/onboard/screensaver",
|
||||
input_type = "text",
|
||||
buttons = {
|
||||
{
|
||||
{
|
||||
text = _("Cancel"),
|
||||
callback = function()
|
||||
UIManager:close(ss_folder_path_input)
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Save"),
|
||||
is_enter_default = true,
|
||||
callback = save_folder_path,
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
ss_folder_path_input:onShowKeyboard()
|
||||
UIManager:show(ss_folder_path_input)
|
||||
end,
|
||||
},
|
||||
}
|
||||
})
|
||||
end
|
||||
-- insert common settings
|
||||
for i, common_setting in ipairs(require("ui/elements/common_settings_menu_table")) do
|
||||
table.insert(self.tab_item_table.setting, common_setting)
|
||||
@@ -117,43 +173,6 @@ function FileManagerMenu:setUpdateItemTable()
|
||||
end
|
||||
|
||||
-- tools tab
|
||||
if Device.isKobo() then
|
||||
table.insert(self.tab_item_table.tools, {
|
||||
text = _("Screensaver folder"),
|
||||
callback = function()
|
||||
local ss_folder_path_input
|
||||
local function save_folder_path()
|
||||
G_reader_settings:saveSetting(
|
||||
"screensaver_folder", ss_folder_path_input:getInputText())
|
||||
UIManager:close(ss_folder_path_input)
|
||||
end
|
||||
local curr_path = G_reader_settings:readSetting("screensaver_folder")
|
||||
ss_folder_path_input = InputDialog:new{
|
||||
title = _("Screensaver folder"),
|
||||
input = curr_path,
|
||||
input_hint = "/mnt/onboard/screensaver",
|
||||
input_type = "text",
|
||||
buttons = {
|
||||
{
|
||||
{
|
||||
text = _("Cancel"),
|
||||
callback = function()
|
||||
UIManager:close(ss_folder_path_input)
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Save"),
|
||||
is_enter_default = true,
|
||||
callback = save_folder_path,
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
ss_folder_path_input:onShowKeyboard()
|
||||
UIManager:show(ss_folder_path_input)
|
||||
end,
|
||||
})
|
||||
end
|
||||
table.insert(self.tab_item_table.tools, {
|
||||
text = _("Advanced settings"),
|
||||
callback = function()
|
||||
|
||||
@@ -4,6 +4,7 @@ local GestureRange = require("ui/gesturerange")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local Device = require("device")
|
||||
local Geom = require("ui/geometry")
|
||||
local Screensaver = require("ui/screensaver")
|
||||
local Event = require("ui/event")
|
||||
local Screen = require("device").screen
|
||||
local DEBUG = require("dbg")
|
||||
@@ -114,29 +115,38 @@ function ReaderMenu:setUpdateItemTable()
|
||||
table.insert(self.tab_item_table.info, common_setting)
|
||||
end
|
||||
|
||||
if Device:isKobo() and KOBO_SCREEN_SAVER_LAST_BOOK then
|
||||
if Device:isKobo() and Screensaver:isUsingBookCover() then
|
||||
local excluded = function()
|
||||
return self.ui.doc_settings:readSetting("exclude_screensaver") or false
|
||||
end
|
||||
local proportional = function()
|
||||
return self.ui.doc_settings:readSetting("proportional_screensaver") or false
|
||||
end
|
||||
table.insert(self.tab_item_table.typeset, {
|
||||
table.insert(self.tab_item_table.setting, {
|
||||
text = _("Screensaver"),
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Use this book's cover as screensaver"),
|
||||
checked_func = function() return not excluded() end,
|
||||
text = _("Exclude this book's cover from screensaver"),
|
||||
checked_func = excluded,
|
||||
callback = function()
|
||||
self.ui.doc_settings:saveSetting("exclude_screensaver", not excluded())
|
||||
if excluded() then
|
||||
self.ui.doc_settings:delSetting("exclude_screensaver")
|
||||
else
|
||||
self.ui.doc_settings:saveSetting("exclude_screensaver", true)
|
||||
end
|
||||
self.ui:saveSettings()
|
||||
end
|
||||
},
|
||||
{
|
||||
text = _("Display proportional cover image in screensaver"),
|
||||
checked_func = function() return proportional() end,
|
||||
text = _("Auto stretch this book's cover image in screensaver"),
|
||||
checked_func = proportional,
|
||||
callback = function()
|
||||
self.ui.doc_settings:saveSetting("proportional_screensaver", not proportional())
|
||||
if proportional() then
|
||||
self.ui.doc_settings:delSetting("proportional_screensaver")
|
||||
else
|
||||
self.ui.doc_settings:saveSetting(
|
||||
"proportional_screensaver", not proportional())
|
||||
end
|
||||
self.ui:saveSettings()
|
||||
end
|
||||
}
|
||||
|
||||
@@ -60,38 +60,42 @@ local function getRandomImage(dir)
|
||||
return createWidgetFromFile(dir .. pics[math.random(i)])
|
||||
end
|
||||
|
||||
function Screensaver:isUsingBookCover()
|
||||
-- this setting is on by default
|
||||
return G_reader_settings:readSetting('use_lastfile_as_screensaver') ~= false
|
||||
end
|
||||
|
||||
function Screensaver:getCoverImage(file)
|
||||
local ImageWidget = require("ui/widget/imagewidget")
|
||||
local doc = DocumentRegistry:openDocument(file)
|
||||
if doc then
|
||||
local image = doc:getCoverPageImage()
|
||||
doc:close()
|
||||
local lastfile = G_reader_settings:readSetting("lastfile")
|
||||
local data = DocSettings:open(lastfile)
|
||||
local proportional_cover = data:readSetting("proportional_screensaver")
|
||||
if image then
|
||||
return createWidgetFromImage(
|
||||
ImageWidget:new{
|
||||
image = image,
|
||||
height = Screen:getHeight(),
|
||||
width = Screen:getWidth(),
|
||||
autostretch = proportional_cover,
|
||||
})
|
||||
end
|
||||
if not doc then return end
|
||||
|
||||
local image = doc:getCoverPageImage()
|
||||
doc:close()
|
||||
local lastfile = G_reader_settings:readSetting("lastfile")
|
||||
local doc_settings = DocSettings:open(lastfile)
|
||||
if image then
|
||||
local img_widget = ImageWidget:new{
|
||||
image = image,
|
||||
height = Screen:getHeight(),
|
||||
width = Screen:getWidth(),
|
||||
autostretch = doc_settings:readSetting("proportional_screensaver"),
|
||||
}
|
||||
return createWidgetFromImage(img_widget)
|
||||
end
|
||||
end
|
||||
|
||||
function Screensaver:show()
|
||||
DEBUG("show screensaver")
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
-- first check book cover image
|
||||
-- first check book cover image, on by default
|
||||
local screen_saver_last_book =
|
||||
G_reader_settings:readSetting("use_lastfile_as_screensaver")
|
||||
if screen_saver_last_book == nil or screen_saver_last_book then
|
||||
local lastfile = G_reader_settings:readSetting("lastfile")
|
||||
if lastfile then
|
||||
local data = DocSettings:open(lastfile)
|
||||
local exclude = data:readSetting("exclude_screensaver")
|
||||
local doc_settings = DocSettings:open(lastfile)
|
||||
local exclude = doc_settings:readSetting("exclude_screensaver")
|
||||
if not exclude then
|
||||
self.suspend_msg = self:getCoverImage(lastfile)
|
||||
end
|
||||
@@ -99,6 +103,7 @@ function Screensaver:show()
|
||||
end
|
||||
-- then screensaver directory or file image
|
||||
if not self.suspend_msg then
|
||||
-- FIXME: rename this config to screen_saver_path
|
||||
local screen_saver_folder =
|
||||
G_reader_settings:readSetting("screensaver_folder")
|
||||
if screen_saver_folder == nil
|
||||
|
||||
@@ -575,6 +575,7 @@ function TouchMenu:onMenuSelect(item)
|
||||
else
|
||||
table.insert(self.item_table_stack, self.item_table)
|
||||
self.item_table = sub_item_table
|
||||
self.page = 1
|
||||
self:updateItems()
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user