Merge pull request #2202 from koreader/houqp-master

bring back toggle to enable screensaver folder
pull/2203/merge
Frans de Jonge 8 years ago committed by GitHub
commit c0cc3b677c

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

Loading…
Cancel
Save